From b27f4ea2ab2523f3f2eb706345a224534e0e413a Mon Sep 17 00:00:00 2001
From: Calvin <calvin@EESI>
Date: Tue, 11 Jun 2013 10:26:52 -0400
Subject: small edits to man page

---
 src/c/multifasta_to_otu.1 |   2 +-
 src/c/quikr.1             |   2 +-
 src/c/quikr_functions.c.1 | 153 ++++++++++++++++++++++++++++++++++++++++++++++
 src/c/quikr_train.1       |   2 +-
 4 files changed, 156 insertions(+), 3 deletions(-)
 create mode 100644 src/c/quikr_functions.c.1

(limited to 'src/c')

diff --git a/src/c/multifasta_to_otu.1 b/src/c/multifasta_to_otu.1
index 29fe5d7..2a00d5c 100644
--- a/src/c/multifasta_to_otu.1
+++ b/src/c/multifasta_to_otu.1
@@ -79,7 +79,7 @@ make_3d_plots.py -i <quikr_otu_project_name>_weighted.txt -o <3d_pcoa_plotdirect
 .SH AUTHORS
 .B multifasta2otu 
 was written by Gail Rosen <gailr@ece.drexel.edu>, Calvin Morrison 
-<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, Jean-Luc Bouchot
+<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, and Jean-Luc Bouchot.
 .SH REPORTING BUGS
 .TP
 Please report all bugs to Gail Rosen <gailr@ece.drexel.edu>. Include your \
diff --git a/src/c/quikr.1 b/src/c/quikr.1
index 937109b..9b32667 100644
--- a/src/c/quikr.1
+++ b/src/c/quikr.1
@@ -58,7 +58,7 @@ quikr -i sample.fa -f rdp7.fa -s rdp_sensing_matrix.gz -o frequencies.txt
 .SH AUTHORS
 .B quikr
 was written by Gail Rosen <gailr@ece.drexel.edu>, Calvin Morrison 
-<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, Jean-Luc Bouchot
+<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, and Jean-Luc Bouchot.
 .SH REPORTING BUGS
 .TP
 Please report all bugs to Gail Rosen <gailr@ece.drexel.edu>. Include your \
diff --git a/src/c/quikr_functions.c.1 b/src/c/quikr_functions.c.1
new file mode 100644
index 0000000..31afb3b
--- /dev/null
+++ b/src/c/quikr_functions.c.1
@@ -0,0 +1,153 @@
+#include <stdio.h>
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+#include <zlib.h>
+
+int count_sequences(char *filename) { 
+  char command[512];
+  int sequences = 0;
+  FILE *grep_output;
+
+  sprintf(command, "grep -c ^\\> %s", filename);
+  grep_output = popen(command, "r");
+  if(grep_output == NULL) {
+    fprintf(stderr, "Could not execute %s\n", command);
+    exit(EXIT_FAILURE);
+  }
+  
+  fscanf(grep_output, "%d", &sequences);
+
+  pclose(grep_output);
+  return sequences;
+}
+
+
+void normalize_matrix(double *matrix, int height, int width) {
+  int x = 0;
+  int y = 0;
+  for(x = 0; x < height; x++) {
+
+    double row_sum = 0;
+
+    for(y = 0; y < (width); y++)
+      row_sum = row_sum + matrix[width * x + y];
+    for(y = 0; y < (width); y++) 
+      matrix[width * x + y] = matrix[width * x + y] / row_sum; 
+  }
+}
+
+
+double *load_count_matrix(char *filename, int width, int kmer) {
+
+  double *count_matrix = malloc((width)*sizeof(double));
+  char count_command[512];
+  int x = 0;
+  char *line = NULL;
+  size_t len = 0;
+
+  if(count_matrix == NULL) {
+    fprintf(stderr, "could not allocate enough memory for the count matrix (%d x double) \n", width);
+    exit(EXIT_FAILURE);
+  }
+
+  // create out count matrix
+  sprintf(count_command, "count-kmers -r %d -1 -u %s", kmer, filename);
+  FILE *count_output = popen(count_command, "r");
+  if(count_output == NULL) {
+    fprintf(stderr, "could not execute \"%s\"", count_command);
+    exit(EXIT_FAILURE);
+  }
+
+  // set first element to zero.
+  count_matrix[0] = 0;
+
+  // get our first line
+  getline(&line, &len, count_output);
+  count_matrix[1] = atoi(line);
+
+  // iterate over the rest of the lines
+  for(x = 2; x < width; x++) { 
+    getline(&line, &len, count_output);
+    count_matrix[x] = atoi(line);
+  } 
+
+  pclose(count_output);
+
+  return count_matrix;
+}
+
+
+double *load_sensing_matrix(char *filename, int height, int width) {
+
+  int x = 0;
+  int y = 0;
+
+  gzFile sensing_matrix_fh = NULL;
+
+  double *sensing_matrix = malloc(height * width * sizeof(double));
+  if(sensing_matrix == NULL) {
+    fprintf(stderr, "Could not allocate memory for the sensing matrix\n");
+  }
+
+  sensing_matrix_fh = gzopen(filename, "r");
+  if(sensing_matrix_fh == NULL) {
+    fprintf(stderr, "could not open %s", filename);
+    exit(EXIT_FAILURE);
+  }
+
+  // read our sensing matrix in
+  for(x = 0; x < height; x++) {
+    for (y = 1; y < width; y++) {
+      char buffer[14];
+      gzgets(sensing_matrix_fh, buffer, 14); 
+      sensing_matrix[width*x + y] = atof(buffer);
+    }
+  }
+
+  gzclose(sensing_matrix_fh);
+
+  return sensing_matrix;
+}
+
+char **load_headers(char *filename, int sequences) {
+  char command[512];
+  char *line= NULL;
+  int x = 0;
+  FILE *grep_output;
+  size_t len = 0;
+
+  sprintf(command, "grep ^\\> %s", filename);
+  grep_output = popen(command, "r");
+  if(grep_output == NULL) {
+    fprintf(stderr, "Could not execute %s\n", command);
+    exit(EXIT_FAILURE);
+  }
+  
+  char **headers = malloc(sequences * sizeof(char *));
+  if(headers == NULL) {
+    fprintf(stderr, "could not allocated enough memory\n");
+    exit(EXIT_FAILURE);
+  }
+
+  for(x = 0; x < sequences; x++) {
+
+    char *header = malloc(256 * sizeof(char));
+    if(header == NULL) {
+      fprintf(stderr, "could not allocated enough memory\n");
+      exit(EXIT_FAILURE);
+    }
+    getline(&line, &len, grep_output);
+    sscanf(line + 1, "%s", header);
+    headers[x] = header;
+  }
+
+  pclose(grep_output);
+
+  return headers;
+}
+
diff --git a/src/c/quikr_train.1 b/src/c/quikr_train.1
index dd1493f..6a058cd 100644
--- a/src/c/quikr_train.1
+++ b/src/c/quikr_train.1
@@ -45,7 +45,7 @@ If you do not have a .gz file on your output matrix name, it will be appended.
 .SH AUTHORS
 .B quikr
 was written by Gail Rosen <gailr@ece.drexel.edu>, Calvin Morrison 
-<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, Jean-Luc Bouchot
+<mutantturkey@gmail.com>, David Koslicki, Simon Foucart, and Jean-Luc Bouchot.
 .SH REPORTING BUGS
 .TP
 Please report all bugs to Gail Rosen <gailr@ece.drexel.edu>. Include your \
-- 
cgit v1.2.3