Package obitools :: Package word :: Module options
[hide private]
[frames] | no frames]

Source Code for Module obitools.word.options

  1  from logging import debug,root,DEBUG 
  2   
  3   
  4   
  5  from obitools.word import wordSelector,allWordIterator 
  6  from obitools.word import predicat 
  7  import sys 
  8   
  9   
 10   
11 -def _acceptedOptionCallback(options,opt,value,parser):
12 if not hasattr(parser.values, 'acceptedOligo'): 13 parser.values.acceptedOligo=[] 14 parser.values.acceptedOligo.append(predicat.rePredicatGenerator(value))
15
16 -def _rejectedOptionCallback(options,opt,value,parser):
17 debug(value) 18 if not hasattr(parser.values, 'rejectedOligo'): 19 parser.values.rejectedOligo=[] 20 parser.values.rejectedOligo.append(predicat.rePredicatGenerator(value))
21 22 23
24 -def addOligoOptions(optionManager):
25 26 optionManager.add_option('-L','--oligo-list', 27 action="store", dest="oligoList", 28 metavar="<filename>", 29 type="str", 30 help="filename containing a list of oligonucleotide") 31 32 33 optionManager.add_option('-s','--oligo-size', 34 action="store", dest="oligoSize", 35 metavar="<###>", 36 type="int", 37 help="Size of oligonucleotide to generate") 38 39 optionManager.add_option('-f','--family-size', 40 action="store", dest="familySize", 41 metavar="<###>", 42 type="int", 43 help="Size of oligonucleotide family to generate") 44 45 optionManager.add_option('-d','--distance', 46 action="store", dest="oligoDist", 47 metavar="<###>", 48 type="int", 49 default=1, 50 help="minimal distance between two oligonucleotides") 51 52 optionManager.add_option('-g','--gc-max', 53 action="store", dest="gcMax", 54 metavar="<###>", 55 type="int", 56 default=0, 57 help="maximum count of G or C nucleotide acceptable in a word") 58 59 optionManager.add_option('-a','--accepted', 60 action="callback", callback=_acceptedOptionCallback, 61 metavar="<regular pattern>", 62 type="str", 63 help="pattern of accepted oligonucleotide") 64 65 optionManager.add_option('-r','--rejected', 66 action="callback", callback=_rejectedOptionCallback, 67 metavar="<regular pattern>", 68 type="str", 69 help="pattern of rejected oligonucleotide") 70 71 optionManager.add_option('-p','--homopolymere', 72 action="store", dest="homopolymere", 73 metavar="<###>", 74 type="int", 75 default=0, 76 help="reject oligo with homopolymere longer than.") 77 78 optionManager.add_option('-P','--homopolymere-min', 79 action="store", dest="homopolymere_min", 80 metavar="<###>", 81 type="int", 82 default=0, 83 help="accept only oligo with homopolymere longer than.")
84
85 -def dnaWordIterator(options):
86 87 assert options.oligoSize is not None or options.oligoList is not None,"option -s or --oligo-size must be specified" 88 assert options.familySize is not None,"option -f or --family-size must be specified" 89 assert options.oligoDist is not None,"option -d or --distance must be specified" 90 91 if options.oligoList is not None: 92 words = (x.strip().lower() for x in open(options.oligoList)) 93 else: 94 words = allWordIterator(options.oligoSize) 95 #seed = 'a' * options.oligoSize 96 97 if not hasattr(options, "acceptedOligo") or options.acceptedOligo is None: 98 options.acceptedOligo=[] 99 100 if not hasattr(options, "rejectedOligo") or options.rejectedOligo is None: 101 options.rejectedOligo=[] 102 103 #options.acceptedOligo.append(predicat.distMinGenerator(seed, options.oligoDist)) 104 105 if options.homopolymere: 106 options.rejectedOligo.append(predicat.homoPolymerGenerator(options.homopolymere)) 107 108 if options.homopolymere_min: 109 options.acceptedOligo.append(predicat.homoPolymerGenerator(options.homopolymere_min)) 110 111 if options.gcMax: 112 options.rejectedOligo.append(predicat.gcUpperBondGenerator(options.gcMax)) 113 114 return wordSelector(words, options.acceptedOligo, options.rejectedOligo)
115