File: BuildSequenceDB.cpp

package info (click to toggle)
blasr 5.3.5%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,196 kB
  • sloc: cpp: 8,412; ansic: 806; python: 331; sh: 178; java: 158; makefile: 36
file content (51 lines) | stat: -rw-r--r-- 1,635 bytes parent folder | download | duplicates (4)
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
#include <string>

#include <alignment/utils/FileOfFileNames.hpp>
#include <pbdata/CommandLineParser.hpp>
#include <pbdata/FASTAReader.hpp>
#include <pbdata/metagenome/SequenceIndexDatabase.hpp>
#include <pbdata/utils.hpp>

int main(int argc, char* argv[])
{

    CommandLineParser clp;
    std::string fastaFileName, indexFileName;
    std::vector<std::string> fastaFileNames;
    std::vector<std::string> opts;
    clp.SetProgramName("bsdb");
    clp.SetProgramSummary(
        "Build an index database on a file of sequences.\n"
        " The index is used to map to reads given alignment positions.\n");
    clp.RegisterStringOption("fasta", &fastaFileName, "A file with sequences to build an index.");
    clp.RegisterStringOption("index", &indexFileName, "The index file.");
    clp.RegisterPreviousFlagsAsHidden();

    clp.ParseCommandLine(argc, argv, opts);

    std::ifstream fastaIn;
    std::ofstream indexOut;

    if (FileOfFileNames::IsFOFN(fastaFileName)) {
        FileOfFileNames::FOFNToList(fastaFileName, fastaFileNames);
    } else {
        fastaFileNames.push_back(fastaFileName);
    }

    CrucialOpen(indexFileName, indexOut, std::ios::out | std::ios::binary);
    SequenceIndexDatabase<FASTASequence> seqDB;

    for (size_t fileNameIndex = 0; fileNameIndex < fastaFileNames.size(); fileNameIndex++) {
        FASTAReader reader;
        FASTASequence seq;
        reader.Init(fastaFileNames[fileNameIndex]);
        int i = 0;
        while (reader.GetNext(seq)) {
            seqDB.AddSequence(seq);
            i++;
        }
    }
    seqDB.Finalize();
    seqDB.WriteDatabase(indexOut);
    return 0;
}