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

# HG changeset patch
# User boris (kodomo)
# Date 1301749451 -14400
# Node ID 211330654df7fa5a42ad3b50f9faf3931d6f4011
# Parent 688348824267aa3e861f4ef5ad2ce96c96cc1808
pair_cores: multiprocessing, no forking

diff -r 688348824267 -r 211330654df7 pair_cores/pair_cores.py
--- a/pair_cores/pair_cores.py Fri Apr 01 17:14:26 2011 +0400
+++ b/pair_cores/pair_cores.py Sat Apr 02 17:04:11 2011 +0400
@@ -33,53 +33,61 @@
if m not in monomers_with_structure:
assert not hasattr(column.pop(s), 'ca_xyz')

-r = argparse.FileType('r')
-w = argparse.FileType('w')
+def run(args):

-p = argparse.ArgumentParser(
-description='PairCores',
-formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-)
+ try:
+ alignment = Alignment().append_file(args.i)
+ except:
+ raise Exception()

-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)
+ unique_sequences = list(set([s.name for s in alignment.sequences]))
+ if len(unique_sequences) < len(alignment.sequences):
+ alignment.sequences = unique_sequences

-args = p.parse_args()
+ 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)

-try:
- alignment = Alignment().append_file(args.i)
-except:
- raise Exception()
+ if len(alignment.sequences) < 2:
+ raise Exception()

-unique_sequences = list(set([s.name for s in alignment.sequences]))
-if len(unique_sequences) < len(alignment.sequences):
- alignment.sequences = unique_sequences
+ block = Block.from_alignment(alignment)

-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)
+ remove_monomers_without_structure(block)

-if len(alignment.sequences) < 2:
- raise Exception()
+ block.to_file(args.o)

-block = Block.from_alignment(alignment)
+ blocks = block.pair_core_parts(max_delta=args.d, timeout=0)
+ block.blocks_to_file(args.b, blocks)

-remove_monomers_without_structure(block)
+ if args.H:
+ block.blocks_to_html(args.H, blocks, open(html_template).read())

-block.to_file(args.o)
+class A(object):
+ pass

-blocks = block.pair_core_parts(max_delta=args.d, timeout=0)
-block.blocks_to_file(args.b, blocks)
+if __name__ == '__main__':

-if args.H:
- block.blocks_to_html(args.H, blocks, open(html_template).read())
+ 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()
+ run(args)
+
diff -r 688348824267 -r 211330654df7 pair_cores/pair_cores_all.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pair_cores/pair_cores_all.py Sat Apr 02 17:04:11 2011 +0400
@@ -0,0 +1,44 @@
+
+import sys
+import os
+from multiprocessing import Pool
+from copy import copy
+
+from pair_cores import run, A
+
+d_in = sys.argv[1]
+d_out = sys.argv[2]
+name = sys.argv[3]
+cpu_count = int(sys.argv[4])
+
+def run2(args):
+ print args.i
+ args.i = open(args.i)
+ args.o = open(args.o, 'w')
+ args.H = open(args.H, 'w')
+ args.b = open(args.b, 'w')
+ try:
+ run(args)
+ except:
+ pass
+
+def tasks():
+ for file in os.listdir(d_in):
+ args = A()
+ args.i = os.path.join(d_in, file)
+ Dir = os.path.join(d_out, file)
+ if not os.path.exists(Dir):
+ os.mkdir(Dir)
+ args.o = os.path.join(Dir, 'structure_only.fasta')
+ for d in [2.0,2.5]:
+ args.d = d
+ args.H = os.path.join(Dir, '%s-%.1f.html'%(name,d))
+ blocks_filename = os.path.join(Dir, '%s-%.1f.blocks'%(name,d))
+ args.b = blocks_filename
+ if not os.path.exists(blocks_filename) or os.path.getsize(blocks_filename) < 10:
+ yield copy(args)
+
+pool = Pool(processes=cpu_count)
+pool.map(run2, tasks())
+
+