如何解决如何在unix / linux命令中搜索关键字并计算大小片段? 限制酶消化
例如,我有一个.fa
这样的fasta文件,执行hindiII
的限制性酶切
ataaaatactggcaaacagaatccagcagcacatcaaaaagcttatccac
AGTAATTCATTATATCAAAATGCTCCAggccaggcgtggtggcttatgcc
tgtaatcccagcactttgggaggtcgaagtgggcggatcacttgaggtca
aatgtagtaagattatctcagattttaaccgctgtattaaaaaagcttaa
tataatccatgaaaattggaggccaaactaagcttagatacaaacatcta
ggagttggagactagcctggccaacatgatgaaaccccgtctctaataat
aggaaaaggagaggaatgaggttggaaaatagtacacaggaagcttcaac
我正在找到包含大写字母和小写字母的序列aagctt
,然后将字符串分隔为a
和agctt
将每个碎片作为独立的单元进行处理,并计算其长度
fragment 1 from 1 to 39: length 39
ataaaatactggcaaacagaatccagcagcacatcaaaa
fragment 2 from 40 to 193: length 154
agcttatccac
AGTAATTCATTATATCAAAATGCTCCAggccaggcgtggtggcttatgcc
tgtaatcccagcactttgggaggtcgaagtgggcggatcacttgaggtca
aatgtagtaagattatctcagattttaaccgctgtattaaaaa
fragment 3 from 194 to 230: length 37
agcttaa
tataatccatgaaaattggaggccaaacta
fragment 4 from 231 to 341: length 111
agcttagatacaaacatcta
ggagttggagactagcctggccaacatgatgaaaccccgtctctaataat
aggaaaaggagaggaatgaggttggaaaatagtacacagga
fragment 5 from 342 to 350: length 9
agcttcaac
我不一定需要unix / linux命令,只需要此问题的伪代码
我曾尝试使用sed -i 's/AAGCTT/A\'$'\nAGCTT/g'
与a
分隔agctt
和wc -l
来计算长度,但是我无法获得整个片段的长度。
解决方法
这里是可以使用的伪代码,假定整个文件都可以放入内存。它有2个步骤:
- 将所有行合并为一个大字符串
- 反复搜索模式,并返回偏移的片段
- 假设索引从pos(Perl样式)开始,在“ s”中搜索“ pattern”。
# Read complete input into memory
S = ""
while read P ; do
S = S + P
# Search for occurences
PREV=0
N=0
while true
NEXT=index(S,'aagcct',PREV+1)
if ( NEXT < 0 ) break # no more occurences
N=N+1
print "Fragement ",N," from ",PREV," to ",NEXT,": length",NEXT-PREV+1
print substr(S,NEXT-PREV)
PREV=NEXT
原始问题表明,为了计算打印的偏移量,需要对图案进行分割。这部分还不清楚,在此解决方案中未作说明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。