Commit d16e92cc authored by Steffen Möller's avatar Steffen Möller
Browse files

New upstream version 1.2.12

parent c3ae9084
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
CFLAGS = -Wall -O3 -std=c99
LIBS = align.o alnfrags.o ankers.o assembly.o chain.o compdna.o compkmers.o compress.o decon.o ef.o filebuff.o frags.o hashmap.o hashmapindex.o hashmapkma.o hashmapkmers.o hashtable.o index.o kma.o kmapipe.o kmeranker.o kmers.o kmmap.o loadupdate.o makeindex.o mt1.o nw.o pherror.o printconsensus.o qseqs.o qualcheck.o runinput.o runkma.o sam.o savekmers.o seq2fasta.o seqmenttree.o seqparse.o shm.o sparse.o spltdb.o stdnuc.o stdstat.o tmp.o update.o updateindex.o updatescores.o valueshash.o vcf.o
LIBS = align.o alnfrags.o ankers.o assembly.o chain.o compdna.o compkmers.o compress.o decon.o ef.o filebuff.o frags.o hashmap.o hashmapindex.o hashmapkma.o hashmapkmers.o hashtable.o index.o kma.o kmapipe.o kmeranker.o kmerlink.o kmers.o kmmap.o loadupdate.o makeindex.o mt1.o nw.o pherror.o printconsensus.o qseqs.o qualcheck.o runinput.o runkma.o sam.o savekmers.o seq2fasta.o seqmenttree.o seqparse.o shm.o sparse.o spltdb.o stdnuc.o stdstat.o tmp.o update.o updateindex.o updatescores.o valueshash.o vcf.o
PROGS = kma kma_index kma_shm kma_update

.c .o:
@@ -46,6 +46,7 @@ index.o: index.h compress.h decon.h hashmap.h hashmapkma.h loadupdate.h makeinde
kma.o: kma.h ankers.h assembly.h chain.h hashmapkma.h kmers.h mt1.h penalties.h pherror.h qseqs.h runinput.h runkma.h savekmers.h sparse.h spltdb.h tmp.h version.h
kmapipe.o: kmapipe.h pherror.h
kmeranker.o: kmeranker.h penalties.h
kmerlink.o: kmerlink.h kmeranker.h
kmers.o: kmers.h ankers.h compdna.h hashmapkma.h kmapipe.h pherror.h qseqs.h savekmers.h spltdb.h
kmmap.o: kmmap.h hashmapkma.h
loadupdate.o: loadupdate.h pherror.h hashmap.h hashmapkma.h updateindex.h
+7 −6
Original line number Diff line number Diff line
@@ -210,7 +210,6 @@ AlnScore KMA(const HashMap_index *template_index, const unsigned char *qseq, int
	start = chainSeedsPtr(points, q_len, t_len, kmersize, &aligned->mapQ);
	score = points->score[start];
	
	//fprintf(stderr, "%d\t%d\t%d\t%d\n", t_len, mem_count, aligned->mapQ, score);
	if(aligned->mapQ < mq || score < kmersize) {
		Stat.score = 0;
		Stat.len = 1;
@@ -250,6 +249,8 @@ AlnScore KMA(const HashMap_index *template_index, const unsigned char *qseq, int
				NWstat = NW(template_index->seq, qseq, -1 - (t_s == 0), t_s, t_e, q_s, q_e, Frag_align, matrices);
			} else {
				NWstat = NW_band(template_index->seq, qseq, -1 - (t_s == 0), t_s, t_e, q_s, q_e, Frag_align, band, matrices);
				/* here */
				//NWstat = NW(template_index->seq, qseq, -1 - (t_s == 0), t_s, t_e, q_s, q_e, Frag_align, matrices);
			}
			
			/* trim leading gaps */
@@ -343,7 +344,7 @@ AlnScore KMA(const HashMap_index *template_index, const unsigned char *qseq, int
					NWstat = NW(template_index->seq, qseq, 0, t_s, t_e, q_s, q_e, Frag_align, matrices);
				} else {
					NWstat = NW_band(template_index->seq, qseq, 0, t_s, t_e, q_s, q_e, Frag_align, band, matrices);
					//NWstat = NW(template_index->seq, qseq, 0, t_s, t_e, q_s, q_e, Frag_align);
					//NWstat = NW(template_index->seq, qseq, 0, t_s, t_e, q_s, q_e, Frag_align, matrices);
				}
				
				memcpy(aligned->t + Stat.len, Frag_align->t, NWstat.len);
@@ -377,7 +378,7 @@ AlnScore KMA(const HashMap_index *template_index, const unsigned char *qseq, int
			NWstat = NW(template_index->seq, qseq, 1 + (t_e == t_len), t_s, t_e, q_s, q_e, Frag_align, matrices);
		} else {
			NWstat = NW_band(template_index->seq, qseq, 1 + (t_e == t_len), t_s, t_e, q_s, q_e, Frag_align, band, matrices);
			//NWstat = NW(template_index->seq, qseq, 1 + (t_e == t_len), t_s, t_e, q_s, q_e, Frag_align);
			//NWstat = NW(template_index->seq, qseq, 1 + (t_e == t_len), t_s, t_e, q_s, q_e, Frag_align, matrices);
		}
		/* trim trailing gaps */
		if(t_e == t_len) {
@@ -390,12 +391,12 @@ AlnScore KMA(const HashMap_index *template_index, const unsigned char *qseq, int
				--bias;
			}
			++bias;
			/*
			
			
			if(bias != NWstat.len) {
				NWstat.score -= (W1 + (NWstat.len - bias) * U);
				//NWstat.score -= (W1 + (NWstat.len - bias) * U);
				NWstat.len = bias;
			}
			*/
		}
		
		memcpy(aligned->t + Stat.len, Frag_align->t, NWstat.len);
+4 −3
Original line number Diff line number Diff line
@@ -274,7 +274,6 @@ void * assemble_KMA_threaded(void *arg) {
	
	static volatile int excludeIn[1] = {0}, excludeOut[1] = {0}, excludeMatrix[1] = {0}, mainTemplate = -2, thread_wait = 0;
	static char *template_name;
	static HashMap_index *template_index;
	Assemble_thread *thread = arg;
	int i, j, t_len, aln_len, start, end, bias, myBias, gaps, pos, spin, sam;
	int read_score, depthUpdate, bestBaseScore, bestScore, template, asm_len;
@@ -295,6 +294,7 @@ void * assemble_KMA_threaded(void *arg) {
	AssemInfo *matrix;
	AlnPoints *points;
	NWmat *NWmatrices;
	HashMap_index *template_index;
	
	/* get input */
	template = thread->template;
@@ -317,6 +317,7 @@ void * assemble_KMA_threaded(void *arg) {
	sam = thread->sam;
	spin = thread->spin;
	thread_num = thread->thread_num;
	template_index = thread->template_index;
	
	if(template != -2) {
		/* all assemblies done, 
@@ -331,7 +332,6 @@ void * assemble_KMA_threaded(void *arg) {
		/* Allocate assembly arrays */
		lock(excludeMatrix);
		template_name = thread->template_name;
		template_index = thread->template_index;
		t_len = template_index->len;
		matrix->len = t_len;
		if(matrix->size < (t_len << 1)) {
@@ -552,6 +552,7 @@ void * assemble_KMA_threaded(void *arg) {
								header->seq[header->len - 1] = 0;
								samwrite(qseq, header, 0, template_name, aligned, stats);
							}
							
						} else if(sam) {
							stats[1] = read_score;
							stats[2] = start;
@@ -617,7 +618,6 @@ void * assemble_KMA_threaded(void *arg) {
		
		return NULL;
	}
	
	/* diff */
	/* pre on dense */
	/* Pepare and make alignment on consensus */
@@ -697,6 +697,7 @@ void * assemble_KMA_threaded(void *arg) {
		pos = assembly[pos].next;
	}
	

	/* Trim alignment on consensus */
	coverScore = 0;
	bias = 0;
+57 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h>
#include "compress.h"
#include "hashmap.h"
#include "hashmapkma.h"
@@ -44,6 +45,7 @@ static void mmapinit(HashMapKMA *finalDB, long unsigned size, FILE *out) {
	if(finalDB->exist == MAP_FAILED) {
		ERROR();
	}
	posix_madvise(finalDB->exist, size, POSIX_MADV_SEQUENTIAL);
	*finalDB->exist++ = finalDB->DB_size;
	*finalDB->exist++ = finalDB->kmersize;
	*finalDB->exist++ = finalDB->prefix_len;
@@ -72,8 +74,8 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
	void *data;
	long unsigned i, j, check, size, v_size;
	long unsigned index, t_index, v_index, new_index, null_index;
	unsigned swap, *values;
	short unsigned *values_s;
	unsigned swap, *values, *finalV;
	short unsigned *values_s, *finalV_s;
	HashMapKMA *finalDB;
	ValuesHash *shmValues;
	ValuesTable *node, *next, *table;
@@ -227,6 +229,7 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
						if(finalDB->exist == MAP_FAILED) {
							ERROR();
						}
						posix_madvise(finalDB->exist, size, POSIX_MADV_SEQUENTIAL);
						finalDB->exist_l = (long unsigned *) (finalDB->exist + 3);
						finalDB->exist_l += 5;
						
@@ -470,6 +473,17 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
	/* move values */
	if(finalDB->DB_size < USHRT_MAX) {
		for(node = table; node != 0; node = next) {
			next = node->next;
			values_s = (short unsigned *)(node->values);
			finalV_s = finalDB->values_s + node->v_index - 1;
			i = 2 + *values_s--;
			while(--i) {
				*++finalV_s = *++values_s;
			}
			free(node->values);
			free(node);
			
			/*
			next = node->next;
			values_s = (short unsigned *)(node->values);
			for(i = node->v_index, j = 0; j <= *values_s; ++i, ++j) {
@@ -477,9 +491,21 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
			}
			free(values_s);
			free(node);
			*/
		}
	} else {
		for(node = table; node != 0; node = next) {
			next = node->next;
			values = node->values;
			finalV = finalDB->values + node->v_index - 1;
			i = 2 + *values--;
			while(--i) {
				*++finalV = *++values;
			}
			free(node->values);
			free(node);
			
			/*
			next = node->next;
			values = node->values;
			for(i = node->v_index, j = 0; j <= *values; ++i, ++j) {
@@ -487,6 +513,7 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
			}
			free(values);
			free(node);
			*/
		}
	}
	
@@ -537,8 +564,8 @@ HashMapKMA * compressKMA_DB(HashMap *templates, FILE *out) {
HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
	
	long unsigned i, j, v_index, new_index, null_index, size, v_size;
	unsigned check, swap, *values;
	short unsigned *values_s;
	unsigned check, swap, *values, *finalV;
	short unsigned *values_s, *finalV_s;
	HashMapKMA *finalDB;
	ValuesHash *shmValues;
	ValuesTable *node, *next, *table;
@@ -653,6 +680,7 @@ HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
			if(finalDB->exist == MAP_FAILED) {
				ERROR();
			}
			posix_madvise(finalDB->exist, size, POSIX_MADV_SEQUENTIAL);
			finalDB->exist_l = (long unsigned *) (finalDB->exist + 3);
			finalDB->exist_l += 5;
		} else {
@@ -810,6 +838,7 @@ HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
		if(finalDB->values == MAP_FAILED) {
			ERROR();
		}
		posix_madvise(finalDB->values, size, POSIX_MADV_SEQUENTIAL);
		finalDB->values = ((void *) finalDB->values) + v_size;
		if(finalDB->DB_size < USHRT_MAX) {
			finalDB->values_s = (short unsigned *) finalDB->values;
@@ -819,6 +848,17 @@ HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
	/* move values */
	if(finalDB->DB_size < USHRT_MAX) {
		for(node = table; node != 0; node = next) {
			next = node->next;
			values_s = (short unsigned *)(node->values);
			finalV_s = finalDB->values_s + node->v_index - 1;
			i = 2 + *values_s--;
			while(--i) {
				*++finalV_s = *++values_s;
			}
			free(node->values);
			free(node);
			
			/*
			next = node->next;
			values_s = (short unsigned *)(node->values);
			for(i = node->v_index, j = 0; j <= *values_s; ++i, ++j) {
@@ -826,9 +866,21 @@ HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
			}
			free(values_s);
			free(node);
			*/
		}
	} else {
		for(node = table; node != 0; node = next) {
			next = node->next;
			values = node->values;
			finalV = finalDB->values + node->v_index - 1;
			i = 2 + *values--;
			while(--i) {
				*++finalV = *++values;
			}
			free(node->values);
			free(node);
			
			/*
			next = node->next;
			values = node->values;
			for(i = node->v_index, j = 0; j <= *values; ++i, ++j) {
@@ -836,6 +888,7 @@ HashMapKMA * compressKMA_megaDB(HashMap *templates, FILE *out) {
			}
			free(values);
			free(node);
			*/
		}
	}
	/* dump final DB */
+31 −10
Original line number Diff line number Diff line
@@ -37,17 +37,26 @@ typedef int key_t;
void (*destroyPtr)(HashMap_index *) = &alignClean;
HashMap_index * (*alignLoadPtr)(HashMap_index *, int, int, int, int, long unsigned, long unsigned) = &alignLoad_fly;

void hashMap_index_initialize(HashMap_index *dest, int len, int kmerindex) {
int hashMap_index_initialize(HashMap_index *dest, int len, int kmerindex) {
	
	dest->len = len;
	dest->size = len << 1;
	dest->kmerindex = kmerindex;
	
	if(dest->size < (len << 1)) {
		if(dest->size) {
			free(dest->index);
			free(dest->seq);
		}
		dest->size = len << 1;
		dest->index = calloc(dest->size, sizeof(int));
		dest->seq = malloc(((len >> 5) + 1) * sizeof(long unsigned));
		if(!dest->index || !dest->seq) {
			ERROR();
		}
		
		return 0;
	}
	
	return 1;
}

void hashMap_index_set(HashMap_index *dest) {
@@ -248,8 +257,13 @@ HashMap_index * hashMap_index_load(HashMap_index *src, int seq, int index, int l
	
	if(src == 0) {
		src = smalloc(sizeof(HashMap_index));
		src->size = 0;
	}
	if(hashMap_index_initialize(src, len, kmersize)) {
		src->size = len << 1;
		memset(src->index, 0, src->size * sizeof(int));
	}
	hashMap_index_initialize(src, len, kmersize);
	
	read(seq, src->seq, ((src->len >> 5) + 1) * sizeof(long unsigned));
	read(index, src->index, src->size * sizeof(int));
	
@@ -267,8 +281,13 @@ HashMap_index * hashMap_index_build(HashMap_index *src, int seq, int len, int km
	
	if(src == 0) {
		src = smalloc(sizeof(HashMap_index));
		src->size = 0;
	}
	
	if(hashMap_index_initialize(src, len, kmersize)) {
		memset(src->index, 0, src->size * sizeof(int));
	}
	hashMap_index_initialize(src, len, kmersize);
	
	shifter = sizeof(long unsigned) * sizeof(long unsigned) - (src->kmerindex << 1);
	
	read(seq, src->seq, ((src->len >> 5) + 1) * sizeof(long unsigned));
@@ -375,10 +394,12 @@ HashMap_index * alignLoad_shm_initial(char *templatefilename, int file_len, int
}

void alignClean(HashMap_index *template_index) {
	
	/* Overwrite later */
	/*
	if(template_index) {
		hashMap_index_destroy(template_index);
	}
	*/
}

void alignClean_shm(HashMap_index *template_index) {
Loading