From 97582bd1fd6d05f6b7fa0dbb0e418f82b0b1796d Mon Sep 17 00:00:00 2001 From: "C. Titus Brown" Date: Sun, 20 Aug 2023 12:22:24 -0700 Subject: [PATCH] MRG: fix a loading problem where only one sketch was checked by manysearch for compat (#36) * provisional fix for loading against sigs from files with multiple * add test for load-only-one bug --- src/lib.rs | 23 +++++++++++------ src/python/tests/test-data/1.combined.sig.gz | Bin 0 -> 37296 bytes src/python/tests/test-data/1.fa.k31.sig.gz | Bin 0 -> 12728 bytes src/python/tests/test_search.py | 25 +++++++++++++++++++ 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 src/python/tests/test-data/1.combined.sig.gz create mode 100644 src/python/tests/test-data/1.fa.k31.sig.gz diff --git a/src/lib.rs b/src/lib.rs index 26d45681..141ca953 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -224,18 +224,24 @@ fn manysearch>( } let mut search_mh = None; + let mut search_sig = None; let mut results = vec![]; // load search signature from path: - let search_sig = Signature::from_path(filename); - if search_sig.is_ok() { - let search_sig = search_sig.unwrap(); - let search_sig = &search_sig[0]; // @CTB check on this - + let search_sigs = Signature::from_path(filename); + if search_sigs.is_ok() { + let search_sigs = search_sigs.unwrap(); + + for ss in search_sigs.iter() { + if let Some(mh) = prepare_query(ss, &template) { + search_sig = Some(ss); + search_mh = Some(mh); + break; + } + } // make sure it is compatible etc. - if let Some(mh) = prepare_query(search_sig, &template) { - search_mh = Some(mh); - } else { + + if !search_mh.is_some() { eprintln!("WARNING: no compatible sketches in path '{}'", filename.display()); let _ = skipped_paths.fetch_add(1, atomic::Ordering::SeqCst); @@ -251,6 +257,7 @@ fn manysearch>( let containment = overlap / size; if containment > threshold { + let search_sig = search_sig.unwrap(); results.push((q.name.clone(), q.minhash.md5sum(), search_sig.name(), diff --git a/src/python/tests/test-data/1.combined.sig.gz b/src/python/tests/test-data/1.combined.sig.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5a2641877bc7cc3b8d51b777ed6d376e620e4c5 GIT binary patch literal 37296 zcmV)8K*qlxiwFP!00004|K$D8jx}G7B#6CABi9!Vl17@5wG-wAw9rlv2Gv#B(*@O^ zL1&jBNSJq*9sf!Kw4ALJU&IY}I%zZ-d5-(Nk;vcw`TzNsfB5IW|J&dG@^^pv+rRz$ zfB%=i|J#52pa1qx|I5Gr{r~v)|Nhs%{QmOSfBE}=`e$GC;eUJA{_DU0>p%RDfBLt7 zwJHAdzc}FE|2x|k|LZ^f^I!k<@Bihmw&#ETuYYgLf1LeK|Hp{D&i|bM>HqK#|MZXl z{?GsPzy9}sGs-{y`@j6B|MGAD_OE~ar~mYSYToZZ{lmZg%m4b%fBheS{ZIePU;p*r z4D|cUKmXG|{Pkb|_8|YK|0#_4|Katwzx0cj2PMeyVyTPBxtJz^q-tRJN zYC=Nchcw3AEOK&wxM+~T#`gUNp{R<JF-$deAz{OOB8{MuX2+MMC{&Vf4 zS_E?LXA*}@>!pm9&!;r3y{tA~7fVH+e-r&{Ojy$8b$|YyyS8XgJ&x~totRD6N#joi zXBQ<`iC+&mu*_sx=`bW^=ltQueoI3#IHBtMr|mQnLghcrD_@7zJ5_>ODp`V zelwP)V0M;q+UJA2kW9eLej{u|A~$(II<}-G>S}-XdeseCcpg^)NeoR?U zRbQ_){!vWiPS53Pf3&?ig3dwaPthz5+6N*1lsUzkYG}HDDiDXrnODOvs3xO&3o$;Qydj+)5%xcrMz?uZT>iE~bt$≫fPBmnXrS!FVwP$}JA2 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%0A3HM8OR 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

uJYcVwa_)e_UU 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 literal 0 HcmV?d00001 diff --git a/src/python/tests/test_search.py b/src/python/tests/test_search.py index 86e8d673..291e0885 100644 --- a/src/python/tests/test_search.py +++ b/src/python/tests/test_search.py @@ -251,3 +251,28 @@ def test_nomatch_query(runtmp, capfd): print(captured.err) assert 'WARNING: skipped 1 paths - no compatible signatures.' in captured.err + + +def test_load_only_one_bug(runtmp, capfd): + # check that we behave properly when presented with multiple against + # sketches + query_list = runtmp.output('query.txt') + against_list = runtmp.output('against.txt') + + sig1_k31 = get_test_data('1.fa.k31.sig.gz') + sig1_all = get_test_data('1.combined.sig.gz') + + make_file_list(query_list, [sig1_k31]) + make_file_list(against_list, [sig1_all]) + + output = runtmp.output('out.csv') + + runtmp.sourmash('scripts', 'manysearch', query_list, against_list, + '-o', output) + assert os.path.exists(output) + + captured = capfd.readouterr() + print(captured.err) + + assert not 'WARNING: skipped 1 paths - no compatible signatures.' in captured.err + assert not 'WARNING: no compatible sketches in path ' in captured.err