File: AlignmentSetImpl.hpp

package info (click to toggle)
pbseqlib 5.3.1%2Bdfsg-2.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,136 kB
  • sloc: cpp: 77,246; python: 570; makefile: 312; sh: 111; ansic: 9
file content (33 lines) | stat: -rw-r--r-- 1,427 bytes parent folder | download | duplicates (5)
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
#include <pbdata/sam/AlignmentSet.hpp>

template <typename T_ReferenceSequence, typename T_ReadGroup, typename T_Alignment>
void AlignmentSet<T_ReferenceSequence, T_ReadGroup, T_Alignment>::RearrangeReferences(
    std::vector<FASTASequence> &fastaReferences)
{
    size_t i = 0;
    std::map<std::string, int> fastaRefToIndex;
    std::map<std::string, int>::iterator it;
    for (i = 0; i < fastaReferences.size(); i++) {
        it = fastaRefToIndex.find(fastaReferences[i].GetName());
        if (it != fastaRefToIndex.end()) {
            std::cout << "Error, reference with name \"" << fastaReferences[i].GetName()
                      << "\" in the reference genome is not unique" << std::endl;
            std::exit(EXIT_FAILURE);
        }
        fastaRefToIndex[fastaReferences[i].GetName()] = i;
    }
    std::vector<T_ReferenceSequence> newreferences;
    for (i = 0; i < references.size(); i++) {
        newreferences.push_back(T_ReferenceSequence());
    }
    for (i = 0; i < references.size(); i++) {
        it = fastaRefToIndex.find(references[i].sequenceName);
        if (it == fastaRefToIndex.end()) {
            std::cout << "Error, can not find reference name " << references[i].sequenceName
                      << " in the reference genome." << std::endl;
            std::exit(EXIT_FAILURE);
        }
        newreferences[(*it).second] = references[i];
    }
    references = newreferences;
}