Source code for trifusion.ortho.orthomclDumpPairsFiles

#!/usr/bin/python2
# -*- coding: utf-8 -*-

import sqlite3 as lite
import os

try:
    from process.error_handling import KillByUser
except ImportError:
    from trifusion.process.error_handling import KillByUser


[docs]def printInparalogsFile (cur, filename, nm=None): cur.execute("select taxon_id, sequence_id_a, sequence_id_b, normalized_score\ from InParalog\ order by taxon_id, sequence_id_a, sequence_id_b asc") file_fh = open(filename, "w") with file_fh: while True: if nm: if nm.stop: raise KillByUser("") row = cur.fetchone() if row is None: break file_fh.write("{}\t{}\t{}\n".format(row[1], row[2], str((float(row[3]) * 1000 + .5) / 1000)))
################################################################
[docs]def printOrthologsFile (cur, filename, nm=None): cur.execute("select taxon_id_a, taxon_id_b, sequence_id_a, sequence_id_b, normalized_score\ from Ortholog\ order by taxon_id_a, taxon_id_b, sequence_id_a, sequence_id_b asc") file_fh = open(filename, "w") with file_fh: while True: if nm: if nm.stop: raise KillByUser("") row = cur.fetchone() if row is None: break file_fh.write("{}\t{}\t{}\n".format(row[2], row[3], str((float(row[4]) * 1000 + .5) / 1000)))
################################################################
[docs]def printCoOrthologsFile (cur, filename, nm=None): cur.execute("select taxon_id_a, taxon_id_b, sequence_id_a, sequence_id_b, normalized_score\ from CoOrtholog\ order by taxon_id_a, taxon_id_b, sequence_id_a, sequence_id_b asc") file_fh = open(filename, "w") with file_fh: while True: if nm: if nm.stop: raise KillByUser("") row = cur.fetchone() if row is None: break file_fh.write("{}\t{}\t{}\n".format(row[2], row[3], str((float(row[4]) * 1000 + .5) / 1000)))
################################################################
[docs]def printMclAbcFile (cur, filename, nm=None): cur.execute("select sequence_id_a, sequence_id_b, normalized_score\ from InParalog\ union\ select sequence_id_a, sequence_id_b, normalized_score\ from Ortholog\ union\ select sequence_id_a, sequence_id_b, normalized_score\ from CoOrtholog") file_fh = open(filename, "w") with file_fh: while True: if nm: if nm.stop: raise KillByUser("") row = cur.fetchone() if row is None: break file_fh.write("{}\t{}\t{}\n".format(row[0], row[1], str((float(row[2]) * 1000 + .5) / 1000)))
[docs]def execute(db_dir, dest, nm=None): con = lite.connect(os.path.join(db_dir, "orthoDB.db")) # Set up progression information if nm: if nm.stop: raise KillByUser("") nm.total = 4 nm.counter = 0 with con: cur = con.cursor() if nm: if nm.stop: raise KillByUser("") nm.counter = 1 printOrthologsFile(cur, os.path.join(dest, "backstage_files", "orthologs.txt"), nm=nm) if nm: if nm.stop: raise KillByUser("") nm.counter = 2 printInparalogsFile(cur, os.path.join(dest, "backstage_files", "inparalogs.txt"), nm=nm) if nm: if nm.stop: raise KillByUser("") nm.counter = 3 printCoOrthologsFile(cur, os.path.join(dest, "backstage_files", "coorthologs.txt"), nm=nm) if nm: if nm.stop: raise KillByUser("") nm.counter = 4 printMclAbcFile(cur, os.path.join(dest, "backstage_files", "mclInput"), nm=nm)
if __name__ == "__main__": execute(".", ".") __author__ = "Fernando Alves and Diogo N. Silva"