diff --git a/src/unittest/primer_filter.cpp b/src/unittest/primer_filter.cpp deleted file mode 100644 index 44a7aa2882..0000000000 --- a/src/unittest/primer_filter.cpp +++ /dev/null @@ -1,400 +0,0 @@ -// -// primers.cpp -// -// Unit tests for primer filter -// - -#include -#include -#include -#include -#include -#include -#include -#include "vg/io/json2pb.h" -#include -#include "catch.hpp" -#include "random_graph.hpp" -#include "randomness.hpp" -#include "../snarl_distance_index.hpp" -#include "../integrated_snarl_finder.hpp" -#include "../genotypekit.hpp" -#include "../traversal_finder.hpp" -#include -#include -#include "xg.hpp" -#include "../primer_filter.hpp" -#include "../recombinator.hpp" - -namespace vg { -namespace unittest { - -using namespace std; - - - TEST_CASE( "filter simple primers", - "[primer_filter]" ) { - - SnarlDistanceIndex distance_index; - unique_ptr graph; - gbwtgraph::GBWTGraph gbwt_graph; - gbwt::GBWT gbwt_index; - gbwt::FastLocate r_index; - string snarl_index_path = "primers/y.dist"; - string xg_graph_path = "primers/y.xg"; - distance_index.deserialize(snarl_index_path); - graph = vg::io::VPKG::load_one(xg_graph_path); - load_r_index(r_index, "primers/y.ri"); - load_gbz(gbwt_index, gbwt_graph, "primers/y.giraffe.gbz"); - gbwt_graph.set_gbwt(gbwt_index); - r_index.setGBWT(gbwt_index); - - SECTION("template_position=0") { - string primers_path = "primers/y.primer3_with_ref_pos.out"; - ifstream file_handle(primers_path); - PrimerFinder primer_finder(graph, &distance_index, file_handle, gbwt_graph, gbwt_index, r_index); - - SECTION("Loads the correct number of chromosomes") { - REQUIRE(primer_finder.total_reference_paths() == 1); - } - - SECTION("Loads the correct number of primer pairs") { - REQUIRE(primer_finder.get_primer_pairs_of_chrom("y").size() == 5); - } - - SECTION("Loads and processes the primers correctly") { - primer_finder.add_primer_pair("y", 9, 14, 20, 22, 0, 20); // made up data, variation both at primers and in product - primer_finder.add_primer_pair("y", 31, 0, 15, 34, 1, 15); // made up data, no variation at primers or in product - - // Correct primer attributes - const vector left_primers_sequences { - "TGCCTGGCATAGAGGAAAGC", "GAGTCGAGGCTCAAGGACAG", "CAGAGTCGAGGCTCAAGGAC", - "GAGGCTCAAGGACAGCTCTC", "TCCAGAAGCTGCTCTTTCCC", "AGCCAGACAAATCTGGGTTC", - "CAACTGGTAGTTACT" - }; - - const vector left_primers_positions { - 362, 620, 618, 625, 819, 181, 388 - }; - - const vector left_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector left_primers_nodes_count { - 2, 1, 1, 2, 2, 6, 1 - }; - - const vector right_primers_sequences { - "GCCAGAAGAGCCTCAAGGAG", "AGGAGAGCTGGGAAAAGGGA", "AGGAGAGCTGGGAAAAGGGA", - "AGGAGAGCTGGGAAAAGGGA", "GCCTGGGTAGCTTTGGATGT", "AGATAATTAAACTGAAGTTC", - "GTTGACAATGAAAAG" - }; - - const vector right_primers_positions { - 466, 745, 745, 745, 935, 260, 485 - }; - - const vector right_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector right_primers_nodes_count { - 2, 1, 1, 1, 2, 3, 1 - }; - - const vector min_product_sizes { - 124, 142, 144, 137, 136, 99, 112 - }; - - const vector max_product_sizes { - 124, 145, 147, 140, 137, 99, 112 - }; - - const vector linear_product_sizes { - 124, 145, 147, 140, 136, 99, 112 - }; - - const vector variation_level { - 1.0, 1.0, 1.0, 1.0, 1.0, 0.33333, 1.0 - }; - - - const vector& primer_pairs = primer_finder.get_primer_pairs_of_chrom("y"); - - REQUIRE(primer_pairs.size() == left_primers_sequences.size()); - for (size_t i = 0; i < primer_pairs.size(); ++i) { - REQUIRE(left_primers_nodes_count[i] == primer_pairs[i].left_primer.mapped_nodes_ids.size()); - REQUIRE(left_primers_sequences[i] == primer_pairs[i].left_primer.sequence); - REQUIRE(left_primers_positions[i] == primer_pairs[i].left_primer.position_chromosome); - REQUIRE(left_primers_lengths[i] == primer_pairs[i].left_primer.length); - REQUIRE(right_primers_nodes_count[i] == primer_pairs[i].right_primer.mapped_nodes_ids.size()); - REQUIRE(right_primers_sequences[i] == primer_pairs[i].right_primer.sequence); - REQUIRE(right_primers_positions[i] == primer_pairs[i].right_primer.position_chromosome); - REQUIRE(right_primers_lengths[i] == primer_pairs[i].right_primer.length); - REQUIRE(linear_product_sizes[i] == primer_pairs[i].linear_product_size); - REQUIRE(min_product_sizes[i] == primer_pairs[i].min_product_size); - REQUIRE(max_product_sizes[i] == primer_pairs[i].max_product_size); - REQUIRE(abs(variation_level[i] - primer_pairs[i].variation_level) <= 0.0001); - } - - SECTION("Check that primers are assigned with correct nodes") { - vector pair_0_left_primer_nodes {27, 28}; - for (size_t i = 0; i < primer_pairs[0].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].left_primer.mapped_nodes_ids[i] == pair_0_left_primer_nodes[i]); - } - - vector pair_0_right_primer_nodes {33, 34}; - for (size_t i = 0; i < primer_pairs[0].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].right_primer.mapped_nodes_ids[i] == pair_0_right_primer_nodes[i]); - } - - vector pair_5_left_primer_nodes {9, 11, 12, 14, 15, 17}; - for (size_t i = 0; i < primer_pairs[5].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].left_primer.mapped_nodes_ids[i] == pair_5_left_primer_nodes[i]); - } - - vector pair_5_right_primer_nodes {22, 24, 25}; - for (size_t i = 0; i < primer_pairs[5].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].right_primer.mapped_nodes_ids[i] == pair_5_right_primer_nodes[i]); - } - } - - } - } - - SECTION("template_position=11") { - string primers_path = "primers/y.primer3_with_ref_pos_11.out"; - ifstream file_handle(primers_path); - PrimerFinder primer_finder(graph, &distance_index, file_handle, gbwt_graph, gbwt_index, r_index); - - SECTION("Loads the correct number of chromosomes") { - REQUIRE(primer_finder.total_reference_paths() == 1); - } - - SECTION("Loads the correct number of primer pairs") { - REQUIRE(primer_finder.get_primer_pairs_of_chrom("y").size() == 5); - } - - SECTION("Loads and processes the primers correctly") { - primer_finder.add_primer_pair("y", 9, 14, 20, 22, 0, 20); // made up data, variation both at primers and in product - primer_finder.add_primer_pair("y", 31, 0, 15, 34, 1, 15); // made up data, no variation at primers or in product - - // Correct primer attributes - const vector left_primers_sequences { - "TGCCTGGCATAGAGGAAAGC", "GAGTCGAGGCTCAAGGACAG", "CAGAGTCGAGGCTCAAGGAC", - "GAGGCTCAAGGACAGCTCTC", "TCCAGAAGCTGCTCTTTCCC", "AGCCAGACAAATCTGGGTTC", - "CAACTGGTAGTTACT" - }; - - const vector left_primers_positions { - 362, 620, 618, 625, 819, 181, 388 - }; - - const vector left_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector left_primers_nodes_count { - 2, 1, 1, 2, 2, 6, 1 - }; - - const vector right_primers_sequences { - "GCCAGAAGAGCCTCAAGGAG", "AGGAGAGCTGGGAAAAGGGA", "AGGAGAGCTGGGAAAAGGGA", - "AGGAGAGCTGGGAAAAGGGA", "GCCTGGGTAGCTTTGGATGT", "AGATAATTAAACTGAAGTTC", - "GTTGACAATGAAAAG" - }; - - const vector right_primers_positions { - 466, 745, 745, 745, 935, 260, 485 - }; - - const vector right_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector right_primers_nodes_count { - 2, 1, 1, 1, 2, 3, 1 - }; - - const vector min_product_sizes { - 124, 142, 144, 137, 136, 99, 112 - }; - - const vector max_product_sizes { - 124, 145, 147, 140, 137, 99, 112 - }; - - const vector linear_product_sizes { - 124, 145, 147, 140, 136, 99, 112 - }; - - const vector variation_level { - 1.0, 1.0, 1.0, 1.0, 1.0, 0.33333, 1.0 - }; - - - const vector& primer_pairs = primer_finder.get_primer_pairs_of_chrom("y"); - - REQUIRE(primer_pairs.size() == left_primers_sequences.size()); - for (size_t i = 0; i < primer_pairs.size(); ++i) { - REQUIRE(left_primers_nodes_count[i] == primer_pairs[i].left_primer.mapped_nodes_ids.size()); - REQUIRE(left_primers_sequences[i] == primer_pairs[i].left_primer.sequence); - REQUIRE(left_primers_positions[i] == primer_pairs[i].left_primer.position_chromosome); - REQUIRE(left_primers_lengths[i] == primer_pairs[i].left_primer.length); - REQUIRE(right_primers_nodes_count[i] == primer_pairs[i].right_primer.mapped_nodes_ids.size()); - REQUIRE(right_primers_sequences[i] == primer_pairs[i].right_primer.sequence); - REQUIRE(right_primers_positions[i] == primer_pairs[i].right_primer.position_chromosome); - REQUIRE(right_primers_lengths[i] == primer_pairs[i].right_primer.length); - REQUIRE(linear_product_sizes[i] == primer_pairs[i].linear_product_size); - REQUIRE(min_product_sizes[i] == primer_pairs[i].min_product_size); - REQUIRE(max_product_sizes[i] == primer_pairs[i].max_product_size); - REQUIRE(abs(variation_level[i] - primer_pairs[i].variation_level) <= 0.0001); - } - - SECTION("Check that primers are assigned with correct nodes") { - vector pair_0_left_primer_nodes {27, 28}; - for (size_t i = 0; i < primer_pairs[0].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].left_primer.mapped_nodes_ids[i] == pair_0_left_primer_nodes[i]); - } - - vector pair_0_right_primer_nodes {33, 34}; - for (size_t i = 0; i < primer_pairs[0].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].right_primer.mapped_nodes_ids[i] == pair_0_right_primer_nodes[i]); - } - - vector pair_5_left_primer_nodes {9, 11, 12, 14, 15, 17}; - for (size_t i = 0; i < primer_pairs[5].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].left_primer.mapped_nodes_ids[i] == pair_5_left_primer_nodes[i]); - } - - vector pair_5_right_primer_nodes {22, 24, 25}; - for (size_t i = 0; i < primer_pairs[5].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].right_primer.mapped_nodes_ids[i] == pair_5_right_primer_nodes[i]); - } - } - - } - } - SECTION("template_position=11, no path name") { - string primers_path = "primers/y.primer3_with_ref_pos_11.nopath.out"; - ifstream file_handle(primers_path); - unique_ptr minimizer_index = vg::io::VPKG::load_one("primers/y.min"); - ZipCodeCollection oversized_zipcodes; - ifstream zip_in ("primers/y.zipcodes"); - oversized_zipcodes.deserialize(zip_in); - zip_in.close(); - MinimizerMapper giraffe_mapper(gbwt_graph, *minimizer_index, &distance_index, &oversized_zipcodes); - PrimerFinder primer_finder(graph, &distance_index, file_handle, gbwt_graph, gbwt_index, r_index, &giraffe_mapper); - - SECTION("Loads the correct number of chromosomes") { - REQUIRE(primer_finder.total_reference_paths() == 1); - } - - SECTION("Loads the correct number of primer pairs") { - REQUIRE(primer_finder.get_primer_pairs_of_chrom("y").size() == 5); - } - - SECTION("Loads and processes the primers correctly") { - primer_finder.add_primer_pair("y", 9, 14, 20, 22, 0, 20); // made up data, variation both at primers and in product - primer_finder.add_primer_pair("y", 31, 0, 15, 34, 1, 15); // made up data, no variation at primers or in product - - // Correct primer attributes - const vector left_primers_sequences { - "TGCCTGGCATAGAGGAAAGC", "GAGTCGAGGCTCAAGGACAG", "CAGAGTCGAGGCTCAAGGAC", - "GAGGCTCAAGGACAGCTCTC", "TCCAGAAGCTGCTCTTTCCC", "AGCCAGACAAATCTGGGTTC", - "CAACTGGTAGTTACT" - }; - - const vector left_primers_positions { - 362, 620, 618, 625, 819, 181, 388 - }; - - const vector left_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector left_primers_nodes_count { - 2, 1, 1, 2, 2, 6, 1 - }; - - const vector right_primers_sequences { - "GCCAGAAGAGCCTCAAGGAG", "AGGAGAGCTGGGAAAAGGGA", "AGGAGAGCTGGGAAAAGGGA", - "AGGAGAGCTGGGAAAAGGGA", "GCCTGGGTAGCTTTGGATGT", "AGATAATTAAACTGAAGTTC", - "GTTGACAATGAAAAG" - }; - - const vector right_primers_positions { - 466, 745, 745, 745, 935, 260, 485 - }; - - const vector right_primers_lengths { - 20, 20, 20, 20, 20, 20, 15 - }; - - const vector right_primers_nodes_count { - 2, 1, 1, 1, 2, 3, 1 - }; - - const vector min_product_sizes { - 124, 142, 144, 137, 136, 99, 112 - }; - - const vector max_product_sizes { - 124, 145, 147, 140, 137, 99, 112 - }; - - const vector linear_product_sizes { - 124, 145, 147, 140, 136, 99, 112 - }; - - const vector variation_level { - 1.0, 1.0, 1.0, 1.0, 1.0, 0.33333, 1.0 - }; - - - const vector& primer_pairs = primer_finder.get_primer_pairs_of_chrom("y"); - - REQUIRE(primer_pairs.size() == left_primers_sequences.size()); - for (size_t i = 0; i < primer_pairs.size(); ++i) { - REQUIRE(left_primers_nodes_count[i] == primer_pairs[i].left_primer.mapped_nodes_ids.size()); - REQUIRE(left_primers_sequences[i] == primer_pairs[i].left_primer.sequence); - REQUIRE(left_primers_positions[i] == primer_pairs[i].left_primer.position_chromosome); - REQUIRE(left_primers_lengths[i] == primer_pairs[i].left_primer.length); - REQUIRE(right_primers_nodes_count[i] == primer_pairs[i].right_primer.mapped_nodes_ids.size()); - REQUIRE(right_primers_sequences[i] == primer_pairs[i].right_primer.sequence); - REQUIRE(right_primers_positions[i] == primer_pairs[i].right_primer.position_chromosome); - REQUIRE(right_primers_lengths[i] == primer_pairs[i].right_primer.length); - REQUIRE(linear_product_sizes[i] == primer_pairs[i].linear_product_size); - REQUIRE(min_product_sizes[i] == primer_pairs[i].min_product_size); - REQUIRE(max_product_sizes[i] == primer_pairs[i].max_product_size); - REQUIRE(abs(variation_level[i] - primer_pairs[i].variation_level) <= 0.0001); - } - - SECTION("Check that primers are assigned with correct nodes") { - vector pair_0_left_primer_nodes {27, 28}; - for (size_t i = 0; i < primer_pairs[0].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].left_primer.mapped_nodes_ids[i] == pair_0_left_primer_nodes[i]); - } - - vector pair_0_right_primer_nodes {33, 34}; - for (size_t i = 0; i < primer_pairs[0].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[0].right_primer.mapped_nodes_ids[i] == pair_0_right_primer_nodes[i]); - } - - vector pair_5_left_primer_nodes {9, 11, 12, 14, 15, 17}; - for (size_t i = 0; i < primer_pairs[5].left_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].left_primer.mapped_nodes_ids[i] == pair_5_left_primer_nodes[i]); - } - - vector pair_5_right_primer_nodes {22, 24, 25}; - for (size_t i = 0; i < primer_pairs[5].right_primer.mapped_nodes_ids.size(); i++) { - REQUIRE(primer_pairs[5].right_primer.mapped_nodes_ids[i] == pair_5_right_primer_nodes[i]); - } - } - - } - } - } -} -} diff --git a/src/version.cpp b/src/version.cpp index 72bb429226..bdf28ac412 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -116,6 +116,7 @@ const unordered_map Version::codenames = { {"v1.61.0", "Plodio"}, {"v1.62.0", "Ranzano"}, {"v1.63.0", "Boccaleone"}, + {"v1.63.1", "Boccaleone"}, {"v1.64.0", "Vibbiana"}, {"v1.65.0", "Carfon"}, {"v1.66.0", "Navetta"},