Parsing Compass files with Python

Uma classe em Python que escrevi que executa o compass e le os valores do alinhamento de duas sequencias.
Tabém bem útil para quem quer começar a estudar a linguagem python.

reader = compass_reader("d2hsapie_.aln", "d2scere_.aln")

ou para salvar o alinhamento gerado no arquivo com o nome de "d2hsapie__2_d2scere_":

reader = compass_reader("sequencia_1, "sequencia_2", save=True)

para acessar os resultados do alinhamento:

# Acessar o valor do Smith-Waterman:
reader.get_SW()

# Acessar o valor do EValue:
reader.get_EValue()

Abaixo segue o script, ou caso prefira, faça o download dele.
Para a execução, é necessário que o compass esteja no PATH do sistema.

""Felipe Albrecht 15/Jun/2006
Utilizado para ler o EValue e SW dos arquivos do compass"""

import subprocess
import os

class compass_reader:
    def __init__(self, seq1, seq2, save = False, path=None):

        self.sequence_1 = seq1.split(".")[0]
        self.sequence_2 = seq2.split(".")[0]

        self.file_name = self.sequence_1 + "_2_" + self.sequence_2

        self.sw = -1
        self.evalue = -1

        stds = subprocess.Popen("compass -i " + seq1 + " -j " + seq2,
            shell = True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE).communicate()

        if (stds[0] == ""):
            print "Erro na execucao:\n" + stds[1]
            return


        if (save == True):
            saveFile = open(self.sequence_1 + "_2_" + self.sequence_2, "w")
            saveFile.write(stds[0])


        self.__parser(stds[0])


    def __parser(self, f):
        values_line = f.split("\n")[4].split()

        self.sw     = values_line[3]
        self.evalue = values_line[6]


    def get_SW(self):
        if (self.sw == -1):
            self.__parser()
        return self.sw


    def get_EValue(self):
        if (self.evalue == -1):
            self__parser()
        return self.evalue

Leituras recomendadas:
Modulo subprocess do pythpn