Generated banner for Depmap
Generated logo for Depmap

Depmap

K-DenseCommunityCreated by Kuan-lin HuangDistributed by K-Dense

  • Skill
  • Tool integration
  • Science and research
  • CC-BY-4.0
  • Low risk
  • Has scripts

From the author

Retrieves and analyzes Cancer Dependency Map (DepMap) release data, including CRISPR Chronos gene effects, cancer model annotations, omics biomarkers, and PRISM drug sensitivity. Supports cancer-selective dependency, co-essentiality, and candidate synthetic-lethality analyses with release-aware identifiers and statistical checks.
— the description by Kuan-lin Huang

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

DepMap provides a structured approach to retrieving and analyzing large-scale cancer dependency data, including CRISPR Chronos gene effects, omics biomarkers, and PRISM drug sensitivity screens. The skill facilitates the discovery of release-specific datasets, ensures proper handling of model-level metadata, and provides helper functions for statistical analysis of gene dependencies. It emphasizes rigorous data provenance, requiring users to validate release-specific READMEs, checksums, and identifier mappings to ensure biological relevance and statistical validity in exploratory cancer research.

What it does

  • Retrieves and validates DepMap release metadata and file catalogues.
  • Supports analysis of CRISPR Chronos gene effects and dependency statistics.
  • Enables biomarker association testing using Mann-Whitney screening.
  • Facilitates co-essentiality analysis to identify gene-gene relationships.
  • Provides guidance on integrating PRISM drug sensitivity and omics data.
  • Ensures correct handling of model-level annotations and default entry flags.

When to use it

  • When ranking gene dependencies across specific cancer model cohorts.
  • When investigating potential synthetic-lethality candidates.
  • When comparing gene effect profiles against specific biomarker statuses.
  • When performing co-essentiality analysis to explore functional pathways.
  • When integrating multi-omics data with CRISPR screen results.

Advantages

  • Promotes reproducible analysis through release-aware identifier and checksum tracking.
  • Reduces errors in data joining by enforcing model-level and condition-level mapping.
  • Provides standardized helper functions for common cancer dependency workflows.
  • Encourages rigorous statistical practices by requiring multiple-testing adjustments.
  • Helps navigate the complexity of DepMap's diverse data formats and release versions.

Usage examples

“Find the latest DepMap public release and list its available files.”
The agent fetches the current catalogue, filters for public releases, and displays the available files with their metadata for selection.
“Analyze the dependency profile of KRAS in lung cancer models.”
The agent loads the gene effect matrix, filters for lung lineage models, and calculates the mean dependency score to identify potential vulnerabilities.
“Identify genes that are co-essential with a target gene.”
The agent computes Pearson correlations between the target gene's effect profile and all other genes, returning a ranked list of significant correlates.
“Perform a biomarker scan to find dependencies associated with a specific mutation.”
The agent maps the mutation status to model IDs and runs a Mann-Whitney test to identify genes with significantly different effects in mutant versus wild-type models.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/k-dense-ai/depmap/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip depmap.zip -d .agents/skills

Documentation by Kuan-lin Huang

DepMap — Cancer Dependency Map

When to use

Use this skill to rank dependencies in cancer models, compare prespecified biomarker cohorts, inspect co-essentiality, or relate genetic dependencies to PRISM compound response. These analyses generate target and synthetic-lethality hypotheses; they do not establish clinical efficacy, a therapeutic window, or a causal interaction.

DepMap integrates Broad and Sanger CRISPR screens and hosts independent RNAi and drug-screen datasets. Match each question to its assay and pinned release. RNAi DEMETER2 is a different perturbation modality, not an older CRISPR scoring method.

1. Discover a release, then obtain its files

Use DepMap Downloads and the selected release's README and release notes. On review, the live catalogue's latest DepMap Public release was 26Q1, dated 2026-04-01. Rediscover before new work; a release name or expected quarter is not evidence a release is available.

Verified public endpoint

GET https://depmap.org/portal/api/no-captcha/download/files returns a complete CSV catalogue, with no request body, API key, or pagination parameters. Required metadata columns are release, release_date, filename, and md5_hash. The live response also has url: older files can have links, while recent release rows have blank links. All 85 entries for 26Q1 had blank url values at review. Treat availability per row, not per endpoint.

The staff announcement introduced this metadata route in July 2026. The older https://depmap.org/portal/api/download/files catalogue can supply download links but returned an HTML verification page during review, including with HTTP 200. Validate content before parsing. Obtain current files through the portal when verification is required. Refresh expiring signed links immediately before use; do not fabricate storage URLs or assume every new release is on Figshare.

No supported contract was verified for the former /api/gene?gene_id=... or /api/data/gene_dependency examples. Use local release matrices for gene slices. Do not assume a Python package named depmap is an official portal client.

From the skill root, use the bundled helpers:

from scripts.depmap_data import fetch_catalogue, select_file, verify_md5

catalogue = fetch_catalogue()
public = catalogue[catalogue["release"].str.startswith("DepMap Public ")]
print(public[["release", "release_date"]].drop_duplicates()
      .sort_values("release_date", ascending=False).head(12))

# Explicit example pin; inspect discovery output before selecting your release.
release = "DepMap Public 26Q1"
record = select_file(catalogue, release, "CRISPRGeneEffect.csv")
print(record[["release", "filename", "md5_hash"]])
# After obtaining this file from the portal:
# verify_md5("CRISPRGeneEffect.csv", record["md5_hash"])

Save the selected metadata, retrieval date, release citation, local checksum, and README alongside analysis outputs. Record source dataset terms separately from this skill's license; newer release terms differ from older Figshare releases. For a missing published checksum, retain a local SHA-256 and explicitly state that it was not compared with a publisher checksum.

2. Inspect file contracts before joining

The following names were verified in the 26Q1 catalogue. Check that release's README for units and identifier level before treating a file as a numeric matrix.

FileUse and important contract
CRISPRGeneEffect.csvIntegrated, model-level Chronos effects; rows are ModelID, columns preserve Symbol (EntrezID)
CRISPRGeneEffectUncorrected.csvUncorrected effects; not interchangeable with corrected effects
CRISPRGeneDependency.csvRelease-specific dependency statistics; confirm probability/FDR definition and direction in the README
Model.csvModel metadata keyed by ModelID
ModelCondition.csvGrowth/treatment conditions keyed by ModelConditionID, mapping to ModelID
ScreenGeneEffect.csv, ScreenSequenceMap.csv, CRISPRScreenMap.csvScreen-level effects and mappings; multiple screens can belong to one model
OmicsExpressionTPMLogp1HumanProteinCodingGenes.csvExpression output with sequencing/model metadata and default-entry flags; exclude metadata columns from expression calculations
OmicsSomaticMutationsMatrixDamaging.csv, OmicsSomaticMutationsMatrixHotspot.csvDistinct mutation annotations; damaging and hotspot calls answer different biological questions
OmicsCNGeneWGS.csv, OmicsCNGeneMC_WES.csvSeparate WGS/WES copy-number products; do not concatenate as one uniformly processed cohort
PortalOmicsCNGeneLog2.csvTransformed portal copy-number product; establish the exact transform before inversion
OmicsProfiles.csv, Gene.csvOmics provenance/mappings and gene annotations
AchillesScreenQCReport.csv, AchillesSequenceQCReport.csvScreen/sequence QC; apply documented eligibility rules rather than invented universal cutoffs

Current model annotations include CellLineName, OncotreeLineage, OncotreePrimaryDisease, and OncotreeSubtype. Legacy sample_info.csv fields (DepMap_ID, lineage, primary_disease) require an explicit conversion. Model.csv includes models without CRISPR measurements: absence from the effect matrix is not a nondependency score.

Omics may be indexed by SequencingID, ModelConditionID, or ModelID. For a basal model analysis, use the release's IsDefaultEntryForModel == Yes flag, then require one row per ModelID. The condition-level flag IsDefaultEntryForMC answers a different question. Subset the assay/datatype before selecting defaults from a mapping table. Never average repeated conditions or count them as independent models without an explicit scientific design.

See the mapping guide source and metadata definitions.

3. Interpret Chronos and inspect a target

Chronos gene effect is continuous and unbounded. More negative values indicate stronger loss of fitness. In the normalized release matrix, approximately 0 is the nonessential-control anchor and −1 is the common-essential-control anchor; −1 is not a dependency boundary. A filter such as ≤ −0.5 is exploratory, not a p-value, FDR, or probability cutoff. Positive effects may reflect growth advantage or technical noise and need validation.

For binary calls, inspect the selected file's statistic and direction. A high dependency probability and a low FDR are different rules. Do not silently convert between them. Use release-matched positive/negative control lists and QC outputs. See score and QC caveats.

The following local-data examples are illustrative until run against your chosen files. Helper behavior is tested using synthetic fixtures; current bulk matrices were not downloaded during this review.

from scripts.depmap_data import load_gene_effect, load_models, gene_profile

effects = load_gene_effect("CRISPRGeneEffect.csv")
models = load_models("Model.csv")
profile = gene_profile(effects, models, "KRAS (3845)")
print(profile[["CellLineName", "OncotreeLineage", "gene_effect"]].head(20))

# Inspect actual annotation values, then choose an exact cohort.
print(profile["OncotreeLineage"].value_counts())
known = profile.dropna(subset=["OncotreeLineage"])
lung = known.loc[known["OncotreeLineage"].eq("Lung"), "gene_effect"]
other = known.loc[~known["OncotreeLineage"].eq("Lung"), "gene_effect"]
if lung.empty or other.empty:
    raise ValueError("Both cohorts require observed effects and known lineage")
print({"n_lung": len(lung), "n_other": len(other),
       "other_minus_lung_mean": other.mean() - lung.mean(),
       "lung_fraction_below_exploratory_cutoff": (lung <= -0.5).mean()})

This is a descriptive comparison against other cancer models, not against normal tissue. Keep the denominator and missingness counts. Preserve complete gene labels; a symbol can be ambiguous, and the helper refuses ambiguous symbol resolution.

4. Test biomarker associations

  1. Define the alteration before inspecting target scores. A damaging-call matrix does not establish biallelic loss; activating KRAS hotspots require a different definition from generic damaging mutations.

  2. Map profiles to the correct model/condition. Use 0 only for an assayed negative, 1 for the prespecified biomarker, and missing for unknown status.

  3. Restrict to scientifically comparable models (lineage, culture conditions, screen source and related-patient structure). Inspect confounding before testing.

  4. Test every eligible gene in the planned family, then adjust all its p-values before selecting hits. Report group sizes, effect sizes, p-values, and q-values.

  5. Validate candidate synthetic lethality with matched/isogenic perturbations and rescue or orthogonal evidence; association alone is insufficient.

import pandas as pd
from scripts.depmap_data import biomarker_scan

# User-prepared, release-matched annotation after the mapping and curation above.
status = pd.read_csv("curated_biomarker_status.csv", index_col="ModelID")["status"]
results = biomarker_scan(effects, status, min_n=5)
# Positive effect_size means stronger dependency in biomarker-positive models.
candidates = results.loc[(results["qval"] < 0.1) & (results["effect_size"] > 0)]

This one-sided Mann–Whitney screen is exploratory and does not adjust for covariates. min_n=5 is an explicit example floor, not a power guarantee. For inference across lineages, fit an appropriate adjusted model and inspect effect stability within lineages; do not report the helper's q-value as confounder-adjusted.

5. Co-essentiality and drug sensitivity

from scripts.depmap_data import coessentiality

correlates = coessentiality(effects, "KRAS (3845)", min_n=500)
print(correlates[["gene", "n", "r", "pval", "qval"]].head(20))

min_n is configurable and should be prespecified for the analysis. Sparse genes can dominate rankings with spurious correlations; always retain the pairwise sample count. The helper uses pairwise complete observations and skips constant genes. Pearson/BH output still needs lineage, library, and screen-quality checks; co-essentiality is not proof of a physical interaction or shared pathway. The DepMap team's discussion documents this specific sparse-coverage failure mode.

For PRISM, first select the exact screen/release and endpoint. Treatment-info CSVs are annotations, not sensitivity values. The original primary screen's primary-screen-replicate-collapsed-logfold-change.csv has response rows keyed by cell-line row_name and columns keyed by treatment column_name. Join the corresponding cell-line and treatment-info files; retain compound, dose, and screen identity. Lower log2 fold change indicates greater loss of viability. Secondary-screen AUC comes from dose-response curve parameters and is not the same quantity as single-dose log fold change. See the PRISM workflow before loading these files.

Validation and sources

Before reporting: verify release/file identity, unique joins, identifier level, complete gene labels, cohort membership, missingness, screen eligibility, score units/direction, multiple-testing family, and whether evidence is observational. Expression, copy number, and CRISPR can share technical confounders; low expression does not guarantee a measured score of zero. Broad essentiality motivates normal cell/selectivity studies; it does not by itself prove a target is undruggable.

The live no-captcha catalogue and original PRISM READMEs were fetched successfully. The helper uses Python urllib, which succeeded at review; the same public endpoint returned HTTP 403 with a default requests client. Surface access failures instead of treating an error page as data. Protected portal endpoints returned verification pages; authenticated downloads and current-matrix end-to-end analysis remain unverified. This review makes no claim of a working bearer-token API or undocumented gene-query endpoints.

Files

references/dependency_analysis.md

DepMap dependency analysis contracts

Release and score provenance

Pin the release, filenames, checksums, README, and cohort/filter rules. A portal view can use a newer release or a different condition than a saved matrix. Use the release citation from the dataset entry, alongside the method paper. Do not transfer the license of this skill to downloaded data.

The public metadata route returns one complete CSV, not JSON or a paginated dataset API. As of 2026-09-30 it contained 1,436 rows. The url column was populated for some older resources but empty for all 26Q1 and 25Q3 release entries. A blank URL does not mean the dataset is absent: use portal downloads to obtain protected release files. The original catalogue route may return HTML with HTTP 200; never save that response as a successful matrix download.

The July 2026 access announcement described bearer-token access as future work. Do not invent authentication headers or attempt to bypass verification. A direct signed URL obtained through authorized portal access can expire; retrieve a fresh one when needed.

Chronos normalization sets global control reference levels near 0 (nonessential) and −1 (common-essential). It is not a universal per-cell cutoff. Prefer the release-matched AchillesCommonEssentialControls.csv and AchillesNonessentialControls.csv over ad hoc lists of ribosomal or unexpressed genes. Unexpressed genes and safe-harbor loci are not interchangeable controls. Do not apply universal rules such as “skewness < −1 and AUC > 0.85” to screen QC; use the release's reported metrics, flags, and eligibility definition.

There is a documentation ambiguity worth resolving for any binary hit call: DepMap staff describes CRISPRGeneDependency as dependency probability, while the Chronos README describes publishing fdr_from_probabilities under that filename. These have opposite cutoff directions. The current protected release README/data were not fetched for this review. Inspect that release's definition and controls before thresholding; do not infer probability versus FDR from values lying in [0, 1]. The local helpers analyze gene effect and do not choose a dependency-statistic cutoff.

Correct unit of observation

A model is not a screen or sequencing library. Model metadata include ModelID, CellLineName, OncotreeLineage, and OncotreePrimaryDisease. Patient-related models, replicate screens, and multiple growth conditions can violate independence assumptions. Record which unit is being compared.

Current omics files may have multiple SequencingID rows per model. After choosing an assay, select the appropriate default flag and check uniqueness:

import pandas as pd
from scripts.depmap_data import default_model_rows

# Illustrative until the selected release's headers and values are inspected.
raw = pd.read_csv("OmicsExpressionTPMLogp1HumanProteinCodingGenes.csv")
print(raw.columns[:10].tolist())
expression_by_model = default_model_rows(raw, flag="IsDefaultEntryForModel")
# Select gene columns using Gene.csv / the release schema before calculations;
# SequencingID, ModelConditionID and default flags are not expression measurements.

For a condition-specific analysis, select IsDefaultEntryForMC and use ModelConditionID as the observation key instead; the model-level helper is intentionally inappropriate. A unique default per model does not make different assays interchangeable. See current mapping guidance and why multiple sequences exist.

Use explicit mappings from ScreenSequenceMap.csv, CRISPRScreenMap.csv, ModelCondition.csv, and OmicsProfiles.csv. Never recover ModelID by casually splitting every identifier: naming conventions vary between files. In 26Q1, CRISPRInferredModelEfficacy.csv is a documented exception whose misleading ModelID column actually contains composite replicate-sequence identifiers. Staff provides its parsing contract; consult that explanation if using this QC output. It is not the effect matrix.

Mutation and copy-number contrasts

A 1 in the damaging mutation matrix identifies that annotation class, not confirmed biallelic gene loss. A 0 is not necessarily “wild type” for every possible alteration: hotspots, fusions, copy-number changes, regulatory changes, and assay coverage need separate consideration. Missing/untested calls remain missing. The helper deliberately excludes them from both comparison groups.

For synthetic-lethality hypotheses, define loss of function using the scientific question and supporting annotation (allele, zygosity/LOH, transcript consequence, expression, copy number). Predefine which models are eligible. Stratification or covariate adjustment is required where mutation status tracks lineage, library, culture conditions, or related patients. Report the unfiltered tested family as well as the selected candidates; an empty eligible family is a valid result.

The 25Q2 pipeline separated WGS and WES copy-number outputs because the new WGS method is not compatible with the WES method. In 26Q1, OmicsCNGeneWGS.csv gives linear copy number relative to model ploidy: about 1 can represent an unaltered locus in either a diploid or tetraploid model. It is not absolute two-copy dosage. Inspect transforms for portal log products before inverting them, and do not label a universal ratio cutoff as homozygous loss. Sources: 25Q2 changes, 26Q1 normalization clarification.

Co-essentiality

Use pairwise nonmissing measurements and report n for every correlation. The bundled helper rejects duplicate observation IDs, skips constant vectors, and applies BH correction across all eligible correlations to the chosen target. This corrects the stated family only; scanning many target genes requires a broader prespecified family. Different pairs may use different model sets, so check rankings on a common cohort and across lineage/library strata.

The example minimum of 500 models is a conservative configurable analysis choice, not a claim that every portal dataset has that coverage or that the portal's current implementation uses that threshold. DepMap staff has documented sparse single-library genes producing misleading top correlations. A small p-value cannot remove shared lineage or technical confounding.

PRISM response versus annotation

For the original PRISM Repurposing resource:

InputRole and keys
primary-screen-replicate-collapsed-logfold-change.csvNumeric log2 response; row IDs match row_name, columns match column_name
primary-screen-cell-line-info.csvrow_name to depmap_id; includes STR identity/QC annotations
primary-screen-replicate-collapsed-treatment-info.csvcolumn_name to broad_id, compound name, dose in µM, and screen_id
secondary-screen-dose-response-curve-parameters.csvLong table keyed by compound/model/screen, with auc, ic50, ec50, convergence, and r2

Matrix columns identify experimental conditions, not simply compound names. Do not split a guessed broad_id::name::dose format; join treatment metadata. Check axis overlap and mapping uniqueness before merging. Handle replicate or screen duplicates with an explicit policy and retain dose. Use STR-QC annotations and the corrected model identity where supplied.

A minimal axis check (illustrative with your downloaded original-primary files):

import pandas as pd

response = pd.read_csv("primary-screen-replicate-collapsed-logfold-change.csv", index_col=0)
cells = pd.read_csv("primary-screen-cell-line-info.csv").set_index("row_name")
treatments = pd.read_csv("primary-screen-replicate-collapsed-treatment-info.csv").set_index("column_name")
if not cells.index.is_unique or not treatments.index.is_unique:
    raise ValueError("Duplicate PRISM metadata identifiers")
if not response.index.is_unique or not response.columns.is_unique:
    raise ValueError("Duplicate PRISM matrix identifiers")
if len(response.index.difference(cells.index)) or len(response.columns.difference(treatments.index)):
    raise ValueError("PRISM axes do not match the selected metadata files")
# Keep response numeric; join cells/treatments only after selecting the question.

Lower primary log2 fold change means greater growth suppression relative to controls. For secondary AUC, examine curve-fit convergence, coverage of the concentration range, and fit quality; compare like endpoints and doses. IC50 can be unidentifiable or beyond the assayed range. Avoid treating nonconverged/missing fits as resistance. A compound's annotated target does not prove that target mediates the response.

The original secondary screen tested 1,448 compounds in an eight-dose series; the previous “~8,000 compounds” claim was incorrect. Later PRISM releases have different sample sizes and structures. The original landing page and secondary README disagree on cell-line counts, so derive counts after documented QC from the chosen files rather than copying a global count. Consult the primary README and secondary README for their specific processing and technical-redo rules.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key, Needs Python

The author says: Requires Python 3.10+ with numpy, pandas, and scipy>=1.11 for the bundled helpers. Network access is needed for release discovery; downloading current data may require browser verification through the DepMap portal.

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Kuan-lin Huang
Publisher
K-Dense (Community)
Distributed by
K-Dense
Source
K-Dense-AI/scientific-agent-skills · skills/depmap · commit a25cf9e
Licence
Creative Commons Attribution 4.0 International (redistribution allowed)
  • LICENSE (written by AutoGineer)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Kuan-lin Huang or K-Dense.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download depmap.zip