1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
//
// Starter_Banks.cpp
//
//
// Created by Pierre Peterlongo on 25/10/2012
//
#include <iostream>
#include "Starter_Bank.h"
extern int size_seeds;
Starter_Bank::Starter_Bank(Fragment_Bank *fragment_bank){
for (int i=0;i<fragment_bank->all_fragments.size();i++){
starter_bank.push_back(new Starter(fragment_bank->all_fragments[i]));
}
}
Starter_Bank::~Starter_Bank(){
starter_bank.clear();
}
Extension_Bank * Starter_Bank::generate_all_substarters(const int min_coverage, const int substitutions_allowed, const int error_correction_threshold, const int size_kmers){
Extension_Bank * extension_bank = new Extension_Bank();
for(int i=0; i<starter_bank.size();i++){
starter_bank[i]->generate_substarters(extension_bank, substitutions_allowed, min_coverage, error_correction_threshold, size_kmers);
// fprintf(stderr, "found %d result(s) for starter %s with min coverage %d and %d substitutions allowed\n", res, starter_bank[i]->fragment->fragment_sequence, min_coverage, substitutions_allowed);
}
return extension_bank;
}
Extension_Bank * Starter_Bank::generate_all_substarter_nomapping(const int size_kmers){
Extension_Bank * extension_bank = new Extension_Bank();
for(int i=0; i<starter_bank.size();i++){
starter_bank[i]->generate_substarter_no_mapping(extension_bank, size_kmers);
}
return extension_bank;
}
void Starter_Bank::format_results(const int extension_type, Extension_Bank * extension_bank, string prefix_name){
bool is_graph;
if(extension_type==3 || extension_type==4) is_graph=true;
else is_graph = false;
if(is_graph){
id_els first_id_els = {};
// GraphOutput graph = GraphOutput(prefix_name,2); // 2 = XML format
GraphOutput graph = GraphOutput(prefix_name,3); // 3 = Json format
for(int i=0; i<starter_bank.size();i++){
starter_bank[i]->starter_output_graph(extension_bank,graph, first_id_els);
graph.print_starter_head(i, (starter_bank[i]->fragment)->fragment_sequence);
}
graph.close();
}
else{
string starter_head;
bool erase = true;
for(int i=0; i<starter_bank.size();i++){
starter_bank[i]->starter_output_sequence(extension_bank, i, prefix_name+string(".fasta"), erase);
erase = false;
}
}
}
|