diff gene_fraction/src/args.h @ 0:f95150c37d38 draft default tip

planemo upload for repository https://github.com/ChrisD11/Tools commit ddc95e5d6b5f2c0a5340c0bc384aa822db8856d5
author chrisd
date Sun, 21 Feb 2016 23:31:55 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gene_fraction/src/args.h	Sun Feb 21 23:31:55 2016 -0500
@@ -0,0 +1,90 @@
+#ifndef ARGS_H
+#define ARGS_H
+
+#include "int_util.h"
+
+#include <string>
+#include <vector>
+#include <list>
+
+static void usage() {
+        fprintf(stderr, "\n");
+        fprintf(stderr, "Program: Coverage Sampler \n");
+        fprintf(stderr, "Contact: Chris Dean <cdean11@rams.colostate.edu\n\n");
+        fprintf(stderr, "Usage: csa [options]\n\n");
+        fprintf(stderr, "Options:\n\n");
+        fprintf(stderr, "    -amr_fp    amr database path\n");
+        fprintf(stderr, "    -sam_fp    sam file path\n");
+        fprintf(stderr, "    -min       starting level\n");
+        fprintf(stderr, "    -max       ending level\n");
+        fprintf(stderr, "    -skip      amount of levels to skip\n");
+        fprintf(stderr, "    -t         gene fraction threshold\n");
+        fprintf(stderr, "    -samples   amount of samples per level\n");
+        fprintf(stderr, "    -d         directory parsing\n");
+        fprintf(stderr, "    -bam       bam file parsing\n");
+        fprintf(stderr, "    -out_fp    output file path\n\n");
+}
+
+/**
+ * Encapsulates information input
+ * from the command line.
+ */
+struct cmd_args {
+	std::string amr_fp;
+	std::string sam_fp;
+	std::list<std::string> sam_dir_fp;
+	std::string out_fp;
+	
+	int threshold;
+	int min;
+	int max;
+	int skip;
+	int s_per_lev;
+
+	bool sam_dir = false;		/* This will be set to true when parsing a
+                                           directory of sam files. */
+	bool bam_stream = false;	/* This will be set to true when executing
+                                           samtools view -h example.bam | csa > output
+                                           from the command line. */
+};
+
+/**
+ * Returns a struct of command line arguments.
+ */
+static inline cmd_args
+parse_command_line(int argc, char *argv[]) {
+	std::vector<std::string> args(argv, argv + argc);
+
+	cmd_args arg;
+
+	for(int i = 1; i < argc; i++) {
+		if(args[i].compare("-amr_fp") == 0)
+			arg.amr_fp = args[++i];
+		else if(args[i].compare("-sam_fp") == 0) 
+			arg.sam_fp = args[++i];
+		else if(args[i].compare("-out_fp") == 0)
+			arg.out_fp = args[++i];
+		else if(args[i].compare("-t") == 0)
+			arg.threshold = s_to_i(args[++i]);
+		else if(args[i].compare("-min") == 0)
+			arg.min = s_to_i(args[++i]);
+		else if(args[i].compare("-max") == 0)
+			arg.max = s_to_i(args[++i]);
+		else if(args[i].compare("-skip") == 0)
+			arg.skip = s_to_i(args[++i]);
+		else if(args[i].compare("-samples") == 0)
+			arg.s_per_lev = s_to_i(args[++i]);
+		else if(args[i].compare("-d") == 0)
+			arg.sam_dir = true;
+		else if(args[i].compare("-bam") == 0)
+			arg.bam_stream = true;
+		else {
+			usage();
+			exit(EXIT_FAILURE);
+		}
+	}
+
+	return arg;
+}
+
+#endif /* ARGS_H */