Exemple #1
0
void MciPlayer::playInSeperateThread(const string& fileName)
{
	std::thread bgm( &MciPlayer::play, this, fileName );
	bgm.detach();
}
Exemple #2
0
int main(int argc, const char* argv[])
{
	size_t tex_side =(argc>1)? std::atoi(argv[1]) : 512;
	const char* font_desc_str = (argc>2)? argv[2] : "Sans 18";
	unsigned plane = (argc>3)? std::atoi(argv[3]) : 0;

	cairo_surface_t *surface = cairo_image_surface_create(
		CAIRO_FORMAT_A8,
		tex_side,
		tex_side
	);
	cairo_t *cr = cairo_create(surface);

	PangoFontDescription *font_desc = pango_font_description_from_string(
		font_desc_str
	);
	PangoFontMap* font_map = pango_cairo_font_map_get_default();
	PangoContext* context = pango_font_map_create_context(font_map);
	PangoFont* font = pango_font_map_load_font(
		font_map,
		context,
		font_desc
	);
	PangoFontMetrics* font_metrics = pango_font_get_metrics(font, nullptr);

	// The Bitmap Glyph Metrics file
	std::ofstream bgm((argc>5) ? argv[5] : "out.bgm");
	unsigned step = tex_side / 16;
	for(unsigned y=0; y!=16; ++y)
	{
		for(unsigned x=0; x!=16; ++x)
		{
			render_glyph(
				cr,
				font_desc,
				font,
				256*plane + y*16 + x,
				x, y,
				step,
				tex_side,
				pango_font_metrics_get_ascent(font_metrics),
				pango_font_metrics_get_descent(font_metrics),
				bgm
			);
		}
	}
	bgm.close();

	pango_font_metrics_unref(font_metrics);
	pango_font_description_free(font_desc);
	g_object_unref(context);


	cairo_destroy(cr);
	cairo_status_t status = cairo_surface_write_to_png(
		surface,
		(argc>4) ? argv[4] : "out.png"
	);
	cairo_surface_destroy(surface);

	return 0;
}
Exemple #3
0
int main(int argc, const char* argv[]) {
	if(argc != 6) {
		cerr << "Usage:\n";
		cerr << "scanmot <ace_file> <motif_number> <sequence_file> <output_file> <max_sites>\n";
		exit(0);
	}

	string ace_file(argv[1]);
	string motnum(argv[2]);
	string seq_file(argv[3]);
	string out_file(argv[4]);
	unsigned int ms = atoi(argv[5]);

	// Read sequences and create background model
	vector<string> seqs, nameset;
	get_fasta_fast(seq_file.c_str(), seqs, nameset, 12);
	Seqset scan_sseq(seqs);
	BGModel bgm(scan_sseq, 0.5);

	// Read motif from ACE file
	vector<string> hits;
	string line;
	ifstream acein(ace_file.c_str());
	bool found = false;
	while(acein.good()) {
		getline(acein, line);
		istringstream iss(line);
		vector<string> fields;
		copy(istream_iterator<string>(iss),
					istream_iterator<string>(),
					back_inserter<vector<string> >(fields));
		if(found) {
			if(line[0] != '*') {
				hits.push_back(fields[0]);
			} else {
				break;
			}
		} else {
			if(fields.size() > 0 
				&& (fields[0].compare("Motif") == 0)
				&& (fields[1].compare(motnum) == 0)) {
				found = true;
			}
		}
	}
	if(! found) {
		cerr << "Motif number " << motnum << " not found in ACE file '" << ace_file << "'\n";
		exit(1);
	}
	Seqset ace_sseq(hits);
	Motif mot(ace_sseq, 12, bgm.gcgenome());
	mot.clear_cols();
	for(unsigned int i = 0; i < line.length(); i++) {
		if(line[i] == '*') mot.add_col(i);
	}
	for(unsigned int i = 0; i < hits.size(); i++) {
		mot.add_site(i, 0, 1);
	}
	acein.close();

	// Scan sequences
	SiteHeap sh(ms);
	double* sm = new double[mot.ncols() * 4];
	double* am = new double[mot.ncols()];
	mot.calc_score_matrix(sm, am);
	int width = mot.get_width();
	int n = 0;
	double msc, bsc, scw, scc;
	for(int c = 0; c < scan_sseq.num_seqs(); c++) {
		for(int p = 0; p < scan_sseq.len_seq(c) - width; p++) {
			msc = mot.score_site(scan_sseq, sm, am, c, p, 1);
			bsc = bgm.score_site(mot, c, p, 1);
			scw = msc - bsc;
			// cerr << c << '\t' << p << '\t' << seqs[c].substr(p, width) << '\t' << 1 << '\t' << setprecision(4) << msc << '\t' << bsc << '\t' << scw << '\n'; 
			ScoredSite ssw(scw, c, p, 1);
			sh.add(ssw);
			msc = mot.score_site(scan_sseq, sm, am, c, p, 0);
			bsc = bgm.score_site(mot, c, p, 0);
			scc = msc - bsc;
			// cerr << c << '\t' << p << '\t' << seqs[c].substr(p, width) << '\t' << 0 << '\t' << setprecision(4) << msc << '\t' << bsc << '\t' << scc << '\n';
			ScoredSite ssc(scc, c, p, 0);
			sh.add(ssc);
			n += 2;
		}
	}
	delete [] sm;

	// Print out the sites
	ofstream scout(out_file.c_str());
	for(int i = 0; i < sh.sitecount(); i++) {
		ScoredSite bestss = sh.get_site(i);
		scout << nameset[bestss.site.chrom()] << '\t';
		scout << bestss.site.posit() << '\t';
		scout << bestss.site.posit() + width - 1 << '\t';
		scout << bestss.site.strand() << "\t";
		if(bestss.site.strand())
			scout << seqs[bestss.site.chrom()].substr(bestss.site.posit(), width) << '\t';
		else
			scout << reverse_comp(seqs[bestss.site.chrom()].substr(bestss.site.posit(), width)) << '\t';
		scout << bestss.score << '\n';
	}
	scout.close();
}