Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在unix/linux命令中搜索关键字并计算大小片段?(限制酶消化)_Bash_Unix_Bioinformatics - Fatal编程技术网

Bash 如何在unix/linux命令中搜索关键字并计算大小片段?(限制酶消化)

Bash 如何在unix/linux命令中搜索关键字并计算大小片段?(限制酶消化),bash,unix,bioinformatics,Bash,Unix,Bioinformatics,例如,我有一个.fafasta这样的文件,执行HindIII ataaaatactggcaaacagaatccagcagcacatcaaaaagcttatccac AGTAATTCATTATATCAAAATGCTCCAggccaggcgtggtggcttatgcc tgtaatcccagcactttgggaggtcgaagtgggcggatcacttgaggtca aatgtagtaagattatctcagattttaaccgctgtattaaaaaagcttaa tataatccatgaaaa

例如,我有一个
.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
计算长度,但我无法得到整个片段的长度。

这里是可以工作的伪代码,假设整个文件可以放入内存。它有两个步骤:

  • 把所有的线组合成一根大绳
  • 重复搜索模式,并返回片段偏移量
  • 假设索引(s、模式、位置)在“s”中搜索“模式”,从位置位置(Perl样式)开始
#将完整输入读取到内存中
S=“”
读P;做
S=S+P
#搜索事件
PREV=0
N=0
虽然是真的
下一个=指数(S,'aagcct',上一个+1)
如果(下一个<0)中断#不再发生
N=N+1
打印“Fragement”,N,“from”,PREV,“to”,NEXT,“length”,NEXT-PREV+1
打印子文件(S、上一页、下一页-上一页)
上一个=下一个

原始问题表明,为了计算打印偏移量,需要拆分图案。这一部分有点不清楚,在这个解决方案中没有考虑到。

这里是可以工作的伪代码,假设整个文件可以放入内存。它有两个步骤:

  • 把所有的线组合成一根大绳
  • 重复搜索模式,并返回片段偏移量
  • 假设索引(s、模式、位置)在“s”中搜索“模式”,从位置位置(Perl样式)开始
#将完整输入读取到内存中
S=“”
读P;做
S=S+P
#搜索事件
PREV=0
N=0
虽然是真的
下一个=指数(S,'aagcct',上一个+1)
如果(下一个<0)中断#不再发生
N=N+1
打印“Fragement”,N,“from”,PREV,“to”,NEXT,“length”,NEXT-PREV+1
打印子文件(S、上一页、下一页-上一页)
上一个=下一个

原始问题表明,为了计算打印偏移量,需要拆分图案。这一部分有点不清楚,在这个解决方案中没有考虑。

欢迎使用堆栈溢出。请在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。你能澄清一下“部分”吗?这是一个以“agctt”开头,以“a”结尾,然后是另一个“agctt”的序列吗?“agctt”模式能否跨越界限?我希望将
aagctt
分离为
a
&
agctt
,模式应该只包含在同一行中考虑迁移到bioformatics.SE,在那里这个问题可能会得到更多答案,也不太可能关闭。另请参见:找到序列特异性酶所有可能切割位点的最佳方法是什么?:,在硅基因组消化中?:欢迎来到Stack Overflow。请在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。你能澄清一下“部分”吗?这是一个以“agctt”开头,以“a”结尾,然后是另一个“agctt”的序列吗?“agctt”模式能否跨越界限?我希望将
aagctt
分离为
a
&
agctt
,模式应该只包含在同一行中考虑迁移到bioformatics.SE,在那里这个问题可能会得到更多答案,也不太可能被关闭。另请参见:找到序列特异性酶所有可能切割位点的最佳方法是什么?:,在电子基因组消化中?:谢谢你的回答,但跨行的模式
aagctt
不应计算在内,图案应在
a
agctt
之间的位置拆分感谢您的回答,但是跨越行的图案
aagctt
不应计算在内,图案应在
a
agctt
之间的位置拆分
  # 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, PREV, NEXT-PREV) 
    PREV=NEXT