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

# HG changeset patch
# User Daniil Alexeyevsky
# Date 1290422208 -10800
# Node ID a179d48a9caffcf08c619842edd984a86c8ede96
# Parent 596bdc5897bff0f92f3ff0a9def3043491b9124c
Converted geometrical_core.py to a proper UNIX script.

That is:
* renamed geometrical_core.py -> geometrical-core,
* added #!/usr/bin/python header,
* added executable permission.

diff -r 596bdc5897bf -r a179d48a9caf geometrical_core/geometrical-core
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/geometrical_core/geometrical-core Mon Nov 22 13:36:48 2010 +0300
@@ -0,0 +1,181 @@
+#!/usr/bin/python
+"""
+Geometrical Core building tool
+version 2.0
+"""
+
+from allpy import config, alignment, block
+Block = block.Block
+Alignment = alignment.Alignment
+import argparse
+import os
+from tempfile import NamedTemporaryFile
+
+r = argparse.FileType('r')
+w = argparse.FileType('w')
+c = config
+
+def f_nng(string):
+ """ Validates nonnegative (>=0) float """
+ try:
+ value = float(string)
+ except:
+ msg = "%r is wrong float" % string
+ raise argparse.ArgumentTypeError(msg)
+ if value < 0:
+ msg = "%r is negative" % string
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+def part(string):
+ """ Validates 0.0 <= float <= 1.0 """
+ try:
+ value = float(string)
+ except:
+ msg = "%r is wrong float" % string
+ raise argparse.ArgumentTypeError(msg)
+ if not (0.0 <= value <= 1.0):
+ msg = "%r is not float, representing part, ie in [0, 1]" % string
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+def timeout(string):
+ """ Validates int >= -1 """
+ try:
+ value = int(string)
+ except:
+ msg = "%r is wrong integer" % string
+ raise argparse.ArgumentTypeError(msg)
+ if value < -1:
+ msg = "integer %r is less than -1" % string
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+def pos(string):
+ """ Validates positive integer """
+ try:
+ value = int(string)
+ except:
+ msg = "%r is wrong integer" % string
+ raise argparse.ArgumentTypeError(msg)
+ if value < 1:
+ msg = "%r is not positive integer" % string
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+def i_nng(string):
+ """ Validates int >= 0 """
+ try:
+ value = int(string)
+ except:
+ msg = "%r is wrong integer" % string
+ raise argparse.ArgumentTypeError(msg)
+ if value < 0:
+ msg = "integer %r is less than 0" % string
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+p = argparse.ArgumentParser(
+description='Geometrical Core building tool.',
+epilog='''1) Distance spreading [angstrom]
+2) -1 timeout means running Bron-Kerbosh algorithm without timeout
+3) Alternative core new aa part: read documentation for more information
+4) Superposition core identifier: main core is 0, first alternative is 1 etc. ''',
+formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+#~ argument_default=argparse.SUPPRESS,
+)
+
+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('-c',help='PDB names conformity file',metavar='FILE',type=r)
+p.add_argument('-l',help='Output list file',metavar='FILE',type=w)
+p.add_argument('-f',help='Output fasta file',metavar='FILE',type=w)
+p.add_argument('-g',help='Output msf file',metavar='FILE',type=w)
+p.add_argument('-p',help='Output pdb file',metavar='FILE',type=w)
+p.add_argument('-s',help='Output spt file',metavar='FILE',type=w)
+p.add_argument('-d',help='Distance spreading',metavar='DELTA',type=f_nng,default=c.delta)
+p.add_argument('-m',help='Min core size',metavar='MIN_SIZE',type=pos,default=c.minsize)
+p.add_argument('-t',help='Bron-Kerbosh algorithm timeout',type=timeout,default=c.timeout)
+p.add_argument('-n',help='Alternative core new aa part',type=part,default=c.ac_new_atoms)
+p.add_argument('-a',help='Cores count',metavar='NEW_ATOMS',type=pos,default=c.ac_count)
+p.add_argument('-x',help='Superposition core identifier',type=i_nng,default=0)
+
+tmp_file = None
+
+try:
+ args = p.parse_args()
+
+ if not args.l and not args.f and not args.g and not args.p and not args.s:
+ print 'Error: no output file provided'
+ exit()
+ if not (args.p and args.s) and not (not args.p and not args.s):
+ print 'Error: provide both pdb and spt file or none of them'
+ exit()
+
+ try:
+ alignment = Alignment(args.i)
+ except:
+ args.i.close()
+ tmp_file = NamedTemporaryFile(delete=False)
+ tmp_file.close()
+ os.system('seqret %(msf)s %(fasta)s' % \
+ {'msf': args.i.name, 'fasta': tmp_file.name})
+ args.i = open(tmp_file.name)
+ alignment = Alignment(args.i)
+
+ block = Block(alignment)
+ GCs = block.geometrical_cores(max_delta=args.d, timeout=args.t,
+ minsize=args.t, ac_new_atoms=args.n, ac_count=args.a)
+
+ if not GCs:
+ print 'No cores! Try to change parameters'
+ exit()
+
+ if args.l:
+ l = args.l
+
+ l.write('Geometrical core positions for alignment %s' % args.i.name)
+ l.write('\n\n')
+ l.write('First alignment position is 0')
+
+ for i, GC in enumerate(GCs):
+ l.write('\n\n')
+ if i == 0:
+ l.write('Geometrical core:')
+ else:
+ l.write('Alternative geometrical core %i:' % i)
+ l.write('\n')
+ l.write(', '.join(str(n) for n in GC.positions))
+ l.close()
+
+ if args.g and not args.f:
+ args.f = args.g
+
+ if args.f:
+ args.i.seek(0)
+ f = args.f
+ f.write(args.i.read()) # write sequences
+
+ # write GCs
+ for i, GC in enumerate(GCs):
+ f.write('\n\n')
+ if i == 0:
+ GC.save_xstring(f, 'GC', 'Main geometrical core')
+ else:
+ GC.save_xstring(f, 'AGC_%i' % i, 'Alternative geometrical core %i' % i)
+ f.close()
+
+
+ if args.g:
+ args.g.close()
+ os.system('seqret %(fasta)s msf::%(msf)s' % \
+ {'fasta': args.f.name, 'msf': args.g.name})
+
+
+except Exception, t:
+ print t
+ exit()
+
+if tmp_file:
+ os.unlink(tmp_file)
+
diff -r 596bdc5897bf -r a179d48a9caf geometrical_core/geometrical_core.py
--- a/geometrical_core/geometrical_core.py Fri Nov 19 00:17:11 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-"""
-Geometrical Core building tool
-version 2.0
-"""
-
-from allpy import config, alignment, block
-Block = block.Block
-Alignment = alignment.Alignment
-import argparse
-import os
-from tempfile import NamedTemporaryFile
-
-r = argparse.FileType('r')
-w = argparse.FileType('w')
-c = config
-
-def f_nng(string):
- """ Validates nonnegative (>=0) float """
- try:
- value = float(string)
- except:
- msg = "%r is wrong float" % string
- raise argparse.ArgumentTypeError(msg)
- if value < 0:
- msg = "%r is negative" % string
- raise argparse.ArgumentTypeError(msg)
- return value
-
-def part(string):
- """ Validates 0.0 <= float <= 1.0 """
- try:
- value = float(string)
- except:
- msg = "%r is wrong float" % string
- raise argparse.ArgumentTypeError(msg)
- if not (0.0 <= value <= 1.0):
- msg = "%r is not float, representing part, ie in [0, 1]" % string
- raise argparse.ArgumentTypeError(msg)
- return value
-
-def timeout(string):
- """ Validates int >= -1 """
- try:
- value = int(string)
- except:
- msg = "%r is wrong integer" % string
- raise argparse.ArgumentTypeError(msg)
- if value < -1:
- msg = "integer %r is less than -1" % string
- raise argparse.ArgumentTypeError(msg)
- return value
-
-def pos(string):
- """ Validates positive integer """
- try:
- value = int(string)
- except:
- msg = "%r is wrong integer" % string
- raise argparse.ArgumentTypeError(msg)
- if value < 1:
- msg = "%r is not positive integer" % string
- raise argparse.ArgumentTypeError(msg)
- return value
-
-def i_nng(string):
- """ Validates int >= 0 """
- try:
- value = int(string)
- except:
- msg = "%r is wrong integer" % string
- raise argparse.ArgumentTypeError(msg)
- if value < 0:
- msg = "integer %r is less than 0" % string
- raise argparse.ArgumentTypeError(msg)
- return value
-
-p = argparse.ArgumentParser(
-description='Geometrical Core building tool.',
-epilog='''1) Distance spreading [angstrom]
-2) -1 timeout means running Bron-Kerbosh algorithm without timeout
-3) Alternative core new aa part: read documentation for more information
-4) Superposition core identifier: main core is 0, first alternative is 1 etc. ''',
-formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-#~ argument_default=argparse.SUPPRESS,
-)
-
-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('-c',help='PDB names conformity file',metavar='FILE',type=r)
-p.add_argument('-l',help='Output list file',metavar='FILE',type=w)
-p.add_argument('-f',help='Output fasta file',metavar='FILE',type=w)
-p.add_argument('-g',help='Output msf file',metavar='FILE',type=w)
-p.add_argument('-p',help='Output pdb file',metavar='FILE',type=w)
-p.add_argument('-s',help='Output spt file',metavar='FILE',type=w)
-p.add_argument('-d',help='Distance spreading',metavar='DELTA',type=f_nng,default=c.delta)
-p.add_argument('-m',help='Min core size',metavar='MIN_SIZE',type=pos,default=c.minsize)
-p.add_argument('-t',help='Bron-Kerbosh algorithm timeout',type=timeout,default=c.timeout)
-p.add_argument('-n',help='Alternative core new aa part',type=part,default=c.ac_new_atoms)
-p.add_argument('-a',help='Cores count',metavar='NEW_ATOMS',type=pos,default=c.ac_count)
-p.add_argument('-x',help='Superposition core identifier',type=i_nng,default=0)
-
-tmp_file = None
-
-try:
- args = p.parse_args()
-
- if not args.l and not args.f and not args.g and not args.p and not args.s:
- print 'Error: no output file provided'
- exit()
- if not (args.p and args.s) and not (not args.p and not args.s):
- print 'Error: provide both pdb and spt file or none of them'
- exit()
-
- try:
- alignment = Alignment(args.i)
- except:
- args.i.close()
- tmp_file = NamedTemporaryFile(delete=False)
- tmp_file.close()
- os.system('seqret %(msf)s %(fasta)s' % \
- {'msf': args.i.name, 'fasta': tmp_file.name})
- args.i = open(tmp_file.name)
- alignment = Alignment(args.i)
-
- block = Block(alignment)
- GCs = block.geometrical_cores(max_delta=args.d, timeout=args.t,
- minsize=args.t, ac_new_atoms=args.n, ac_count=args.a)
-
- if not GCs:
- print 'No cores! Try to change parameters'
- exit()
-
- if args.l:
- l = args.l
-
- l.write('Geometrical core positions for alignment %s' % args.i.name)
- l.write('\n\n')
- l.write('First alignment position is 0')
-
- for i, GC in enumerate(GCs):
- l.write('\n\n')
- if i == 0:
- l.write('Geometrical core:')
- else:
- l.write('Alternative geometrical core %i:' % i)
- l.write('\n')
- l.write(', '.join(str(n) for n in GC.positions))
- l.close()
-
- if args.g and not args.f:
- args.f = args.g
-
- if args.f:
- args.i.seek(0)
- f = args.f
- f.write(args.i.read()) # write sequences
-
- # write GCs
- for i, GC in enumerate(GCs):
- f.write('\n\n')
- if i == 0:
- GC.save_xstring(f, 'GC', 'Main geometrical core')
- else:
- GC.save_xstring(f, 'AGC_%i' % i, 'Alternative geometrical core %i' % i)
- f.close()
-
-
- if args.g:
- args.g.close()
- os.system('seqret %(fasta)s msf::%(msf)s' % \
- {'fasta': args.f.name, 'msf': args.g.name})
-
-
-except Exception, t:
- print t
- exit()
-
-if tmp_file:
- os.unlink(tmp_file)
-