On 05/08/15 21:33, jarod_v6--- via Tutor wrote:
ena = Rnaseq(options.configura, options.rst, options.outdir) cmdset = [ ena.trimmomatic, ena.star, ena.merge_trimmomatic_stats
Steven has shown you one option using a list. I tend to prefer dictionaries for this kind of thing because you can use a user-friendly key. So your cmdset might look like: cmdset = { 'trim': ena.trimmomatic, 'star': ena.star, 'merge': ena.merge_trimmomatic_stats } You can then create a menu using the keys: for key in cmdset: print(key) cmd = input('command? ') And call the command with cmdset[cmd]() If the commands have different parameter requirements you might need a helper function to gather those params too - it can also be in the dictionary: cmdset = { 'trim': [ena.trimmomatic, get_trim_par], 'star': [ena.star, get_star_par], 'merge': [ena.merge_trimmomatic_stats, None] } So calling now becomes if cmdset[cmd][1]: cmdset[cmd][0](cmdset[cmd[1]()) else: cmdset[cmd][0]() And that can be put into a loop for multiple steps: for cmd in steps: if cmdset[cmd[[1]: etc... If you need to get the steps from the command line then you need to adapt that pattern to gather the params in another way - possibly via a data file (which could also be specified on the command line) or by using defaults. HTH -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor