55from itertools import combinations
66from glob import glob
77
8+ from openrdp import __path__ as basepath
89from openrdp .bootscan import Bootscan
910from openrdp .chimaera import Chimaera
1011from openrdp .common import generate_triplets , Triplet
@@ -63,32 +64,41 @@ def __str__(self):
6364 f"{ e [1 ][0 ]:<7} \t { e [1 ][1 ]:<7} \t { float (e [4 ]):.2E} \n "
6465 return outstr
6566
67+ def __getitem__ (self , key ):
68+ events = self .dict .get (key , None )
69+ if key == 'geneconv' :
70+ return [{'start' : e [2 ][0 ], 'end' : e [2 ][1 ], 'recombinant' : e [0 ],
71+ 'parent1' : e [1 ][0 ], 'parent2' : e [1 ][1 ], 'pvalue' : float (e [3 ])}
72+ for e in events ]
73+ else :
74+ return [{'start' : e [2 ], 'end' : e [3 ], 'recombinant' : e [0 ],
75+ 'parent1' : e [1 ][0 ], 'parent2' : e [1 ][1 ], 'pvalue' : float (e [4 ])}
76+ for e in events ]
77+
78+ def keys (self ):
79+ return self .dict .keys ()
80+
6681
6782class Scanner :
68- def __init__ (self , names , infile , outfile , cfg = None , methods = None ,
83+ def __init__ (self , names , infile , cfg = None , methods = None ,
6984 quiet = False ):
7085 """
7186 :param names: list, sequence labels
7287 :param infile: str, path to input FASTA
73- :param outfile: str, path to write output CSV
7488 :param cfg: str, path to configuration file. Defaults to None, causing
7589 each method to use default settings.
7690 :param methods: tuple, names of methods to run
7791 :param quiet: bool, if True, suppress console messages
7892 """
7993 self .seq_names = names
8094 self .infile = infile
81-
82- self .config = None
83- self .cfg_file = cfg
84- if self .cfg_file :
85- print (f"Loading configuration from { cfg } " )
86- self .config = configparser .ConfigParser ()
87- self .config .read (self .cfg_file )
88-
8995 self .methods = methods
9096 self .quiet = quiet
91- self .outfile = outfile
97+
98+ self .config = configparser .ConfigParser ()
99+ self .cfg_file = cfg
100+ self .print (f"Loading configuration from { self .cfg_file } " )
101+ self .config .read (self .cfg_file )
92102
93103 def print (self , msg ):
94104 """ Implements self.quiet """
@@ -277,11 +287,10 @@ def read_fasta(handle):
277287 return headers , seqs
278288
279289
280- def openrdp (infile , outfile , cfg = None , methods = None , quiet = False ):
290+ def openrdp (infile , cfg = None , methods = None , quiet = True ):
281291 """
282292 Main function
283293 :param infile: str, path to input FASTA file
284- :param outfile: str, path to write output CSV
285294 :param methods: list, names of methods to run
286295 :param quiet: bool, if True, suppress console messages
287296 :return: dict, results from each method
@@ -306,6 +315,10 @@ def openrdp(infile, outfile, cfg=None, methods=None, quiet=False):
306315 if not valid_alignment (aln ) and not valid_chars (aln ):
307316 sys .exit (1 )
308317
309- scanner = Scanner (names , infile , outfile , cfg = cfg , methods = methods , quiet = quiet )
318+ if cfg is None :
319+ # load default configuration from package file
320+ cfg = os .path .join (basepath [0 ], 'default.ini' )
321+
322+ scanner = Scanner (names , infile , cfg = cfg , methods = methods , quiet = quiet )
310323 results = scanner .run_scans (aln )
311324 return results
0 commit comments