Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/rev/285d61f096f5
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 01:17:12 2012
Кодировка:
allpy: 285d61f096f5

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__':