Commit 9e3b41dd authored by Michael R. Crusoe's avatar Michael R. Crusoe 🏳️‍🌈
Browse files

New upstream version 0.15.0+dfsg

parent 100ae745
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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>
@@ -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());
@@ -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_;
@@ -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_;
};


+24 −7
Original line number Diff line number Diff line
@@ -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);
@@ -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;

@@ -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]);
@@ -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);
@@ -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);