Como obter a saída desejada?
Nov 24 2020
Estou trabalhando em um projeto usando o seguinte comando em nano
:
from Bio import SeqIO
import sys
import re
fasta_file = (sys.argv[1])
for myfile in SeqIO.parse(fasta_file, "fasta"):
if len(myfile) > 250:
gene_id = myfile.id
mylist = re.match(r"H149xcV_\w+_\w+_\w+", gene_id)
print (">"+mylist.group(0)) # edited from list to mylist
e está fornecendo o seguinte outout:
>H149xcV_Fge342_r3_h2_d1
>H149xcV_bTr423_r3_h2_d1
>H149xcV_kN893_r3_h2_d1
>H149xcV_DNp021_r3_h2_d1
>H149xcV_JEP3324_r3_h2_d1
>H149xcV_SRt424234_r3_h2_d1
Como posso alterar meu comando para que ele me forneça o formato desejado e apenas os IDs do gene UNIQUE :
>H149xcV_Fge342_r3_h2
>H149xcV_bTr423_r3_h2
>H149xcV_kN893_r3_h2
>H149xcV_DNp021_r3_h2
>H149xcV_JEP3324_r3_h2
>H149xcV_SRt424234_r3_h2
Respostas
2 M__ Nov 24 2020 at 05:18
é fácil substituir match
por, sub
mas por favor, pare de usar list
como uma variável ... minha lista está bem.
Isso pode funcionar
mylist = re.sub(r'H149xcV_\w+_\w+_\w+', gene_id)
de outra forma
myregex = re.compile('_\w+\s+.*')
fastaid = myregex.sub('', myfile)
OU de @MaximilianPress
myregex2 = re.compile('_\w+\n') # or myregex2 = re.compile('_\w+$')
fastaid2 = myregex.sub('\n', myfile) # or fasaid2 = myregex.sub('', myfile)
O acima vai funcionar ... Como acontece com todo o meu código, eu nunca o reviso ..
pippo1980 Dec 16 2020 at 16:37
from Bio import SeqIO
import sys
import re
unique = []
fasta_file = (sys.argv[1])
for myfile in SeqIO.parse(fasta_file, "fasta"):
if len(myfile) > 250:
gene_id = myfile.id
if gene.id not in unique:
unique.append(gene.id)
mylist = re.match(r"H149xcV_\w+_\w+_\w+", gene_id)
print (">"+mylist.group(0))
me diga se funciona, estou aprendendo também
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?