예제 #1
0
int main (int argc, char** argv) {
	if (argc != 7) usage(argc, argv);

	string fasta_filename    = argv[1];
	string masks_filename    = argv[2];
	string scov_filename     = argv[3];
	out_file                 = argv[4];
	window_size              = atoi(argv[5]);
	num_bins                 = atoi(argv[6]);

	//fprintf(stderr,"Using window_size %d, num_bins %d\n",window_size,num_bins);

	double bins_lambdas[num_bins];
	sequence = read_genome(fasta_filename); //read in fasta file
	//printf("Read in %d chars from %s\n",sequence_length,fasta_filename);

	ifstream inf;
	open_file_binary(inf, scov_filename);
	scov = new double[sequence.length()];
	inf.read((char *) scov, sizeof(double) * sequence.length());
	inf.close();

	//read in the masks
	open_file_binary(inf, masks_filename);
	masks = new char[sequence.length()];
	if (masks ==NULL) {
		fprintf(stderr,"Problem with allocating memory!\n");
		exit(1);
	}
	inf.read(masks, sequence.length());
	inf.close();


	build_gc_bins(bins_lambdas);
	delete[] scov;
	delete[] masks;

	return 0;

}
예제 #2
0
int main (int argc, char** argv) {
	if (argc != 5) usage(argc, argv);

	string rmap_filename = argv[1];
	string scov_filename = argv[2];
	string ref_name = argv[3];
	uint64_t ref_len = atol(argv[4]);
	
	double * sum_normodds = new double[ref_len];
	for (int i = 0; i < ref_len; i++) sum_normodds[i] = 0;

	//Read in rmap file
	ifstream inf;
	open_file_binary(inf, rmap_filename);
	Map_t mapt;
	while (inf) {
		inf.read((char*) & mapt, sizeof(mapt));
		if (mapt.ref_name == ref_name) {
			if (mapt.ref_pos > ref_len) {
				cerr << argv[0] << ": Error, out of range position " << mapt.ref_pos << " on ref " << ref_name << " of size " << ref_len << ".\n";
				exit(1);
			}
			sum_normodds[mapt.ref_pos - 1] += mapt.normodds;
		}
	}
	inf.close();

	//Write out scov file
	ofstream outf;
	open_file_binary(outf, scov_filename);
	outf.write((char*) sum_normodds, ref_len * sizeof(double));
	if (outf.bad()) {
		cerr << argv[0] << ": Error writing scov file " << scov_filename << ".\n";
		exit(1);
	}
	outf.close();
	delete[] sum_normodds;
	return 0;
}