Esempio n. 1
0
void test_seq_nonacgt(){
	seq_t S;

	seq_init( &S, "11ACGTNN7682394689NNTGCA11", "name");
	seq_subject_init( &S);

	g_assert_cmpstr(S.S, ==, "ACGTTGCA");
	g_assert_cmpuint(S.len, ==, 8 );
	g_assert( FLAGS & F_NON_ACGT);

	g_assert_cmpstr(S.RS, ==, "TGCAACGT#ACGTTGCA");
	g_assert_cmpuint(S.RSlen, ==, 8*2+1);
	g_assert( S.gc == 0.5);

	seq_free( &S);

	FLAGS = F_NONE;

	seq_init( &S, "@ACGT_!0TGCA        ", "name");
	seq_subject_init( &S);

	g_assert_cmpstr(S.S, ==, "ACGT!TGCA");
	g_assert_cmpuint(S.len, ==, 9 );
	g_assert( FLAGS & F_NON_ACGT);

	g_assert_cmpstr(S.RS, ==, "TGCA;ACGT#ACGT!TGCA");
	g_assert_cmpuint(S.RSlen, ==, 9*2+1);

	seq_free( &S);

	FLAGS = F_NONE;

}
Esempio n. 2
0
void test_seq_full(){

	seq_t S;

	seq_init( &S, "ACGTTGCA", "name");
	int check = seq_subject_init( &S);

	g_assert_cmpint(check, ==, 0);

	g_assert_cmpstr(S.RS, ==, "TGCAACGT#ACGTTGCA");
	g_assert_cmpuint(S.RSlen, ==, 8*2+1);
	g_assert( S.gc == 0.5);

	seq_free( &S);
}
Esempio n. 3
0
/**
 * @param sequences - An array of pointers to the sequences.
 * @param n - The number of sequences.
 */
void run(seq_t *sequences, size_t n) {
	seq_t *subject = &sequences[0];
	esa_s E;

	if (seq_subject_init(subject) || esa_init(&E, subject)) {
		errx(1, "Failed to create index for %s.", subject->name);
	}

	size_t i = 0;
	// now compare every other sequence to the subject
	for (size_t j = 0; j < n; j++) {
		if (j == i) {
			continue;
		}

		// TODO: Provide a nicer progress indicator.
		if (FLAGS & F_EXTRA_VERBOSE) {
#pragma omp critical
			{ fprintf(stderr, "comparing %zu and %zu\n", i, j); }
		}

		size_t ql = sequences[j].len;

		if (FLAGS & F_FORWARD) {
			printf("> %s\n", sequences[j].name);
			dist_anchor(&E, sequences[j].S, ql, subject->gc);
		}

		if (FLAGS & F_REVCOMP) {
			char *R = revcomp(sequences[j].S, ql);

			printf("> %s Reverse\n", sequences[j].name);
			dist_anchor(&E, R, ql, subject->gc);
			free(R);
		}
	}

	esa_free(&E);
	seq_subject_free(subject);
}