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

Source Code for Module obitools.options.bioseqedittag

1 -def addSequenceEditTagOptions(optionManager):
2 3 optionManager.add_option('-R','--rename-tag', 4 action="append", 5 dest='renameTags', 6 metavar="<OLD_NAME:NEW_NAME>", 7 type="string", 8 default=[], 9 help="change tag name from OLD_NAME to NEW_NAME") 10 11 optionManager.add_option('--delete-tag', 12 action="append", 13 dest='deleteTags', 14 metavar="<TAG_NAME>", 15 type="string", 16 default=[], 17 help="delete tag TAG_NAME") 18 19 optionManager.add_option('-S','--set-tag', 20 action="append", 21 dest='setTags', 22 metavar="<TAG_NAME:PYTHON_EXPRESSION>", 23 type="string", 24 default=[], 25 help="Add a new tag named TAG_NAME with " 26 "a value computed from PYTHON_EXPRESSION") 27 28 optionManager.add_option('--set-identifier', 29 action="store", 30 dest='setIdentifier', 31 metavar="<PYTHON_EXPRESSION>", 32 type="string", 33 default=None, 34 help="Set sequence identifier with " 35 "a value computed from PYTHON_EXPRESSION") 36 37 optionManager.add_option('-T','--set-definition', 38 action="store", 39 dest='setDefinition', 40 metavar="<PYTHON_EXPRESSION>", 41 type="string", 42 default=None, 43 help="Set sequence definition with " 44 "a value computed from PYTHON_EXPRESSION") 45 46 optionManager.add_option('-O','--only-valid-python', 47 action="store_true", 48 dest='onlyValid', 49 default=False, 50 help="only valid python expressions are allowed")
51 52 53 54
55 -def sequenceTaggerGenerator(options):
56 toDelete = options.deleteTags[:] 57 toRename = [x.split(':',1) for x in options.renameTags if len(x.split(':',1))==2] 58 toSet = [x.split(':',1) for x in options.setTags if len(x.split(':',1))==2] 59 newId = options.setIdentifier 60 newDef = options.setDefinition 61 62 def sequenceTagger(seq): 63 for i in toDelete: 64 if i in seq: 65 del seq[i] 66 for o,n in toRename: 67 if o in seq: 68 seq[n]=seq[o] 69 del seq[o] 70 for i,v in toSet: 71 try: 72 val = eval(v,{'sequence':seq},seq) 73 except Exception,e: 74 if options.onlyValid: 75 raise e 76 val = v 77 seq[i]=val 78 if newId is not None: 79 try: 80 val = eval(newId,{'sequence':seq},seq) 81 except Exception,e: 82 if options.onlyValid: 83 raise e 84 val = newId 85 seq.id=val 86 if newDef is not None: 87 try: 88 val = eval(newDef,{'sequence':seq},seq) 89 except Exception,e: 90 if options.onlyValid: 91 raise e 92 val = newDef 93 seq.definition=val 94 return seq
95 96 return sequenceTagger 97