Need help with a program

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


On Thu, Jan 28, 2010 at 4:28 PM, Krister Svanlund
<krister.svanlund at gmail.com> wrote:
> 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.strip()[:-1].strip())
>
> with open(sys.argv[2], 'w') as f:
>    f.write('\n'.join(newlines))
>

Gah, made some errors



More information about the Python-list mailing list