Switch to side-by-side view

--- 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()