[go: nahoru, domu]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MRG: add label output & input options to compare and plot, for better customization #2598

Merged
merged 22 commits into from
Feb 6, 2024

Conversation

ctb
Copy link
Contributor
@ctb ctb commented Apr 29, 2023

Adds sourmash compare --labels-to and sourmash plot --labels-from to support better label customization.

Fixes #2452
Fixes #2915

sourmash compare --labels-to

This command will generate a 'labels-to' file. Running:

sourmash compare tests/test-data/demo/*.sig -o compare-demo \
    --labels-to compare-demo-labels.csv

will produce a file that looks like this:

file compare-demo-labels.csv:

order,md5,label,name,filename,signature_file
1,60f7e23c24a8d94791cc7a8680c493f9,SRR2060939_1.fastq.gz,,SRR2060939_1.fastq.gz,../tests/test-data/demo/SRR2060939_1.sig
2,4e94e60265e04f0763142e20b52c0da1,SRR2060939_2.fastq.gz,,SRR2060939_2.fastq.gz,../tests/test-data/demo/SRR2060939_2.sig
3,f71e78178af9e45e6f1d87a0c53c465c,SRR2241509_1.fastq.gz,,SRR2241509_1.fastq.gz,../tests/test-data/demo/SRR2241509_1.sig
4,6d6e87e1154e95b279e5e7db414bc37b,SRR2255622_1.fastq.gz,,SRR2255622_1.fastq.gz,../tests/test-data/demo/SRR2255622_1.sig
5,0107d767a345eff67ecdaed2ee5cd7ba,SRR453566_1.fastq.gz,,SRR453566_1.fastq.gz,../tests/test-data/demo/SRR453566_1.sig
6,f0c834bc306651d2b9321fb21d3e8d8f,SRR453569_1.fastq.gz,,SRR453569_1.fastq.gz,../tests/test-data/demo/SRR453569_1.sig
7,b59473c94ff2889eca5d7165936e64b3,SRR453570_1.fastq.gz,,SRR453570_1.fastq.gz,../tests/test-data/demo/SRR453570_1.sig

The label column in this file can be edited to suit the user's needs; the index column is order, and all other columns can be ignored or deleted or updated without consequence.

sourmash plot --labels-from

This command will load labels from a file. Running:

sourmash plot --labels-from compare-demo-new-labels.csv compare-demo

uses the label column from the CSV as labels, in the order specified by the order column (interpreted as integers and sorted from lowest to highest). All other columns are ignored.

Example in a Jupyter Notebook

Some example code for updating the labels is available here:

https://github.com/sourmash-bio/sourmash/blob/compare_labels/doc/plotting-compare.ipynb

TODO

  • add test for args.labeltext and args.labels_from check
  • check the notebook update

Future:

  • Consider switching to LinearIndex in the signature loading code, as that would let us maintain the location in the code without the current machinations. Also worth thinking about enabling lazy loading, which some future Index-code based modification might support.
  • consider if and how to validate --labels-from CSV file...

@codecov
Copy link
codecov bot commented Apr 29, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (a128ee3) 86.65% compared to head (b3369c1) 92.84%.

Additional details and impacted files
@@            Coverage Diff             @@
##           latest    #2598      +/-   ##
==========================================
+ Coverage   86.65%   92.84%   +6.19%     
==========================================
  Files         135      104      -31     
  Lines       15284    12482    -2802     
  Branches     2592     2602      +10     
==========================================
- Hits        13244    11589    -1655     
+ Misses       1740      593    -1147     
  Partials      300      300              
Flag Coverage Δ
hypothesis-py 25.74% <0.00%> (-0.07%) ⬇️
python 92.84% <100.00%> (+0.01%) ⬆️
rust ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@peterjc
Copy link
Contributor
peterjc commented Apr 30, 2023

Other possible names for the "order" column: "sort" or "index" - I have no strong preference, but can see how I might use this were my labels didn't have an alphabetic sorting.

@ctb ctb changed the base branch from latest to refactor_plot_indices September 29, 2023 13:19
@ctb
Copy link
Contributor Author
ctb commented Sep 29, 2023

7ffcb7b changes order to sort_order

Base automatically changed from refactor_plot_indices to latest October 15, 2023 15:44
@ctb ctb changed the title WIP: add label output & input options to compare and plot, for better customization MRG: add label output & input options to compare and plot, for better customization Feb 5, 2024
@ctb
Copy link
Contributor Author
ctb commented Feb 5, 2024

Ready for review & merge @sourmash-bio/devs !

Copy link
Contributor
@bluegenes bluegenes left a comment

Choose a reason for hiding this comment

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

lgtm!

@ctb ctb merged commit c6831fd into latest Feb 6, 2024
38 of 39 checks passed
@ctb ctb deleted the compare_labels branch February 6, 2024 02:04
@ctb
Copy link
Contributor Author
ctb commented Feb 6, 2024

🎉

@ctb ctb mentioned this pull request Feb 10, 2024
ctb added a commit that referenced this pull request Feb 10, 2024
release notes: https://hackmd.io/SCoVcWS1RhCH-ndQNWF-1A?view

# sourmash release v4.8.6 - release notes

Minor new features:

* re-establish `tax` gather reading flexibility (#2986)
* update JOSS paper per pyopensci review (#2964)
* Clean up and refactor `KmerMinHash::merge` in core (#2973)
* add label output & input options to `compare` and `plot`, for better
customization (#2598)
* add utilities for using ictv taxonomic ranks with `sourmash tax`
(#2608)

Bug fixes:

* Fix `tax metagenome` to work on gather output created with
`--estimate-ani-ci` (#2952)
* fix gather memory usage issue by not accumulating `GatherResult`
(#2962)
* update the CLI docs and help for `search --containment` and `prefetch`
(#2971)

Documentation updates:

* update tutorial to remove bioconda & use sourmash-minimal (#2972)
* update readme with maintainers & sourmash comparison info (#2965)
* add branchwater reference; make FAQ more visible (#2984)
* update FAQ answer on k-mer size (#2899)
* update README with repostatus and pyver badges, and Windows support
(#2928)
* add full column descriptions for `gather` and `prefetch` output
(#2954)
* add scaled FAQ, adjust ksize answer (#2921)
* minor refactoring of gather code, small doc updates (#2953)
* Add threshold-bp and scaled relationship to faqs (#2930)

Developer updates:

* nix updates for pyopensci review (#2975)
* add scaled selection to manifest; add helper functions for collection
and sig/sketch usage (#2948)
* Pre-commit updates (#2427)
* fix upload wheel CI (#2974)
* release core; bump rust core version to r0.12.1 (#2988)
* CI: macos deployment target and maturin updates (#2879)
* MRG: bump version to 4.8.6-dev, post-release (#2877)
* fix benchmark code & a few other small issues from pyOpenSci review
(#2920)
* fix uploading of wheels after upload-artifact upgrade. (#2887)
* in core, enable downsample within select (#2931)

Dependabot updates:

* Bump pypa/cibuildwheel from 2.16.4 to 2.16.5 (#2981)
* Bump tempfile from 3.9.0 to 3.10.0 (#2979)
* Bump rkyv from 0.7.43 to 0.7.44 (#2978)
* Bump actions/cache from 3 to 4 (#2933)
* Bump actions/download-artifact from 3 to 4 (#2884)
* Bump actions/upload-artifact from 3 to 4 (#2883)
* Bump cachix/cachix-action from 13 to 14 (#2926)
* Bump cachix/install-nix-action from 24 to 25 (#2927)
* Bump chrono from 0.4.31 to 0.4.33 (#2957)
* Bump getrandom from 0.2.11 to 0.2.12 (#2924)
* Bump histogram from 0.8.3 to 0.8.4 (#2923)
* Bump histogram from 0.8.4 to 0.9.0 (#2935)
* Bump jinja2 from 3.1.2 to 3.1.3 (#2922)
* Bump memmap2 from 0.9.0 to 0.9.2 (#2882)
* Bump memmap2 from 0.9.2 to 0.9.3 (#2889)
* Bump memmap2 from 0.9.3 to 0.9.4 (#2958)
* Bump mymindstorm/setup-emsdk from 13 to 14 (#2934)
* Bump ouroboros from 0.18.1 to 0.18.2 (#2894)
* Bump ouroboros from 0.18.2 to 0.18.3 (#2936)
* Bump pypa/cibuildwheel from 2.16.2 to 2.16.4 (#2960)
* Bump rayon from 1.8.0 to 1.8.1 (#2937)
* Bump rkyv from 0.7.42 to 0.7.43 (#2880)
* Bump serde from 1.0.194 to 1.0.195 (#2901)
* Bump serde from 1.0.195 to 1.0.196 (#2956)
* Bump serde_json from 1.0.108 to 1.0.110 (#2896)
* Bump serde_json from 1.0.110 to 1.0.111 (#2902)
* Bump serde_json from 1.0.111 to 1.0.113 (#2955)
* Bump shlex from 1.1.0 to 1.3.0 (#2940)
* Bump supercharge/redis-github-action from 1.7.0 to 1.8.0 (#2885)
* Bump tempfile from 3.8.1 to 3.9.0 (#2893)
* Bump thiserror from 1.0.50 to 1.0.51 (#2881)
* Bump thiserror from 1.0.51 to 1.0.56 (#2897)
* Bump wasm-bindgen from 0.2.89 to 0.2.90 (#2925)
* Bump wasm-bindgen-test from 0.3.39 to 0.3.40 (#2938)
* Bump web-sys from 0.3.66 to 0.3.67 (#2939)
* Update pytest requirement from <7.5.0,>=6.2.4 to >=6.2.4,<8.1.0
(#2959)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants