Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/graphtyper/typer/variant.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ std::vector<Variant> break_down_variant(Variant && variant,
std::vector<Variant> break_down_skyr(Variant && var, long const reach);
std::vector<Variant> extract_sequences_from_aligned_variant(Variant const && variant, std::size_t const THRESHOLD);
std::vector<Variant> simplify_complex_haplotype(Variant && variant, std::size_t const THRESHOLD);
std::vector<Variant> break_multi_snps(Variant const && var);
std::vector<Variant> break_multi_snps(Variant && var);
SampleCall bin_phred(Variant const & new_var,
Variant const & old_var,
SampleCall const & old_call,
Expand Down
27 changes: 10 additions & 17 deletions src/typer/variant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1044,9 +1044,6 @@ void Variant::trim_sequences(bool const keep_one_match)

bool Variant::add_base_in_front(bool const add_N)
{
// uint32_t abs_pos_copy = abs_pos - graph.genomic_region.get_absolute_begin_position() + 1;
// uint32_t abs_pos_copy = abs_pos - graph.genomic_region.get_absolute_begin_position() + 1;
// //graph.genomic_region.abs_pos;
uint32_t contig_pos = absolute_pos.get_contig_position(abs_pos, graph.contigs).second;
uint32_t contig_pos_cp = contig_pos;
uint32_t new_contig_pos = contig_pos - 1;
Expand All @@ -1055,9 +1052,14 @@ bool Variant::add_base_in_front(bool const add_N)
if (first_base.size() != 1 || contig_pos_cp != contig_pos || new_contig_pos != contig_pos - 1)
return false; // The base in front could not be extracted

if (!add_N && first_base[0] == 'N')
bool const is_not_ACGT = first_base[0] != 'A' && first_base[0] != 'C' && first_base[0] != 'G' && first_base[0] != 'T';

if (!add_N && is_not_ACGT)
return false;

if (add_N && is_not_ACGT)
first_base[0] = 'N'; // make sure it's N then

// Insert the new first base in front of all the sequences
for (auto & seq : seqs)
{
Expand Down Expand Up @@ -1589,17 +1591,9 @@ std::vector<Variant> break_down_variant(Variant && var,
{
// We need to make sure there is a matching first base
if (not var.is_with_matching_first_bases())
{
if (!var.add_base_in_front())
{
// Could not add a first base. Add N
for (auto & seq : var.seqs)
seq.insert(seq.begin(), 'N');
}
}
var.add_base_in_front(true); // Add N

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the actual bugfix, rest is some clang-tidy warnings.

std::vector<Variant> new_broken_down_snps = break_multi_snps(std::move(var));

std::move(new_broken_down_snps.begin(), new_broken_down_snps.end(), std::back_inserter(broken_down_vars));
}
else if (!is_no_variant_overlapping)
Expand All @@ -1621,9 +1615,9 @@ std::vector<Variant> break_down_variant(Variant && var,
// Make everything biallelic
std::vector<Variant> broken_down_vars2;

for (auto && var : broken_down_vars)
for (auto && broken_var : broken_down_vars)
{
auto new_vars = make_biallelic(std::move(var));
auto new_vars = make_biallelic(std::move(broken_var));
std::move(new_vars.begin(), new_vars.end(), std::back_inserter(broken_down_vars2));
}

Expand Down Expand Up @@ -1914,12 +1908,11 @@ void find_variant_sequences(gyper::Variant & new_var, gyper::Variant const & old
new_var.seqs = std::move(new_seqs);
}

std::vector<Variant> break_multi_snps(Variant const && var)
std::vector<Variant> break_multi_snps(Variant && var)
{
uint32_t const pos = var.abs_pos;
std::vector<std::vector<char>> const & seqs = var.seqs;
std::vector<Variant> new_vars;
// assert(var.infos.count("SBF1") == 1);

for (long j = 0; j < static_cast<long>(seqs[0].size()); ++j)
{
Expand Down