diff options
| -rw-r--r-- | kmer_total_count.c | 35 | ||||
| -rw-r--r-- | kmer_utils.h | 1 | 
2 files changed, 22 insertions, 14 deletions
diff --git a/kmer_total_count.c b/kmer_total_count.c index 8310e00..57d4fcc 100644 --- a/kmer_total_count.c +++ b/kmer_total_count.c @@ -13,7 +13,7 @@ int main(int argc, char **argv) {  	char *filename = NULL; -	unsigned int kmer = NULL; +	unsigned int kmer = 0;  	bool nonzero = 0;  	bool label = 0; @@ -21,9 +21,7 @@ int main(int argc, char **argv) {  	unsigned long long width = 0; -  unsigned long long i = 0; - -  long long j = 0; +	unsigned long long i = 0;  	static struct option long_options[] = {  		{"input", required_argument, 0, 'i'}, @@ -69,7 +67,7 @@ int main(int argc, char **argv) {  		fprintf(stderr, "Error: filename (-i) must be supplied\n");  		exit(EXIT_FAILURE);  	} -	if(kmer == NULL && !kmer_set) { +	if(kmer == 0 && !kmer_set) {  		fprintf(stderr, "Error: kmer (-k) must be supplied\n");  		exit(EXIT_FAILURE);  	} @@ -87,26 +85,35 @@ int main(int argc, char **argv) {  		// if labels is set, print out our labels  		if(label) {  			for(i = 0; i < width; i++) -				if(counts[i] != 0)  -					fprintf(stdout, "%s\t%llu\n", index_to_kmer(i, kmer), counts[i]); -				 +				if(counts[i] != 0) { +					char *kmer_str = index_to_kmer(i, kmer); +					fprintf(stdout, "%s\t%llu\n", kmer_str, counts[i]); +					free(kmer_str); +				} +  		}  		else {  			for(i = 0; i < width; i++)  				if(counts[i] != 0)   					fprintf(stdout, "%llu\t%llu\n", i, counts[i]); -				 +  		}  	}  	// If we aren't printing nonzeros print everything  	else {  		if(label) { -			for(i = 0; i < width; i++) -				fprintf(stdout, "%s\t%llu\n", index_to_kmer(i, kmer), counts[i]); -		}  +			for(i = 0; i < width; i++) { +				if(counts[i] != 0) { +					char *kmer_str = index_to_kmer(i, kmer); +					fprintf(stdout, "%s\t%llu\n", kmer_str, counts[i]); +					free(kmer_str); +				} +			}  +		}  		else { -		for(i = 0; i < width; i=i+4) -			fprintf(stdout, "%llu\n%llu\n%llu\n%llu\n", counts[i], counts[i+1], counts[i+2], counts[i+3]); +			for(i = 0; i < width; i=i+4) { +				fprintf(stdout, "%llu\n%llu\n%llu\n%llu\n", counts[i], counts[i+1], counts[i+2], counts[i+3]); +			}  		}  	}  	return EXIT_SUCCESS; diff --git a/kmer_utils.h b/kmer_utils.h index 4ed5928..762c20c 100644 --- a/kmer_utils.h +++ b/kmer_utils.h @@ -1,6 +1,7 @@  // Kmer functions  void convert_kmer_to_num(char *str, const unsigned long length);  unsigned long num_to_index(const char *str, const int kmer, const long error_pos); +char *index_to_kmer(unsigned long long index, long kmer);  unsigned long long * get_kmer_counts_from_file(const char *fn, const int kmer);  // Utility functions  | 
