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

allpy

changeset 911:8afd162cf7cb

add program compare_aln_3d.py
author Boris Nagaev <bnagaev@gmail.com>
date Fri, 28 Oct 2011 00:42:17 +0300
parents 7b070e8ff18c
children ed1f4f87034f
files pair_cores/compare_aln_3d.py
diffstat 1 files changed, 64 insertions(+), 0 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/pair_cores/compare_aln_3d.py	Fri Oct 28 00:42:17 2011 +0300
     1.3 @@ -0,0 +1,64 @@
     1.4 +#!/usr/bin/python
     1.5 +
     1.6 +import warnings
     1.7 +import argparse
     1.8 +from tempfile import NamedTemporaryFile
     1.9 +
    1.10 +from pair_cores import homology_from_3d
    1.11 +from allpy.homology import MonomerHomology as MH
    1.12 +from allpy.structure import CachedDownloadPdb
    1.13 +
    1.14 +def score(aln, format, delta, cache):
    1.15 +    if format == 'markup':
    1.16 +        markup_file = aln
    1.17 +        alignment_file = None
    1.18 +    else:
    1.19 +        markup_file = None
    1.20 +        alignment_file = aln
    1.21 +    homology_file = NamedTemporaryFile(delete=False)
    1.22 +    homology_from_3d(markup_file=markup_file, alignment_file=alignment_file,
    1.23 +            homology_file=homology_file, max_delta=delta,
    1.24 +            pdb_getter=CachedDownloadPdb(cache_dir=cache))
    1.25 +    homology_file.close()
    1.26 +    case_file = NamedTemporaryFile(delete=False)
    1.27 +    MH.case_homology(aln.name, case_file.name, case=True, format=format)
    1.28 +    homology_3d = MH(); homology_3d.read(homology_file.name)
    1.29 +    homology_case = MH(); homology_case.read(case_file.name)
    1.30 +    result = homology_case.compare_with(homology_3d)
    1.31 +    homology_file.close()
    1.32 +    case_file.close()
    1.33 +    return result
    1.34 +
    1.35 +def compare_aln_3d(a, b, format, out, delta, cache):
    1.36 +    score_a = score(a, format, delta, cache)
    1.37 +    score_b = score(b, format, delta, cache)
    1.38 +    out.write("%(a1).4g %(a2).4g, %(b1).4g %(b2).4g, %(quotient).4g\n" %
    1.39 +        {'a1': score_a[0], 'a2': score_a[1],
    1.40 +         'b1': score_b[0], 'b2': score_b[1],
    1.41 +         'quotient': (sum(score_a) / sum(score_b))})
    1.42 +
    1.43 +def main():
    1.44 +    p = argparse.ArgumentParser(description='PairCores. CompareAln3d',
    1.45 +        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    1.46 +    p.add_argument('-a', '--a-alignment', type=argparse.FileType('r'),
    1.47 +            required=True, help='First input alignment')
    1.48 +    p.add_argument('-b', '--b-alignment', type=argparse.FileType('r'),
    1.49 +            required=True, help='Second input alignment')
    1.50 +    p.add_argument('-f', '--format', default='fasta',
    1.51 +            help='Format of input alignments')
    1.52 +    p.add_argument('-o', '--out', type=argparse.FileType('w'), required=True,
    1.53 +            help='Output file with scores')
    1.54 +    p.add_argument('-d', '--delta', type=float, default=2.0,
    1.55 +            help='Distance spreading')
    1.56 +    p.add_argument('-c', '--cache', default='pdb_cache',
    1.57 +            help='Pdb cache directory')
    1.58 +    a = p.parse_args()
    1.59 +    compare_aln_3d(a=a.a_alignment, b=a.b_alignment, format=a.format, out=a.out,
    1.60 +            delta=a.delta, cache=a.cache)
    1.61 +
    1.62 +if __name__ == '__main__':
    1.63 +    try:
    1.64 +        main()
    1.65 +    except Exception, e:
    1.66 +        warnings.warn(str(e), stacklevel=2)
    1.67 +