void Aligner::setMasterDR(std::string& master) { AL_masterDRToken = mStringCheck->getToken(master); AL_Offsets[AL_masterDRToken] = (int)(AL_length * CRASS_DEF_CONS_ARRAY_START); prepareMasterForAlignment(master); placeReadsInCoverageArray(AL_masterDRToken); calculateDRZone(); }
void Aligner::setMasterDR(StringToken master) { AL_masterDRToken = master; std::string master_string = mStringCheck->getString(AL_masterDRToken); if (AL_masterDRToken == 0) { // could not be found, through exception logError("cannot find the token for DR string "<< master_string); } AL_Offsets[AL_masterDRToken] = (int)(AL_length * CRASS_DEF_CONS_ARRAY_START); prepareMasterForAlignment(master_string); placeReadsInCoverageArray(AL_masterDRToken); calculateDRZone(); }
void Aligner::alignSlave(StringToken& slaveDRToken) { AL_Offsets[slaveDRToken] = -1; std::string slaveDR = mStringCheck->getString(slaveDRToken); AlignerFlag_t flags; int offset = getOffsetAgainstMaster(slaveDR, flags); if (flags[score_equal]) { std::string extended_slave_dr; extendSlaveDR(slaveDR, extended_slave_dr); flags.reset(); offset = getOffsetAgainstMaster(extended_slave_dr, flags); if (flags[score_equal]) { logWarn("Alignment Warning: Extended Slave scores equal",4); logWarn("\tCannot place slave: "<<slaveDR<<" ("<<slaveDRToken<<") in array", 4); logWarn("\tOriginal slave: "<<slaveDR, 4); logWarn("\tExtended Slave: "<<extended_slave_dr, 4); logWarn("\tMaster: "<<mStringCheck->getString(AL_masterDRToken), 4); logWarn("******", 4); flags[failed] = true; } } if (flags[failed]) { if(! flags[score_equal]){ logWarn("Alignment Warning: Alignment failed", 4); logWarn("\tCannot place slave: "<<slaveDR<<" ("<<slaveDRToken<<") in array", 4); logWarn("\tMaster: "<<mStringCheck->getString(AL_masterDRToken), 4); logWarn("******", 4); } return; } if (flags[reversed] ) { // we need to reverse all the reads and the DR for these reads try { ReadListIterator read_iter = mReads->at(slaveDRToken)->begin(); while (read_iter != mReads->at(slaveDRToken)->end()) { (*read_iter)->reverseComplementSeq(); read_iter++; } } catch(crispr::exception& e) { std::cerr<<e.what()<<std::endl; throw crispr::exception(__FILE__, __LINE__, __PRETTY_FUNCTION__, "cannot reverse complement sequence"); } // fix the places where the DR is stored slaveDR = reverseComplement(slaveDR); StringToken st = mStringCheck->addString(slaveDR); (*mReads)[st] = (*mReads)[slaveDRToken]; (*mReads)[slaveDRToken] = NULL; slaveDRToken = st; } //std::cerr << AL_Offsets[AL_masterDRToken] + offset <<std::endl; AL_Offsets[slaveDRToken] = AL_Offsets[AL_masterDRToken] + offset; placeReadsInCoverageArray(slaveDRToken); }