वांछित आउटपुट कैसे प्राप्त करें?

Nov 24 2020

मैं निम्नलिखित आदेश का उपयोग कर एक परियोजना पर काम कर रहा हूँ 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

और निम्नलिखित आउटआउट के साथ प्रदान करना:

>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

मैं अपनी कमांड कैसे बदल सकता हूं ताकि यह मुझे वांछित प्रारूप और केवल 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

जवाब

2 M__ Nov 24 2020 at 05:18

इसकी आसान जगह matchहै subलेकिन कृपया listएक चर के रूप में उपयोग करना बंद कर दें ... mylist ठीक है

यह काम कर सकता है

   mylist = re.sub(r'H149xcV_\w+_\w+_\w+', gene_id)

अन्यथा

myregex = re.compile('_\w+\s+.*') 
fastaid = myregex.sub('', myfile)

या @MaximilianPress से

myregex2 = re.compile('_\w+\n') # or myregex2 = re.compile('_\w+$')
fastaid2 = myregex.sub('\n', myfile) # or fasaid2 = myregex.sub('', myfile)

ऊपर काम होगा ... मेरे सभी कोड के साथ मैं इसे कभी सबूत नहीं देता हूं।

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)) 

मुझे पता है कि अगर यह काम करता है तो मैं भी सीख रहा हूं