def testArgs(self): """ It must be possible to parse command line arguments to create a new instance of FindParameters. """ parser = argparse.ArgumentParser() FindParameters.addArgsToParser(parser) args = parser.parse_args([ '--significanceMethod', 'Always', '--significanceFraction', '0.4', '--binScoreMethod', 'MinHashesScore', '--featureMatchScore', '5', '--featureMismatchScore', '6', '--weights', 'AlphaHelix 2', '--deltaScale', '0.2', ]) # Parsing must do the expected thing. self.assertEqual('Always', args.significanceMethod) self.assertEqual(0.4, args.significanceFraction) self.assertEqual('MinHashesScore', args.binScoreMethod) self.assertEqual(5, args.featureMatchScore) self.assertEqual(6, args.featureMismatchScore) self.assertEqual(0.2, args.deltaScale) # We must be able to make an instance from the parsed args. findParams = FindParameters.fromArgs(args) self.assertEqual('Always', findParams.significanceMethod) self.assertEqual(0.4, findParams.significanceFraction) self.assertEqual('MinHashesScore', findParams.binScoreMethod) self.assertEqual(5, findParams.featureMatchScore) self.assertEqual(6, findParams.featureMismatchScore) self.assertEqual(0.2, findParams.deltaScale)
#!/usr/bin/env python """ Print all database and find parameters available via the command line, with their default values (according to argparse). """ from __future__ import print_function import argparse from light.parameters import DatabaseParameters, FindParameters dbParams = DatabaseParameters() parser = argparse.ArgumentParser( add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter) dbParams.addArgsToParser(parser) print('Database parameters:') # Splitting on 'optional arguments:\n' is a hack that works nicely as the # first part of the help message is a summary of how to call the program # and doesn't show descriptions or default values. print(parser.format_help().split('optional arguments:\n')[1]) findParams = FindParameters() parser = argparse.ArgumentParser( add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter) findParams.addArgsToParser(parser) print('Find parameters:') print(parser.format_help().split('optional arguments:\n')[1])
'--printParams', default=False, action='store_true', help=('If given, print the values of all parameters used.')) parser.add_argument('--description', default='<not given>', help='A description of the code being tested.') parser.add_argument( '--testIdPrefix', default=None, help=('A test id prefix. Tests whose ids do not contain this pattern ' 'will not be run. The pattern is case-sensitive.')) FindParameters.addArgsToParser(parser) DatabaseParameters.addArgsToParser(parser) args = parser.parse_args() # If no parameter sets were specified, use the ones on the command line. if not args.parameterSets: args.parameterSets = ['command-line'] if 'command-line' in args.parameterSets: PARAMETER_SETS['command-line'] = { 'dbParams': DatabaseParameters.fromArgs(args), 'findParams': FindParameters.fromArgs(args), } if args.printParams: