scverse / scverse/mantispy

Split documentation into Tutorials, Examples and Pitfalls

Open
#45 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation
Dominant language
Python
Stars
8
Forks
0
Avg merge
12h 39m
Merged PRs (30d)
20

Description

Problem

The documentation is a single flat list of 13 numbered pages that mix three different kinds of
content: end-to-end analyses, single-function demonstrations, and method notes about statistical
pitfalls. Titles overlap (03 Trustworthy profiles against 08 Trustworthy features and design;
05 Hits and effects against 10 Differential features), tl.map is introduced twice, and two
pages are unnumbered.

Reasoning

The three kinds of content have different readers and different standards. An end-to-end analysis
should run on a real screen and be dense with figures. A single-function page should be short and may
use synthetic data. A method note — why sphering costs 70% of BBBC021 MOA retrieval, why modz loses
to the median, why a 4PL fits pure noise 59 times in 60 — is prose-heavy by nature and does not
belong inside an onboarding path.

Mixed together, the third kind smothers the first. The pitfall material is the strongest content in
the repository and is currently buried mid-page in tutorials a new user is expected to read in order.

Squidpy's split is the closest ecosystem precedent: Tutorials are end-to-end and dataset-driven,
Examples are one function each.

Proposed fix

Three sections:

docs/tutorials/   end-to-end, real data        7 pages
docs/examples/    one function, synthetic OK   ~18 pages
docs/pitfalls/    method notes, markdown       ~8 pages

Target tutorials:

# Title Dataset
1 Reading a screen: CellProfiler to AnnData real CellProfiler export
2 From cells to well profiles real single-cell screen
3 The images behind the profiles real gallery plate
4 Batch correction, and whether it helped rohban or jump_target2
5 Calling hits in a compound screen pki or rohban
6 Mechanism of action on BBBC021 bbbc021
7 Across laboratories: JUMP at two sites jump_target2

Migration map — nothing is deleted, every page splits:

Current page Tutorial Examples Pitfalls
00_overview landing quickstart
01_from_cellprofiler_to_anndata T1 feature-name parsing
reading_profiles fold into T1
reading_plates T3
02_from_cells_to_profiles T2 image_qc, well_qc, aggregate
03_trustworthy_profiles one page per selection operation, outliers degenerate features after mad_robustize
04_correcting_and_evaluating T4 correct_plate_position, regress_out, sphere, evaluate_correction when sphering hurts
05_hits_and_effects T5 hit_calling, effect_size, consensus, dose_response modz vs median; 4PL fits noise
06_mechanism_of_action T6 enrich, nn_moa_classify
07_single_cell_heterogeneity T2 cluster_composition, subpopulation_hits, cell_cycle_phase aggregate late
08_trustworthy_features_and_design replicate_saturation, feature_reproducibility ICC selects for reproducibility, not transfer; cytotoxicity confound
09_scaling_and_sites T7 reading in backed mode
10_differential_features differential_features unit of randomization; p-value floor of a rank test

Steps:

  • Create the three directories and their index pages
  • Move and split the existing notebooks per the map
  • Renumber tutorials, remove the unnumbered orphans
  • Update every inter-page link, including those in README.md and docs/api.md
  • Add the three sections to the toctree in docs/index.md
  • Demonstrate the low-replication warning tl.hit_calling raises (added in #62) on the page that covers hit calling. Nothing currently shows it, so a user whose screen trips it sees a message pointing at tl.map with no worked example of why one or two wells per group cannot be tested. JUMP-Target-2 read as a single plate is the shortest illustration: every compound has one well, and the same plate map across its twelve plates gives a median of twelve. Capture the warning with catch_warnings and print it, since nb_output_stderr is remove and it would otherwise be invisible on the rendered page (#42).

Depends on #44. This touches every notebook, so the content-rule issues
that follow it should be worked one notebook per agent to avoid conflicts.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the migration map and dependency #44, then inspect the existing pages and notebooks named there. Update docs/index.md, README.md, and docs/api.md while creating the three section indexes; done means every page is migrated, tutorials are renumbered, links and the toctree work, and the #62 warning example is visible.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook, python
Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.