Skip to content

Update SDRF annotation for PXD006675 (region- and cell-type-resolved human heart atlas) - #62

Merged
ypriverol merged 2 commits into
bigbio:mainfrom
enriquea:annotation/PXD006675-update
Aug 3, 2026
Merged

Update SDRF annotation for PXD006675 (region- and cell-type-resolved human heart atlas)#62
ypriverol merged 2 commits into
bigbio:mainfrom
enriquea:annotation/PXD006675-update

Conversation

@enriquea

Copy link
Copy Markdown
Contributor

Update SDRF annotation for PXD006675 (Doll et al., human heart atlas)

PXD006675Region and
cell-type resolved quantitative proteomic map of the human heart
, Doll, Dreßen, Geyer,
… Krane, Mann, Nat Commun 2017, doi:10.1038/s41467-017-01747-2
(PMC5684139, open access).

Same 594 rows and the same 594 raw files as the current annotation — no runs added or
dropped. The changes are to the sample metadata.

Why this update

The dataset's defining axis is anatomical region, but every row currently reads
characteristics[organism part] = heart. The region was present only as a bare code in
characteristics[phenotype], and the atrial-fibrillation arm was attached to the wrong
runs.

before after
distinct organism part values 1 20
rows with an ontology-coded organism part 0 518
rows with an ontology-coded disease 0 473
rows carrying a donor age 94 473
factor value[…] columns 0 2

Corrections

1. Region resolved (441 atlas runs). The 16 regions are recoverable from the run
names, where the trailing digit is the donor (3, 4, 8):

LA LV RA RV · Ao PA Vcavainf PVe · TV MV PV AV · SepA SepV · LH CP

Each is now a UBERON term in organism part, e.g. NT=interventricular septum;AC=UBERON:0002094. Structure checks out: 16 regions × 3 donors × ~9 fractions =
441 runs.

2. The atrial-fibrillation arm was on the wrong runs. Supplementary Table 3 names
exactly three AFib patients — A3689 (F, 76, persistent), A2719 (M, 78, permanent),
A2725 (F, 74, persistent) — and Fig. 6a states their LA tissue was run as technical
triplicates. The deposit contains exactly three runs for each of those IDs.

The current file instead labels nine AF_Easy12_14_DMSO_A#### runs as atrial
fibrillation, and labels the three real patients trauma victims. Those AF_… runs
carry donor IDs that appear nowhere in Supplementary Table 3; AF in this deposit is
adipose fibroblast (Methods: AFs isolated from subcutaneous fat, frozen in DMSO),
which collides with the paper's use of "AFib" for the disease. They are now annotated as
AF cell cultures with disease = not available, and the AFib label moved to A3689 /
A2719 / A2725 with their published age, sex and AF type.

3. Six individuals that do not exist have been removed. Each AFib patient's technical
replicates had been given incremented IDs — A3689 → A3690, A3691, A2719 → A2720, A2721, A2725 → A2726, A2727. Those are the same three patients, now annotated as
comment[technical replicate] 1–3.

4. disease = "trauma victims"normal (PATO:0000461). Supplementary Table 1
records heart morphology "no abnormality detected" for all three donors, and the Methods
state the hearts "did not present any relevant injury or signs of cardiac malfunction and
were therefore defined as healthy". The autopsy provenance is preserved in
characteristics[phenotype] instead of being written into the disease column.

5. Donor demographics propagated. Run-name donor 3/4/8 → Supplementary Table 1
subjects 1/2/3 (male 22 y, male 21 y, male 47 y). The existing file already carried these
ages on 27 runs each, consistently; they now apply to all runs of each donor.

6. Cell types resolved to CL with their true tissue of origin, which is not the heart
for two of them: EC → cardiac endothelial cell (CL:0010008, atrium), CF →
fibroblast of cardiac tissue (CL:0002548, atrium), AF → fibroblast (CL:0000057,
subcutaneous adipose tissue), SMC → smooth muscle cell of the internal thoracic artery (CL:0002593, internal thoracic artery).

7. Technical metadata completed from the Methods. Added Lys-C alongside trypsin
(digestion was Lys-C + trypsin, 1:50 overnight then 1:100 for 3 h), plus dissociation
method, collision energy (27% NCE) and high-pH reversed-phase fractionation.
Acetyl changed from PP=Any N-term to PP=Protein N-term, matching MaxQuant's own
summary.txt in the deposit (Oxidation (M);Acetyl (Protein N-term)). Carbamidomethyl,
Oxidation and the tolerances were already correct and are unchanged.

8. Fraction identifiers now come from the submitter. ExperimentalDesignHeartAtlas.txt
inside the deposit's search.zip gives the per-run fraction; MaxQuant's 100 (meaning
unfractionated) is mapped to fraction identifier 1. This covers 564 of 594 runs; the rest
keep the fraction parsed from the run name.

LH and CP — the one inference in this PR

These are the study's two coronary arteries (the paper lists LCA and RCA among its 16
regions, and after mapping the other 14 tokens these are the only ones left), but the
strings LH and CP appear nowhere in the paper or its supplementary material.
They are annotated LH = left coronary artery (UBERON:0001626) and CP = right coronary artery (UBERON:0001625) on two independent grounds that agree:

  1. Column ordering. Five supplementary data sheets and the Supplementary Figure 8
    x-axis all list the regions in the same non-alphabetical order
    Ao AV RCA LA LCA LV MV PA PV PVe RA RV SepA SepV TV IVC. That is exactly the
    case-insensitive alphabetical sort of the internal run tokens
    {Ao AV CP LA LH LV MV PA PV PVe RA RV SepA SepV TV Vcavainf} under LH→LCA, CP→RCA.
    The opposite assignment reproduces none of those orderings.
  2. Quantitative correlation. proteinGroups.txt inside the deposit's search.zip
    carries per-donor intensities under LH3/LH4/LH8 and CP3/CP4/CP8. Correlating
    per-region medians against the published LCA/RCA copy-number columns of Supplementary
    Data 3 gives the same assignment, with the other 14 regions as a positive control.

This is the main thing to check. If a reviewer with knowledge of the original sample
naming disagrees, the fix is two lines, and the conservative fallback is the unsided
parent coronary artery (UBERON:0001621) for both.

Other things a reviewer may want to weigh in on

  • The 99 pilot / method-development runs (singleShot, BoxCar, urea, test,
    misslabeled, …) are annotated with the region where the run name states one and
    not available otherwise, with phenotype = method-development / pilot run. An
    alternative would be to drop them from the SDRF.
  • AF_Easy12_14_DMSO_A#### is read as adipose-fibroblast cultures from six cell donors.
    The reasoning is above; disease is left not available rather than asserting a state.

Validation

parse_sdrf validate-sdrf --sdrf_file datasets/PXD006675/PXD006675.sdrf.tsv --use_ols_cache_only
# Everything seems to be fine. Well done.
  • Passes with sdrf-pipelines from GitHub main.
  • Every comment[data file] value is unchanged from the current annotation and matches
    the PRIDE deposit; 594 rows, 594 unique files, no duplicates.
  • No (source name, fraction identifier, technical replicate, label) collisions.
  • Every ontology accession resolved live against OLS4 and re-checked by an independent
    pass; all CL/UBERON terms confirmed non-obsolete via the OLS term endpoint.

Annotated with sdrf-skills.

Region- and cell-type-resolve the annotation of the Doll/Mann heart atlas.
Same 594 rows and same 594 raw files; sample metadata corrected.

- organism part: all rows were "heart"; now 16 UBERON-coded anatomical
  regions for the 441 atlas runs (region + donor are encoded in the run
  names), plus the true tissue of origin for the isolated cell cultures.
- atrial fibrillation arm was attached to the wrong runs. Supplementary
  Table 3 names A3689/A2719/A2725; the file instead labelled nine
  adipose-fibroblast (AF) culture runs as AFib and called the real
  patients "trauma victims".
- removed six individuals that do not exist (A3690, A3691, A2720, A2721,
  A2726, A2727) - these were technical replicates of the three patients.
- disease "trauma victims" -> normal (PATO:0000461); autopsy provenance
  moved to characteristics[phenotype].
- donor demographics from Supplementary Table 1 propagated to all runs.
- cell types resolved to CL with correct origin tissue.
- added Lys-C, dissociation method, collision energy and fractionation
  method from the Methods; Acetyl corrected to Protein N-term per the
  deposit's own MaxQuant summary.txt.
- fraction identifiers taken from the submitter's
  ExperimentalDesignHeartAtlas.txt inside search.zip.

LH/CP are annotated as left/right coronary artery by inference; the
derivation and a fallback are documented in the PR description.
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • datasets/PXD006675/PXD006675.sdrf.tsv is excluded by !**/*.tsv

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 10854f00-540b-4cad-b429-c704c2a93263

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ypriverol
ypriverol requested a review from Copilot August 3, 2026 06:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ypriverol

Copy link
Copy Markdown
Member

Some comments @enriquea:

Normally; we use the label style for sample metadata instead of the full term; like:

NT=mitral valve;AC=UBERON:0002135 -> mitral valve

For the samples we use PX{}-Sample{index}

instead of Donor8 -> PXD006675-Sample-{index}

For the individual, we do use another notation, like accession, which enable to know samples that comes from the same patient/individual.

enriquea added a commit to enriquea/sdrf-annotated-datasets that referenced this pull request Aug 3, 2026
…ssions

Applies the review feedback from @ypriverol on bigbio#62 to this batch.

  1. characteristics[*] now carry the bare ontology label
     (NT=mitral valve;AC=UBERON:0002135 -> mitral valve). comment[*] keep
     the NT=..;AC=.. form, matching the corpus: of 220 datasets sampled on
     main, comment[instrument] is NT=..;AC=.. in 209 and
     comment[cleavage agent details] in 212, while characteristics[*] are
     predominantly bare labels.

  2. source name is now <ACCESSION>-Sample-<n>, assigned per sample so
     fractions and technical replicates of one sample keep sharing an
     identifier.

  3. characteristics[individual] is now <ACCESSION>-Individual-<n>,
     assigned per distinct individual so samples from the same donor stay
     linkable. The original donor/patient codes from each paper are
     recorded in the PR description so the mapping stays traceable.

19/19 validate; no coordinate collisions introduced.
…ssions

Applies @ypriverol's review feedback on this PR.

  1. characteristics[*] now carry the bare ontology label
     (NT=mitral valve;AC=UBERON:0002135 -> mitral valve). comment[*] keep
     the NT=..;AC=.. form, matching the corpus on main.
  2. source name is now PXD006675-Sample-<n> (160 samples), replacing the
     descriptive names such as Donor8_LV.
  3. characteristics[individual] is now PXD006675-Individual-<n>, replacing
     the paper's donor codes (A3689, A2719, A2725, ...). The mapping is
     recorded in the PR description so the link to Supplementary Table 3
     stays traceable.

594/594 rows validate; no coordinate collisions introduced.
enriquea added a commit to enriquea/sdrf-annotated-datasets that referenced this pull request Aug 3, 2026
Applies @ypriverol's review feedback from bigbio#62 to this batch.

  1. characteristics[*] now carry the bare ontology label throughout
     (organism, disease). organism part was already bare here. comment[*]
     keep the NT=..;AC=.. form, matching the corpus on main.
  2. source name was already <ACCESSION>-Sample-<n>; unchanged.
  3. characteristics[individual] is now <ACCESSION>-Individual-<n>,
     replacing the descriptive per-animal labels such as WT_rep1.

14/14 validate; no coordinate collisions introduced.
@enriquea

enriquea commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

All three applied here and to #61 and #63, since the same conventions were wrong across all of them.

1. Bare labels. characteristics[*] now carry the label only (NT=mitral valve;AC=UBERON:0002135mitral valve). I scoped this to characteristics[*] and left comment[*] as NT=..;AC=.., based on what main actually does — in 220 sampled datasets, comment[instrument] is NT=..;AC=.. in 209 and comment[cleavage agent details] in 212, while the characteristics[*] columns are predominantly bare labels. Say the word if you want comment[*] converted too.

2. Sample accessions. source name is now PXD006675-Sample-<n> (160 samples here), assigned per sample so fractions and technical replicates of one sample keep sharing an identifier. #63 already used this; #61 and #62 have been converted.

3. Individual. This is the one I had to interpret, so flagging it explicitly: characteristics[individual] is corpus-wide free-form today (139 datasets, none accession-style), so there was no existing pattern to copy. I used <ACCESSION>-Individual-<n>, numbered per distinct individual, which keeps same-donor samples linkable and parallels the sample accessions. If you have a different notation in mind, tell me the shape and I'll re-run it — it's a scripted rename across all three PRs.

One consequence worth surfacing: for this dataset the individual column held real donor codes tied to Supplementary Table 3 of the paper, so replacing them loses that link. Recording the mapping here to keep it traceable:

Individual Original donor code
PXD006675-Individual-1 subject 1
PXD006675-Individual-2 subject 2
PXD006675-Individual-3 subject 3
PXD006675-Individual-4 A2719
PXD006675-Individual-5 A2725
PXD006675-Individual-6 A3689
PXD006675-Individual-7 A21
PXD006675-Individual-8 A2684
PXD006675-Individual-9 A2771
PXD006675-Individual-10 A3602
PXD006675-Individual-11 A3762
PXD006675-Individual-12 A3780

Individuals 4–6 are the atrial fibrillation patients; 1–3 are the healthy multi-region donors. If you'd rather keep the published codes visible, an alternative is PXD006675-Individual-A3689 — that satisfies the accession prefix while staying greppable against the paper.

All three PRs revalidate clean after the change (19/19, 594/594 rows, 14/14) with no coordinate collisions introduced.

Two things unrelated to your comment that need a maintainer decision:

  • CodeRabbit reviews nothing in this repo. There's no .coderabbit.yaml, so it runs on defaults, and the default filters exclude !**/*.tsv — every PR here gets a green "Review completed" having read zero files. A one-line config adding **/*.tsv would fix it.
  • The judgment calls I flagged in the PR bodies still need a domain opinion, particularly the LH/CP → left/right coronary artery inference in this PR.

ypriverol pushed a commit that referenced this pull request Aug 3, 2026
* Add SDRF annotations for 16 mouse cardiac proteomics datasets

Mouse heart datasets from PRIDE, scoped as one organism per PR.
549 sample rows, all passing parse_sdrf validate-sdrf.

Covers TAC/pressure-overload, myocardial infarction, ischaemia-
reperfusion, diabetic (db/db) and obese hearts, propionic acidemia
cardiomyopathy, Alpk3 gene therapy, a chamber x age regional atlas,
and cardiac differentiation timepoints.

Conventions adopted per maintainer request:
- characteristics[organism part] carries the bare ontology label
  ("heart") rather than NT=..;AC=..; every label verified to be an
  exact UBERON label.
- source name is <ACCESSION>-Sample-<n>, assigned per sample so
  fractions and technical replicates share an identifier.

Every row maps to a run that exists in the PRIDE deposit and every
deposited acquisition is annotated. Nine screened candidates were
refused rather than guessed: five were not cardiac material (kidney,
aorta, MEFs, recombinant protein, multi-organ survey), three were
multiplexed with no channel-to-sample key, one did not complete.

* Remove two mixed-organism datasets from the mouse batch

Self-review found both were labelled Mus musculus on every row while
actually containing human material:

- PXD014317: 8 of 10 runs are human iPSC-derived cardiomyocytes; only
  2 are mouse heart. Its organism part was also "heart" for cultured
  cells, inconsistent with PXD007684 in the same batch.
- PXD077620: 8 of 38 runs are human cardiac organoids (TTNtv model).
  PRIDE lists only Mus musculus for this project; the human organoid
  arm is visible in the run names and the study design.

Both need a per-group organism, which the builder does not model, and
neither belongs in a mouse-scoped PR. Deferred to a mixed/organoid
batch. The builder now refuses any multi-organism dataset outright so
this cannot recur silently.

* Fill developmental stage, age, sex and strain where the record states them

PXD043384 and PXD054672 are the only two datasets in this batch whose
per-sample metadata is recoverable without going back to the papers:

  PXD043384  adult / 8W / female
             PRIDE description: "Ventricular tissue of 8 week female PA
             mice and their female wild-type littermates". Strain of the
             PA model is not stated anywhere in the record, so it stays
             "not available".

  PXD054672  adult / 12W / male, per-group strain
             PRIDE sample protocol names both Envigo strains explicitly
             (B6.V-Lepob/OlaHsd for ob/ob, C57BL/6JOlaHsd for WT). Sex is
             not in the PRIDE record; confirmed male from the linked paper
             (Guedouari et al. 2025, PMC12148419: "12-week old male ...
             ob/ob mice").

The remaining 12 datasets in this batch do not state strain, sex or age
in their PRIDE records and would need a full-text pass.

* Adopt maintainer conventions: bare labels and individual accessions

Applies @ypriverol's review feedback from #62 to this batch.

  1. characteristics[*] now carry the bare ontology label throughout
     (organism, disease). organism part was already bare here. comment[*]
     keep the NT=..;AC=.. form, matching the corpus on main.
  2. source name was already <ACCESSION>-Sample-<n>; unchanged.
  3. characteristics[individual] is now <ACCESSION>-Individual-<n>,
     replacing the descriptive per-animal labels such as WT_rep1.

14/14 validate; no coordinate collisions introduced.
@ypriverol
ypriverol merged commit db94c33 into bigbio:main Aug 3, 2026
3 checks passed
ypriverol pushed a commit that referenced this pull request Aug 3, 2026
* Add SDRF annotations for 19 heart-tissue proteomics datasets

Human cardiac tissue and cardiac-disease datasets from PRIDE Archive,
covering coronary/ischaemic disease, congenital heart disease, valvular
disease, cardiomyopathy, heart failure (HFpEF/HFrEF) and cardiac ageing,
plus four animal cardiac-disease models.

916 sample rows total. Every row maps to a raw file that exists in the
corresponding PRIDE deposit; all ontology terms resolved against OLS4.
All files pass `parse_sdrf validate-sdrf --use_ols_cache_only`.

Annotated with sdrf-skills (github.com/bigbio/sdrf-skills).

* Fix coordinate collisions in PXD052878 pooled reference rows

The review gate flagged 10 collisions. The deposited pooled runs are two
distinct preparations that were wrongly merged under one source name:
unfractionated repeat injections (Pooled_1_SHALLOW, Pooled_2..9) and
offline high-pH RP fractions (Frac1..16, four re-injected).

Split into Pooled_reference_unfractionated (fraction 1, technical
replicates 1-9) and Pooled_reference_hpH_RP (fraction N, technical
replicate 1-2), so every row has a unique
(source name, fraction identifier, technical replicate) coordinate.

* Adopt maintainer conventions: bare labels, sample and individual accessions

Applies the review feedback from @ypriverol on #62 to this batch.

  1. characteristics[*] now carry the bare ontology label
     (NT=mitral valve;AC=UBERON:0002135 -> mitral valve). comment[*] keep
     the NT=..;AC=.. form, matching the corpus: of 220 datasets sampled on
     main, comment[instrument] is NT=..;AC=.. in 209 and
     comment[cleavage agent details] in 212, while characteristics[*] are
     predominantly bare labels.

  2. source name is now <ACCESSION>-Sample-<n>, assigned per sample so
     fractions and technical replicates of one sample keep sharing an
     identifier.

  3. characteristics[individual] is now <ACCESSION>-Individual-<n>,
     assigned per distinct individual so samples from the same donor stay
     linkable. The original donor/patient codes from each paper are
     recorded in the PR description so the mapping stays traceable.

19/19 validate; no coordinate collisions introduced.

* Fix pediatric developmental stage and age format in PXD021990

Addresses @Copilot's review comment on this PR.

This is a pediatric aortic valve cohort (donors aged ~2 weeks to 17 years,
per Supplemental Table S5), but every row asserted
characteristics[developmental stage] = adult. Two problems, one of which
the validator did not catch:

  1. developmental stage was wrong for all 20 donors. EFO has no 'child'
     or 'adolescent' term - the only accurate terms under EFO:0000399 are
     neonate (EFO:0001372, 0-28 days) and infant (EFO:0001355, under 1
     year). Donors under 1Y now carry those; donors aged 2-17Y carry
     'not available' rather than a false 'adult'. The real information is
     in characteristics[age], which is populated per donor.

  2. six ages were decimal years (0.04Y, 0.15Y, 0.17Y, 0.58Y, 0.66Y,
     0.75Y), which violate the age pattern in the human v1.1.0 template
     (whole numbers only, Y>M>W>D). parse_sdrf reports these as valid, so
     this passed CI. Most were clean twelfths and are now months
     (0.17Y->2M, 0.58Y->7M, 0.66Y->8M, 0.75Y->9M); the other two are
     weeks (0.04Y->2W, 0.15Y->8W).

No other dataset in this batch is affected: the only other age/stage
mismatches flagged were 8-week and 12-week mice in #63, which are adults.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants