From 758adaf8e4caf3dda1e31ef818178e794d0853dd Mon Sep 17 00:00:00 2001 From: Hadi Quesneville <hadi.quesneville@inrae.fr> Date: Tue, 31 Jan 2023 09:21:53 +0100 Subject: [PATCH 1/2] -Correct GFF3 output -Improve unit tests --- src/BLRlib/BLRMatchPath.cpp | 4 +- src/BLRlib/testfiles/Test_BLRMatchMap.cpp | 51 ++++------------------ src/BLRlib/testfiles/Test_BLRMatchMap.h | 7 ++- src/BLRlib/testfiles/Test_BLRMatchPath.cpp | 24 ++++++++++ src/BLRlib/testfiles/Test_BLRMatchPath.h | 16 ++++--- 5 files changed, 46 insertions(+), 56 deletions(-) diff --git a/src/BLRlib/BLRMatchPath.cpp b/src/BLRlib/BLRMatchPath.cpp index 9c7b9b5..af275c2 100644 --- a/src/BLRlib/BLRMatchPath.cpp +++ b/src/BLRlib/BLRMatchPath.cpp @@ -239,7 +239,7 @@ void BLRMatchPath::writeBED(std::ostream &out) { //--------------------------------------------------------------------------- void BLRMatchPath::writeGFF3(const SDGString &filename) { std::ostringstream gffStream; - writeBED(gffStream); + writeGFF3(gffStream); std::ofstream bedFile(filename); bedFile << gffStream.str(); } @@ -433,4 +433,4 @@ void BLRMatchPath::writeMatch(const BLRJoinParameter& para, const SDGString &fil } if (verbose > 0) std::cout << " done" << std::endl; -} \ No newline at end of file +} diff --git a/src/BLRlib/testfiles/Test_BLRMatchMap.cpp b/src/BLRlib/testfiles/Test_BLRMatchMap.cpp index b97b533..cbbbe2c 100644 --- a/src/BLRlib/testfiles/Test_BLRMatchMap.cpp +++ b/src/BLRlib/testfiles/Test_BLRMatchMap.cpp @@ -17,44 +17,15 @@ void Test_BLRMatchMap::tearDown() { } -// clean_conflicts is never called in other submethod in MapPath. -void Test_BLRMatchMap::test_clean_conflicts(void){ - SDGString match_file = "match.align"; - Test_BLRUtils::writeInputFile(); - - BLRMatcherThreadsParameter para = createParameter(); - BLRMatchMap matchMap(para); - - matchMap.loadAlign(match_file); - - BLRMatchMap::MapAlign mapAlignBefore = matchMap.getMapAlign(); - - - /*std::cout<<" clean_conflicts before: "<<std::endl; - Test_BLRUtils::viewMapAlign(mapAlignBefore); - std::cout<<" "<<std::endl;*/ - - - matchMap.clean_conflicts(); - BLRMatchMap::MapAlign obsMapAlign = matchMap.getMapAlign(); - - /*std::cout<<"clean_conflicts after: "<<std::endl; - Test_BLRUtils::viewMapAlign(obsMapAlign);*/ - - BLRMatchMap::MapAlign expMapAlign = Test_BLRUtils::createExpMapAlign_for_clean_conflicts(); - - /* std::cout<<"expectation: "<<std::endl; - Test_BLRUtils::viewMapAlign(expMapAlign);*/ - - bool expComparaison = true; - bool obsComparaison = (expMapAlign == obsMapAlign); - - CPPUNIT_ASSERT_EQUAL(expComparaison, obsComparaison); - - FileUtils::removeFile(match_file); +void Test_BLRMatchMap::test_mapAlign_equality(void){ + BLRMatchMap::MapAlign mapAlign1 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality(); + BLRMatchMap::MapAlign mapAlign2 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality(); + bool expComparaison = true; + bool obsComparaison = (mapAlign1 == mapAlign2); + CPPUNIT_ASSERT_EQUAL(expComparaison, obsComparaison); } -void Test_BLRMatchMap::test_mapPath(void){ +void Test_BLRMatchMap::test_mapPath_join_merge_clean_after(void){ bool joiningParameter = true; bool cleanBefore = false; bool cleanAfter = true; @@ -149,13 +120,7 @@ void Test_BLRMatchMap::test_isOverlapFound_in_add_split_path(void){ CPPUNIT_ASSERT_EQUAL(expOverlap, obsOverlap); } -void Test_BLRMatchMap::test_mapAlign_equality(void){ - BLRMatchMap::MapAlign mapAlign1 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality(); - BLRMatchMap::MapAlign mapAlign2 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality(); - bool expComparaison = true; - bool obsComparaison = (mapAlign1 == mapAlign2); - CPPUNIT_ASSERT_EQUAL(expComparaison, obsComparaison); -} + void Test_BLRMatchMap::test_merge_on_two_queries(void) diff --git a/src/BLRlib/testfiles/Test_BLRMatchMap.h b/src/BLRlib/testfiles/Test_BLRMatchMap.h index 6b6e442..a7b3818 100644 --- a/src/BLRlib/testfiles/Test_BLRMatchMap.h +++ b/src/BLRlib/testfiles/Test_BLRMatchMap.h @@ -15,8 +15,7 @@ class Test_BLRMatchMap: public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(Test_BLRMatchMap); CPPUNIT_TEST(test_mapAlign_equality); - CPPUNIT_TEST(test_clean_conflicts); - CPPUNIT_TEST(test_mapPath); + CPPUNIT_TEST(test_mapPath_join_merge_clean_after); CPPUNIT_TEST(view_add_clean_path_all_S); CPPUNIT_TEST(test_isOverlapFound_in_add_split_path); CPPUNIT_TEST(test_merge_on_two_queries); @@ -46,8 +45,8 @@ class Test_BLRMatchMap: public CPPUNIT_NS::TestFixture protected: void test_mapAlign_equality(void); - void test_clean_conflicts(void); - void test_mapPath(void); + void test_mapPath_join_clean_before(void); + void test_mapPath_join_merge_clean_after(void); void view_add_clean_path_all_S(void); void test_isOverlapFound_in_add_split_path(void); void test_merge_on_two_queries(void); diff --git a/src/BLRlib/testfiles/Test_BLRMatchPath.cpp b/src/BLRlib/testfiles/Test_BLRMatchPath.cpp index c8fb3e7..c35f59e 100644 --- a/src/BLRlib/testfiles/Test_BLRMatchPath.cpp +++ b/src/BLRlib/testfiles/Test_BLRMatchPath.cpp @@ -218,7 +218,31 @@ void Test_BLRMatchPath::test_writeBED(void){ CPPUNIT_ASSERT_EQUAL(exp.str(), obs.str()); } +//--------------------------------------------------------------------------- +void Test_BLRMatchPath::test_writeGFF3(void){ + + BLRJoinParameter para = Test_BLRUtils::createParameter(); + BLRMatchPath matchPath; + + std::ostringstream inputData; + inputData << "10\tCHR1v01212004\t100\t250\tTNAT1A\t36\t523\t2e-128\t460\t81.56\n"; + inputData << "10\tCHR1v01212004\t800\t1000\tTNAT1A\t36\t523\t2e-128\t460\t81.56\n"; + inputData << "20\tCHR2v01212004\t1050\t2000\tTNAT1A\t580\t480\t7e-78\t87\t79.14\n"; + std::istringstream inputDataStream(inputData.str()); + matchPath.read(para,inputDataStream, 0); + + std::ostringstream obs; + matchPath.writeGFF3(obs); + + std::ostringstream exp; + exp << "CHR1v01212004\tmatcher\tmatch\t100\t1000\t868\t+\t.\tID=1;Name=TNAT1A;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n"; + exp << "CHR1v01212004\tmatcher\tmatch_part\t100\t250\t460\t+\t.\tID=1.1;Parent=1;Name=TNAT1A.1;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n"; + exp << "CHR1v01212004\tmatcher\tmatch_part\t800\t1000\t460\t+\t.\tID=1.2;Parent=1;Name=TNAT1A.2;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n"; + exp << "CHR2v01212004\tmatcher\tmatch\t1050\t2000\t87\t-\t.\tID=2;Name=TNAT1A;Target=TNAT1A 480 580;Note=e-value:7e-78,identity:79.14\n"; + exp << "CHR2v01212004\tmatcher\tmatch_part\t1050\t2000\t87\t-\t.\tID=2.1;Parent=2;Name=TNAT1A.1;Target=TNAT1A 480 580;Note=e-value:7e-78,identity:79.14\n"; + CPPUNIT_ASSERT_EQUAL(exp.str(), obs.str()); +} diff --git a/src/BLRlib/testfiles/Test_BLRMatchPath.h b/src/BLRlib/testfiles/Test_BLRMatchPath.h index 0d7997b..0999c09 100644 --- a/src/BLRlib/testfiles/Test_BLRMatchPath.h +++ b/src/BLRlib/testfiles/Test_BLRMatchPath.h @@ -12,13 +12,14 @@ class Test_BLRMatchPath: public CPPUNIT_NS::TestFixture { - CPPUNIT_TEST_SUITE(Test_BLRMatchPath); - CPPUNIT_TEST(test_read); - CPPUNIT_TEST(test_load); - CPPUNIT_TEST(test_setFromRpsList); - CPPUNIT_TEST(test_setFromRpsList2); - CPPUNIT_TEST(test_writeBED); - CPPUNIT_TEST_SUITE_END(); + CPPUNIT_TEST_SUITE(Test_BLRMatchPath); + CPPUNIT_TEST(test_read); + CPPUNIT_TEST(test_load); + CPPUNIT_TEST(test_setFromRpsList); + CPPUNIT_TEST(test_setFromRpsList2); + CPPUNIT_TEST(test_writeBED); + CPPUNIT_TEST(test_writeGFF3); + CPPUNIT_TEST_SUITE_END(); public: void setUp(); @@ -30,6 +31,7 @@ class Test_BLRMatchPath: public CPPUNIT_NS::TestFixture void test_setFromRpsList(void); void test_setFromRpsList2(void); void test_writeBED(void); + void test_writeGFF3(void); }; #endif -- GitLab From f4a5fddfeed0c4c9ede8239c5bb63b1949a3d844 Mon Sep 17 00:00:00 2001 From: Hadi Quesneville <hadi.quesneville@inrae.fr> Date: Tue, 31 Jan 2023 09:43:01 +0100 Subject: [PATCH 2/2] -Set clean before at false when clean after is set. --- src/BLRlib/BLRMatcherThreadsParameter.cpp | 1 + src/matcher.threads/matcherThreads.cpp | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/BLRlib/BLRMatcherThreadsParameter.cpp b/src/BLRlib/BLRMatcherThreadsParameter.cpp index 5f2226f..4e588e7 100644 --- a/src/BLRlib/BLRMatcherThreadsParameter.cpp +++ b/src/BLRlib/BLRMatcherThreadsParameter.cpp @@ -80,6 +80,7 @@ void BLRMatcherThreadsParameter::parseOptArg(int numarg, char* tabarg[]) } case 'x': { + clean_before=false; clean_after=true; break; } diff --git a/src/matcher.threads/matcherThreads.cpp b/src/matcher.threads/matcherThreads.cpp index 7608a8b..9d87cbd 100644 --- a/src/matcher.threads/matcherThreads.cpp +++ b/src/matcher.threads/matcherThreads.cpp @@ -109,8 +109,6 @@ int main(int argc, char *argv[]) { std::cerr << "No file :" << para.getLoad_path() << std::endl << std::flush; - - std::list<RangePair> rp_list = match_align.getRpListFromMatchAlign(); if(para.getVerbose()>0) std::cout<<"list size="<<rp_list.size()<<std::endl; -- GitLab