Loading include/IndexHeader.hpp +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ class IndexHeader { ar( cereal::make_nvp("NameHash", nameHash256_) ); ar( cereal::make_nvp("SeqHash512", seqHash512_) ); ar( cereal::make_nvp("NameHash512", nameHash512_) ); ar( cereal::make_nvp("DecoySeqHash", decoySeqHash256_) ); ar( cereal::make_nvp("DecoyNameHash", decoyNameHash256_) ); } template <typename Archive> Loading @@ -69,6 +71,8 @@ class IndexHeader { ar( cereal::make_nvp("NameHash", nameHash256_) ); ar( cereal::make_nvp("SeqHash512", seqHash512_) ); ar( cereal::make_nvp("NameHash512", nameHash512_) ); ar( cereal::make_nvp("DecoySeqHash", decoySeqHash256_) ); ar( cereal::make_nvp("DecoyNameHash", decoyNameHash256_) ); } catch (const cereal::Exception& e) { auto cerrLog = spdlog::get("stderrLog"); cerrLog->error("Encountered exception [{}] when loading index.", e.what()); Loading @@ -91,10 +95,16 @@ class IndexHeader { std::string seqHash256() const { return seqHash256_; } std::string nameHash256() const { return nameHash256_; } void setDecoySeqHash256(const std::string& seqHash) { decoySeqHash256_ = seqHash; } void setDecoyNameHash256(const std::string& nameHash) { decoyNameHash256_ = nameHash; } std::string decoySeqHash256() const { return decoySeqHash256_; } std::string decoyNameHash256() const { return decoyNameHash256_; } void setSeqHash512(const std::string& seqHash) { seqHash512_ = seqHash; } void setNameHash512(const std::string& nameHash) { nameHash512_ = nameHash; } std::string seqHash512() const { return seqHash512_; } std::string nameHash512() const { return nameHash512_; } private: // The type of index we have IndexType type_; Loading @@ -117,6 +127,10 @@ class IndexHeader { std::string seqHash512_; // Hash of sequence names in txome std::string nameHash512_; // Hash of the names of decoys std::string decoyNameHash256_; // Hash of the sequences of decoys std::string decoySeqHash256_; }; Loading src/RapMapSAIndexer.cpp +24 −7 Original line number Diff line number Diff line Loading @@ -465,8 +465,11 @@ void indexTranscriptsSA(ParserT* parser, digestpp::sha256 nameHasher256; digestpp::sha512 seqHasher512; digestpp::sha512 nameHasher512; //picosha2::hash256_one_by_one seqHasher; seqHasher.init(); //picosha2::hash256_one_by_one nameHasher; nameHasher.init(); digestpp::sha256 decoySeqHasher256; digestpp::sha256 decoyNameHasher256; bool firstRecord{true}; bool hasGencodeSep = (sepStr.find('|') != std::string::npos); Loading Loading @@ -536,9 +539,6 @@ void indexTranscriptsSA(ParserT* parser, [](const char a) -> bool { return !(isprint(a)); }), readStr.end()); seqHasher256.absorb(readStr.begin(), readStr.end()); seqHasher512.absorb(readStr.begin(), readStr.end()); uint32_t readLen = readStr.size(); uint32_t completeLen = readLen; Loading Loading @@ -573,6 +573,14 @@ void indexTranscriptsSA(ParserT* parser, //throw std::logic_error("Input fasta file contained out-of-order decoy targets."); } // If this was a decoy, add it to the decoy hash if (isDecoy) { decoySeqHasher256.absorb(readStr.begin(), readStr.end()); } else { // otherwise the ref hash seqHasher256.absorb(readStr.begin(), readStr.end()); seqHasher512.absorb(readStr.begin(), readStr.end()); } // First, replace non ATCG nucleotides for (size_t b = 0; b < readLen; ++b) { readStr[b] = ::toupper(readStr[b]); Loading Loading @@ -656,8 +664,12 @@ void indexTranscriptsSA(ParserT* parser, // If there was no collision, then add the transcript transcriptNames.emplace_back(processedName); if (isDecoy) { decoyNameHasher256.absorb(processedName.begin(), processedName.end()); } else { nameHasher256.absorb(processedName.begin(), processedName.end()); nameHasher512.absorb(processedName.begin(), processedName.end()); } // The position at which this transcript starts transcriptStarts.push_back(currIndex); Loading Loading @@ -869,10 +881,15 @@ void indexTranscriptsSA(ParserT* parser, std::string nameHash256 = nameHasher256.hexdigest(); std::string seqHash512 = seqHasher512.hexdigest(); std::string nameHash512 = nameHasher512.hexdigest(); std::string decoySeqHash256 = decoySeqHasher256.hexdigest(); std::string decoyNameHash256 = decoyNameHasher256.hexdigest(); header.setSeqHash256(seqHash256); header.setNameHash256(nameHash256); header.setSeqHash512(seqHash512); header.setNameHash512(nameHash512); header.setDecoySeqHash256(decoySeqHash256); header.setDecoyNameHash256(decoyNameHash256); //std::string seqHash; //std::string nameHash; //picosha2::get_hash_hex_string(seqHasher, seqHash); Loading Loading
include/IndexHeader.hpp +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ class IndexHeader { ar( cereal::make_nvp("NameHash", nameHash256_) ); ar( cereal::make_nvp("SeqHash512", seqHash512_) ); ar( cereal::make_nvp("NameHash512", nameHash512_) ); ar( cereal::make_nvp("DecoySeqHash", decoySeqHash256_) ); ar( cereal::make_nvp("DecoyNameHash", decoyNameHash256_) ); } template <typename Archive> Loading @@ -69,6 +71,8 @@ class IndexHeader { ar( cereal::make_nvp("NameHash", nameHash256_) ); ar( cereal::make_nvp("SeqHash512", seqHash512_) ); ar( cereal::make_nvp("NameHash512", nameHash512_) ); ar( cereal::make_nvp("DecoySeqHash", decoySeqHash256_) ); ar( cereal::make_nvp("DecoyNameHash", decoyNameHash256_) ); } catch (const cereal::Exception& e) { auto cerrLog = spdlog::get("stderrLog"); cerrLog->error("Encountered exception [{}] when loading index.", e.what()); Loading @@ -91,10 +95,16 @@ class IndexHeader { std::string seqHash256() const { return seqHash256_; } std::string nameHash256() const { return nameHash256_; } void setDecoySeqHash256(const std::string& seqHash) { decoySeqHash256_ = seqHash; } void setDecoyNameHash256(const std::string& nameHash) { decoyNameHash256_ = nameHash; } std::string decoySeqHash256() const { return decoySeqHash256_; } std::string decoyNameHash256() const { return decoyNameHash256_; } void setSeqHash512(const std::string& seqHash) { seqHash512_ = seqHash; } void setNameHash512(const std::string& nameHash) { nameHash512_ = nameHash; } std::string seqHash512() const { return seqHash512_; } std::string nameHash512() const { return nameHash512_; } private: // The type of index we have IndexType type_; Loading @@ -117,6 +127,10 @@ class IndexHeader { std::string seqHash512_; // Hash of sequence names in txome std::string nameHash512_; // Hash of the names of decoys std::string decoyNameHash256_; // Hash of the sequences of decoys std::string decoySeqHash256_; }; Loading
src/RapMapSAIndexer.cpp +24 −7 Original line number Diff line number Diff line Loading @@ -465,8 +465,11 @@ void indexTranscriptsSA(ParserT* parser, digestpp::sha256 nameHasher256; digestpp::sha512 seqHasher512; digestpp::sha512 nameHasher512; //picosha2::hash256_one_by_one seqHasher; seqHasher.init(); //picosha2::hash256_one_by_one nameHasher; nameHasher.init(); digestpp::sha256 decoySeqHasher256; digestpp::sha256 decoyNameHasher256; bool firstRecord{true}; bool hasGencodeSep = (sepStr.find('|') != std::string::npos); Loading Loading @@ -536,9 +539,6 @@ void indexTranscriptsSA(ParserT* parser, [](const char a) -> bool { return !(isprint(a)); }), readStr.end()); seqHasher256.absorb(readStr.begin(), readStr.end()); seqHasher512.absorb(readStr.begin(), readStr.end()); uint32_t readLen = readStr.size(); uint32_t completeLen = readLen; Loading Loading @@ -573,6 +573,14 @@ void indexTranscriptsSA(ParserT* parser, //throw std::logic_error("Input fasta file contained out-of-order decoy targets."); } // If this was a decoy, add it to the decoy hash if (isDecoy) { decoySeqHasher256.absorb(readStr.begin(), readStr.end()); } else { // otherwise the ref hash seqHasher256.absorb(readStr.begin(), readStr.end()); seqHasher512.absorb(readStr.begin(), readStr.end()); } // First, replace non ATCG nucleotides for (size_t b = 0; b < readLen; ++b) { readStr[b] = ::toupper(readStr[b]); Loading Loading @@ -656,8 +664,12 @@ void indexTranscriptsSA(ParserT* parser, // If there was no collision, then add the transcript transcriptNames.emplace_back(processedName); if (isDecoy) { decoyNameHasher256.absorb(processedName.begin(), processedName.end()); } else { nameHasher256.absorb(processedName.begin(), processedName.end()); nameHasher512.absorb(processedName.begin(), processedName.end()); } // The position at which this transcript starts transcriptStarts.push_back(currIndex); Loading Loading @@ -869,10 +881,15 @@ void indexTranscriptsSA(ParserT* parser, std::string nameHash256 = nameHasher256.hexdigest(); std::string seqHash512 = seqHasher512.hexdigest(); std::string nameHash512 = nameHasher512.hexdigest(); std::string decoySeqHash256 = decoySeqHasher256.hexdigest(); std::string decoyNameHash256 = decoyNameHasher256.hexdigest(); header.setSeqHash256(seqHash256); header.setNameHash256(nameHash256); header.setSeqHash512(seqHash512); header.setNameHash512(nameHash512); header.setDecoySeqHash256(decoySeqHash256); header.setDecoyNameHash256(decoyNameHash256); //std::string seqHash; //std::string nameHash; //picosha2::get_hash_hex_string(seqHasher, seqHash); Loading