--- a +++ b/intelligenes/intelligenes.py @@ -0,0 +1,94 @@ +import argparse +import subprocess +import pkg_resources + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('-i', '--cgit_file', required=True) + parser.add_argument('-o', '--output_dir', required=True) + + parser.add_argument('--random_state', type=int, default=42) + parser.add_argument('--test_size', type=float, default=0.3) + parser.add_argument('--n_splits', type=int, default=5) + + parser.add_argument('--normalize', action='store_true') + parser.add_argument('--no_rfe', action='store_true') + parser.add_argument('--no_pearson', action='store_true') + parser.add_argument('--no_chi2', action='store_true') + parser.add_argument('--no_anova', action='store_true') + + parser.add_argument('--voting', type=str, default='soft') + parser.add_argument('--no_rf', action='store_true') + parser.add_argument('--no_svm', action='store_true') + parser.add_argument('--no_xgb', action='store_true') + parser.add_argument('--no_knn', action='store_true') + parser.add_argument('--no_mlp', action='store_true') + parser.add_argument('--tune', action='store_true') + parser.add_argument('--no_igenes', action='store_true') + parser.add_argument('--no_visualization', action='store_true') + + args = parser.parse_args() + + selection_path = pkg_resources.resource_filename('intelligenes', 'selection.py') + selection_args = [ + 'python', selection_path, + '-i', args.cgit_file, + '-o', args.output_dir, + '--random_state', str(args.random_state), + '--test_size', str(args.test_size), + ] + + if args.normalize: + selection_args.append('--normalize') + if args.no_rfe: + selection_args.append('--no_rfe') + if args.no_pearson: + selection_args.append('--no_pearson') + if args.no_chi2: + selection_args.append('--no_chi2') + if args.no_anova: + selection_args.append('--no_anova') + + selection = subprocess.run(selection_args, capture_output=True, text=True) + print(selection.stdout) + selection_output = selection.stdout.strip().split('\n') + for line in selection_output: + if line.startswith(" Selected Features:"): + features_file = line.split(":")[1].strip() + break + + classification_path = pkg_resources.resource_filename('intelligenes', 'classification.py') + classification_args = [ + 'python', classification_path, + '-i', args.cgit_file, + '-f',features_file, + '-o', args.output_dir, + '--random_state', str(args.random_state), + '--test_size', str(args.test_size), + '--n_splits', str(args.n_splits), + '--voting', args.voting, + ] + + if args.no_rf: + classification_args.append('--no_rf') + if args.no_svm: + classification_args.append('--no_svm') + if args.no_xgb: + classification_args.append('--no_xgb') + if args.no_knn: + classification_args.append('--no_knn') + if args.no_mlp: + classification_args.append('--no_mlp') + if args.tune: + classification_args.append('--tune') + if args.normalize: + classification_args.append('--normalize') + if args.no_igenes: + classification_args.append('--no_igenes') + if args.no_visualization: + classification_args.append('--no_visualization') + + subprocess.check_call(classification_args) + +if __name__ == '__main__': + main()