Need help with a program

Krister Svanlund krister.svanlund at gmail.com
Thu Jan 28 10:28:11 EST 2010


On Thu, Jan 28, 2010 at 4:07 PM, evilweasel
<karthikramaswamy88 at gmail.com> wrote:
> Hi folks,
>
> I am a newbie to python, and I would be grateful if someone could
> point out the mistake in my program. Basically, I have a huge text
> file similar to the format below:
>
> AAAAAGACTCGAGTGCGCGGA   0
> AAAAAGATAAGCTAATTAAGCTACTGG     0
> AAAAAGATAAGCTAATTAAGCTACTGGGTT   1
> AAAAAGGGGGCTCACAGGGGAGGGGTAT     1
> AAAAAGGTCGCCTGACGGCTGC  0
>
> The text is nothing but DNA sequences, and there is a number next to
> it. What I will have to do is, ignore those lines that have 0 in it,
> and print all other lines (excluding the number) in a new text file
> (in a particular format called as FASTA format). This is the program I
> wrote for that:
>
> seq1 = []
> list1 = []
> lister = []
> listers = []
> listers1 = []
> a = []
> d = []
> i = 0
> j = 0
> num = 0
>
> file1 = open(sys.argv[1], 'r')
> for line in file1:
>    if not line.startswith('\n'):
>        seq1 = line.split()
>        if len(seq1) == 0:
>            continue
>
>        a = seq1[0]
>        list1.append(a)
>
>        d = seq1[1]
>        lister.append(d)
>
>
> b = len(lister)
> for j in range(0, b):
>    if lister[j] == 0:
>        listers.append(j)
>    else:
>        listers1.append(j)
>
>
> print listers1
> resultsfile = open("sequences1.txt", 'w')
> for i in listers1:
>    resultsfile.write('\n>seq' + str(i) + '\n' + list1[i] + '\n')
>
> But this isn't working. I am not able to find the bug in this. I would
> be thankful if someone could point it out. Thanks in advance!
>
> Cheers!

I'm not totaly sure what you want to do but try this (python2.6+):

newlines = []

with open(sys.argv[1], 'r') as f:
    text = f.read();
    for line in text.splitlines():
        if not line.strip() and line.strip().endswith('1'):
            newlines.append('seq'+line)

with open(sys.argv[2], 'w') as f:
    f.write('\n'.join(newlines))



More information about the Python-list mailing list