匹配 fasta 文件中的第一个和最后一个字符

Matching the first and last charcters in a fasta file

我有如下的 fasta 序列:

fasta_sequences
    seq1_1
    "MTFJKASDKASWQHBFDDFAHJKLDPAL"
    seq1_2
    "GTRFKJDAIUETZUQOIHHASJKKJHPAL"
    seq1_3
    "MTFJHAZOQIIREUUBSDFHGTRF"
    seq2_1
    "JUZGFNBGTFCKAJDASEJIJAS"
    seq2_1
    "MTFHJHJASBBCMASDOEQSDPAL"
    seq2_3
    "RTZIIASDPLKLKLKLLJHGATRF"
    seq3_1
    "HMTFLKBNCYXBASHDGWPQWKOP"
    seq3_2
    "MTFJKASDJLKIOOIEOPWEIOKOP"

我只想保留那些以 MTF 开头并以 KOP 或 TRF 或 PAL 结尾的序列。最后应该是这样

    seq1_1
    "MTFJKASDKASWQHBFDDFAHJKLDPAL"
    seq1_3
    "MTFJHAZOQIIREUUBSDFHGTRF"
    seq2_1
    "MTFHJHJASBBCMASDOEQSDPAL"
    seq3_2
    "MTFJKASDJLKIOOIEOPWEIOKOP"

我在 R 中尝试了以下代码,但它给了我什么都不包含

new_fasta=grep("^MTF.*(PAL|TRF|KOP)$")

任何人都可以帮助如何获得所需的输出。提前致谢。

new_fasta=grep("^MTF.*(PAL|TRF|KOP)$",fasta_sequences,perl=True)


                                      ^^^^^^^^^

添加perl=True选项。

我猜这是要走的路;

对于fasta_sequences中的每个元素; (如果 fasta_sequences 是包含序列的向量)

newseq = list()
it=1
for (i in fasta_sequences){
  # i is seq1_1, seq1_2 etc.
  a=substr(i,1,3)
  if (a=="MTF"){
  x=substr(i,(nchar(i)-2),nchar(i))

  if ( x=="PAL" | x=="KOP" | x=="TRF"){
    newseq[it]=i
    it=it+1
  }
  }
}

希望对您有所帮助