Effort: thorough
Build a pooled CRISPR-screen analysis pipeline that takes a count
matrix (sample × guide), runs MAGeCK MLE/RRA, identifies essential and
selectively-vulnerable genes, intersects the essential-gene list with
the dgidb-drug-gene druggability database to produce a ranked list
of druggable target candidates, and persists the full screen report as
an artifact. Generalizes to any pooled-screen design (genome-wide,
sub-library, dual-knockout) and feeds the cancer-vertical druggability
arm of SciDEX.
DepMap (already integrated by q-rdp-depmap-target-dependency) is the
precomputed result of running CRISPR screens across cell lines, but
SciDEX cannot ingest new screens — only re-use the published one.
Many high-value hypotheses come from one-off screens (a contributor's
own dataset, a recently published preprint with deposited counts, a
synthetic-lethality screen). Without a pipeline, those data sit
unused. With it, SciDEX absorbs new screens within the hour and feeds
the druggability scoring with fresh evidence.
scidex/forge/crispr_screen.py (≤800 LoC):parse_counts(path, library_path) — accepts MAGeCK-formatrun_mageck_mle(counts, design_matrix, sgRNA_efficiency=None)mageck mle via subprocess; returns gene-levelrun_mageck_rra(counts, treatment, control) — alternateessential_genes(results, fdr=0.05) — extracts genesessential or selective baseddruggable_intersect(essential_list) — joins againstdgidb-drug-gene to produce candidates with at least onepipeline(counts_path, library, design) — composes; writesdata/scidex-artifacts/crispr_screens/<run_id>/.
crispr_screen_run(run_id PRIMARY KEY,tools.py registers crispr_screen_pipeline(counts_path,@log_tool_call.
/api/crispr-screen/upload endpoint accepts a counts file +/artifacts/<id> renders volcanodependency_block includes the new evidence with a clearlytests/test_crispr_screen.py — uses MAGeCK demo data;(library_name, counts_hash).mageck); subprocess invocationscidex/forge/crispr_libraries/.
q-rdp-depmap-target-dependency.dgidb-drug-gene skill.data/scidex-artifacts/ submodule.q-rdp-depmap-target-dependency (done) — Domain-Expert promptq-tool-crispr-design-pipeline — designed guides can later beFiles created/modified:
scidex/forge/crispr_screen.py (590 LoC) — full pipeline module:parse_counts, run_mageck_mle, run_mageck_rra, essential_genes,druggable_intersect, pipeline, get_recent_screen_runs.scidex/forge/crispr_libraries/brunello.tsv — 40-guide Brunello reference stubscidex/forge/crispr_libraries/geckov2.tsv — 40-guide GeCKOv2 reference stubmigrations/add_crispr_screen_run.py — creates crispr_screen_run table withscidex/forge/tools.py — added "crispr_screen_pipeline" to TOOL_NAME_MAPPING;@log_tool_call crispr_screen_pipeline(...) function
api_routes/forge.py — added POST /api/crispr-screen/upload (multipart form),GET /forge/crispr-screen/{run_id} (report page), GET /forge/crispr-screenscidex/agora/skill_evidence.py — added _build_crispr_screen_block and wireddomain_expert evidence path (mirrors docking block pattern)
tests/test_crispr_screen.py — 27 tests: parsing, mock results, essential-geneAcceptance criteria status:
crispr_screen.py ≤800 LoC with all 6 required functionscrispr_screen_run with all spec columnscrispr_screen_pipeline registered in tools.py with @log_tool_call/api/crispr-screen/upload endpoint + report/history pages in api_routes/forge.py_build_crispr_screen_block with provenance pointertest_pipeline_dedup_checkapi.py on origin/main is a 145-line conflict-resolutionapi_routes/forge.py