Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/raw-rev/6c6ae5013ab6
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 07:57:53 2012
Кодировка:

# HG changeset patch
# User boris (kodomo)
# Date 1301125691 -10800
# Node ID 6c6ae5013ab6dc02c821848115508e963c87a34c
# Parent 2f851b66a2c7f5274d0c9ae08e9291ac08ff31aa
add pair_cores program package

* pair_cores
* score
* mkhtml

diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/html.htm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/html.htm Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,1 @@
+../blocks3d/html.htm
\ No newline at end of file
diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/html.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/html.py Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,1 @@
+../blocks3d/html.py
\ No newline at end of file
diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/mkhtml.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/mkhtml.py Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,16 @@
+#!/usr/bin/python
+
+import os
+import json
+import sys
+
+from protein_pdb import Alignment, Block, Monomer, Sequence
+from html import html_template
+
+fasta_file = sys.argv[1]
+blocks_file = sys.argv[2]
+
+alignment = Alignment().append_file(open(fasta_file))
+blocks = alignment.blocks_from_file(open(blocks_file))
+alignment.blocks_to_html(sys.stdout, blocks, open(html_template).read())
+
diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/pair_cores.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/pair_cores.py Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,85 @@
+#!/usr/bin/python
+
+from gzip import GzipFile
+import os
+import sys
+from copy import deepcopy
+import argparse
+from copy import copy
+
+from protein_pdb import Alignment, Block, Monomer, Sequence
+from allpy import processors
+import allpy.base
+from html import html_template
+
+def remove_monomers_without_structure(block):
+ monomers_with_structure = set()
+
+ for sequence in block.sequences:
+ for monomer in sequence:
+ if hasattr(monomer, 'ca_xyz'):
+ monomers_with_structure.add(monomer)
+
+ for sequence in block.sequences:
+ to_delete = []
+ for i, monomer in enumerate(sequence):
+ if monomer not in monomers_with_structure:
+ to_delete.append(i)
+ for n, i in enumerate(to_delete):
+ assert not hasattr(sequence.pop(i-n), 'ca_xyz')
+
+ for column in block.columns:
+ for s, m in column.items():
+ if m not in monomers_with_structure:
+ assert not hasattr(column.pop(s), 'ca_xyz')
+
+r = argparse.FileType('r')
+w = argparse.FileType('w')
+
+p = argparse.ArgumentParser(
+description='PairCores',
+formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+)
+
+p.add_argument('-v','--version',action='version',version='%(prog)s 2.0')
+p.add_argument('-i',help='Input alignment file',metavar='FILE',type=r,required=True)
+p.add_argument('-d',help='Distance spreading',metavar='float',type=float,default=2.0)
+p.add_argument('-o',help='Output alignment file',metavar='FILE',type=w, required=True)
+p.add_argument('-b',help='Output pair_cores file',metavar='FILE',type=w, required=True)
+p.add_argument('-H',help='Output HTML file',metavar='FILE',type=w)
+
+args = p.parse_args()
+
+try:
+ alignment = Alignment().append_file(args.i)
+except:
+ raise Exception()
+
+unique_sequences = list(set([s.name for s in alignment.sequences]))
+if len(unique_sequences) < len(alignment.sequences):
+ alignment.sequences = unique_sequences
+
+bad_sequences = set()
+for sequence in copy(alignment.sequences):
+ try:
+ sequence.auto_pdb(xyz_only=True)
+ except:
+ bad_sequences.add(sequence)
+if bad_sequences:
+ alignment.sequences = list(set(alignment.sequences)-bad_sequences)
+
+if len(alignment.sequences) < 2:
+ raise Exception()
+
+block = Block.from_alignment(alignment)
+
+remove_monomers_without_structure(block)
+
+block.to_file(args.o)
+
+blocks = block.pair_core_parts(max_delta=args.d, timeout=0)
+block.blocks_to_file(args.b, blocks)
+
+if args.H:
+ block.blocks_to_html(args.H, blocks, open(html_template).read())
+
diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/protein_pdb.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/protein_pdb.py Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,1 @@
+../blocks3d/protein_pdb.py
\ No newline at end of file
diff -r 2f851b66a2c7 -r 6c6ae5013ab6 pair_cores/score.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/score.py Sat Mar 26 10:48:11 2011 +0300
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+
+import os
+import sys
+
+from protein_pdb import Alignment, Block, Monomer, Sequence
+
+in_file = sys.argv[1]
+pair_cores_file = sys.argv[2]
+
+alignment = Alignment().append_file(open(in_file))
+pair_cores = alignment.blocks_from_file(open(pair_cores_file))
+
+score = 0.0
+max_score = 0.0
+
+column2blocks = {}
+for column in alignment.columns:
+ column2blocks[column] = []
+for b in pair_cores:
+ for column in b.columns:
+ column2blocks[column].append(b)
+for column in alignment.columns:
+ pairs_set = set()
+ for b in column2blocks[column]:
+ pairs_set.add(frozenset(b.sequences))
+ m = len(column)
+ if m > 1:
+ c = m*(m-1) / 2
+ max_score += c
+ score += len(pairs_set)
+
+print("%f = %i / %i %s %s" % (float(score)/max_score, score, max_score, in_file, pair_cores_file))
+
+