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 +