diff --git a/src/util/makepaddedseqdb.cpp b/src/util/makepaddedseqdb.cpp index de2224159..6239fe226 100644 --- a/src/util/makepaddedseqdb.cpp +++ b/src/util/makepaddedseqdb.cpp @@ -5,6 +5,25 @@ #include "Util.h" int makepaddedseqdb(int argc, const char **argv, const Command &command) { + const char AA_TO_20[256] = { + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 0, 20, 4, 3, 6, 13, 7, 8, 9, 20, 11, 10, 12, 2, 20, + 14, 5, 1, 15, 16, 20, 19, 17, 20, 18, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 + }; + Parameters &par = Parameters::getInstance(); par.parseParameters(argc, argv, command, true, 0, 0); DBReader dbr(par.db1.c_str(), par.db1Index.c_str(), 1, @@ -19,11 +38,15 @@ int makepaddedseqdb(int argc, const char **argv, const Command &command) { char *data = dbr.getData(id, 0); size_t seqLen = dbr.getSeqLen(id); const size_t sequencepadding = (seqLen % ALIGN == 0) ? 0 : ALIGN - seqLen % ALIGN; - result.append(data, seqLen); - result.append(sequencepadding, ' '); - writer.writeData(data, seqLen + sequencepadding, key, 0, false); + for (size_t i = 0; i < seqLen; i++) { + result.append(1, AA_TO_20[(unsigned char)data[i]]); + } + result.append(sequencepadding, static_cast(20)); + writer.writeData(result.c_str(), result.size(), key, 0, false, false); + writer.writeIndexEntry(key, writer.getStart(0), seqLen, 0); + result.clear(); } - writer.close(true); + writer.close(true, false); DBReader::softlinkDb(par.db1, par.db2, DBFiles::SEQUENCE_ANCILLARY); dbr.close();