allpy
changeset 800:285d61f096f5
pair_cores_all: allow pass alignments, not markups, fix globs processing
globs seemed not to work because input_dir was concated twice.
author | boris <bnagaev@gmail.com> |
---|---|
date | Wed, 13 Jul 2011 17:05:46 +0200 |
parents | f634a7d3943f |
children | a0a1273bbe5a |
files | pair_cores/pair_cores_all.py |
diffstat | 1 files changed, 38 insertions(+), 15 deletions(-) [+] |
line diff
1.1 --- a/pair_cores/pair_cores_all.py Wed Jul 13 20:30:45 2011 +0400 1.2 +++ b/pair_cores/pair_cores_all.py Wed Jul 13 17:05:46 2011 +0200 1.3 @@ -9,15 +9,24 @@ 1.4 1.5 MAX_GLOBS = 10 1.6 1.7 -def homology_from_markup(markup_filename, homology_filename, 1.8 +def homology_from_markup(input_filename, homology_filename, 1.9 max_delta, pdb_getter=cached_download_pdb): 1.10 - markup_file = open(markup_filename) 1.11 + markup_file = open(input_filename) 1.12 homology_file = open(homology_filename, 'w') 1.13 homology_from_3d(markup_file=markup_file, homology_file=homology_file, 1.14 max_delta=max_delta, pdb_getter=pdb_getter) 1.15 markup_file.close() 1.16 homology_file.close() 1.17 1.18 +def homology_from_alignment(input_filename, homology_filename, 1.19 + max_delta, pdb_getter=cached_download_pdb): 1.20 + alignment_file = open(input_filename) 1.21 + homology_file = open(homology_filename, 'w') 1.22 + homology_from_3d(markup_file=None, alignment_file=alignment_file, 1.23 + homology_file=homology_file, max_delta=max_delta, pdb_getter=pdb_getter) 1.24 + alignment_file.close() 1.25 + homology_file.close() 1.26 + 1.27 class Binder(object): 1.28 def __init__(self, func, **kwargs): 1.29 self.func = func 1.30 @@ -25,24 +34,34 @@ 1.31 def __call__(self): 1.32 self.func(**self.kwargs) 1.33 1.34 -def homology_from_markup_all(input_dir, output_dir, max_delta, list_file=None, 1.35 +def resolve_globs(input_dir, file_list): 1.36 + files = [] 1.37 + if len(file_list) > MAX_GLOBS: 1.38 + files = file_list 1.39 + else: 1.40 + for expr in file_list: 1.41 + files += [os.path.split(path)[1] for path 1.42 + in glob.glob(os.path.join(input_dir, expr))] 1.43 + return files 1.44 + 1.45 +def homology_from_markup_all(input_dir, output_dir, max_delta, 1.46 + markups_list=None, alignments_list=None, 1.47 suffix=".homology.xls", pdb_getter=cached_download_pdb, cpu_count=0): 1.48 """ FIXME """ 1.49 - if list_file: 1.50 - files = [] 1.51 - if len(list_file) > MAX_GLOBS: 1.52 - files = list_file 1.53 - else: 1.54 - for expr in list_file: 1.55 - files += glob.glob(os.path.join(input_dir, expr)) 1.56 + if markups_list: 1.57 + files = resolve_globs(input_dir, markups_list) 1.58 + func = homology_from_markup 1.59 + elif alignments_list: 1.60 + files = resolve_globs(input_dir, alignments_list) 1.61 + func = homology_from_alignment 1.62 else: 1.63 files = os.listdir(input_dir) 1.64 + func = homology_from_markup 1.65 tasks = [] 1.66 for file in files: 1.67 - file = file.strip() 1.68 path = os.path.join(input_dir, file) 1.69 if os.path.isfile(path): 1.70 - tasks.append(Binder(homology_from_markup, markup_filename=path, 1.71 + tasks.append(Binder(func, input_filename=path, 1.72 homology_filename=os.path.join(output_dir, file+suffix), 1.73 max_delta=max_delta, pdb_getter=pdb_getter)) 1.74 cpu_count = cpu_count or mp.cpu_count() 1.75 @@ -55,15 +74,19 @@ 1.76 epilog='If List of names is not provided, uses all regular files of given directory', 1.77 formatter_class=argparse.ArgumentDefaultsHelpFormatter) 1.78 p.add_argument('-v','--version',action='version',version='%(prog)s 2.0') 1.79 - p.add_argument('-i',help='Directory with markups',metavar='DIR',type=str,required=True) 1.80 + p.add_argument('-i',help='Directory with input files',metavar='DIR',type=str,required=True) 1.81 p.add_argument('-o',help='Directory to write output homology files',metavar='DIR',type=str,required=True) 1.82 - p.add_argument('-l',help='Relative names of inputs (or up to %s globs)' % MAX_GLOBS,nargs='+',required=False) 1.83 + p.add_argument('-l',help='Relative names of input markups or up to %i globs' % MAX_GLOBS, 1.84 + nargs='+',required=False) 1.85 + p.add_argument('-a',help='Relative names of input alignments or up to %i globs' % MAX_GLOBS, 1.86 + nargs='+',required=False) 1.87 p.add_argument('-d',help='Distance spreading',metavar='float',type=float,default=2.0) 1.88 p.add_argument('-s',help='Suffix added to names of output files',metavar='STR',type=str,default=".homology.xls") 1.89 p.add_argument('-c',help='Pdb cache directory',metavar='DIR',type=str, default='pdb_cache') 1.90 p.add_argument('-j',help='Number of workers',metavar='INT',type=int, default=2) 1.91 args = p.parse_args() 1.92 - homology_from_markup_all(input_dir=args.i, output_dir=args.o, max_delta=args.d, list_file=args.l, 1.93 + homology_from_markup_all(input_dir=args.i, output_dir=args.o, max_delta=args.d, 1.94 + markups_list=args.l, alignments_list=args.a, 1.95 suffix=args.s, pdb_getter=CachedDownloadPdb(cache_dir=args.c), cpu_count=args.j) 1.96 1.97 if __name__ == '__main__':