Ben Keshet wrote:
...
I ended up using another method as someone suggested to me. I am still not sure why the previous version got stuck on empty files, while this one doesn't:

receptors = ['A' 'B']
*** Alarm bells ***  Do you mean ['AB'], or do you mean ['A', 'B']?
...(more code one way) ...

Don't be afraid of defining functions, you are nested too deeply to
easily understand, and hence likely to make mistakes.  For similar
reasons, I don't like names like x and i unless there are no better
names.  Also, since you don't seem to "really" need to write, I used
print.  The comments would be better if I knew the field a bit (or
your code had had better names).


Try something like (obviously I couldn't test it, so untested code):

    OUTPUT = 'c:/Linux/Dock_method_validation/%s/validation/pockets.out'
    INPUT = ('c:/Linux/Dock_method_validation/%s/validation/'
             'ligand_ran_line_%s_%sA_secondary_scored.mol2')

    def extract_dist(dest, receptor, line, ligand):
        '''Get distances after "PRIMARY" from the appropriate file
        '''
        source = open(INPUT % (receptor, line, ligand), 'r')
        gen = iter(source) # get a name for walking through the file.
        try:
            # Find the start
            for j, text in enumerate(gen):
                if 'PRIMARY' in text:
                    print >>dest, text.strip(),
                    break
                if j == 19: # Stop looking after 20 lines.
                    return  # nothing here, go on to the next one
            # copy scores up to TRIPOS
            for text in gen:
                if 'TRIPOS' in text:
                    break
                print >>dest, text.strip(),
            print
            print >>dest
        finally:
            source.close()

    for receptor in 'A', 'B':
        # open out_file for appending per receptor, close at same level
        out_file = open(OUTPUT % receptor, 'a')
        for line in range(10):
            for ligand in (7, 9, 11, 13, 15, 17):
                extract_dist(out_file, receptor, line, ligand)
        out_file.close()


--Scott David Daniels
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to