Example #1
0
int main(int argc, char *argv[])
{
	int c, ec_k = -1, unitig_k = -1;
	char *seq, *qual;
	FILE *fp;
	int64_t l;
	while ((c = getopt(argc, argv, "k:l:")) >= 0) {
		switch (c) {
			case 'k': ec_k = atoi(optarg); break;
			case 'l': unitig_k = atoi(optarg); break;
		}
	}
	if (optind + 1 >= argc) {
		fprintf(stderr, "Local assembler for small peak regions. Output cleaned unitigs.\nUsage: SAPPER_fermi [-k ecKmer] [-l utgKmer] <in.fq> <out.fq>\n");
		return 1;
	}
	fp = fopen( argv[optind+1], "wb");
	l = fm6_api_readseq(argv[optind], &seq, &qual);
	fm6_api_correct(ec_k, l, seq, qual);
	mag_t *g;
	free(qual);
	g = fm6_api_unitig(unitig_k, l, seq);
	magopt_t *opt = mag_init_opt();
	//opt->flag |= MOG_F_AGGRESSIVE | MOG_F_CLEAN;
	opt->flag |= MOG_F_CLEAN;
	opt->min_merge_len = 30;
	mag_g_clean(g, opt);
	free(opt);
	mag_g_fprint(g, fp);
	mag_g_destroy(g);
	free(seq);
	return 0;
}
Example #2
0
void fml_mag_clean(const fml_opt_t *opt, struct mag_t *g)
{
	magopt_t o = opt->mag_opt;
	o.min_merge_len = opt->min_merge_len;
	mag_g_merge(g, 1, opt->min_merge_len);
	mag_g_clean(g, &o);
	mag_g_trim_open(g, &o);
}