Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -599,4 +599,10 @@ yarn-error.log

# End of https://www.toptal.com/developers/gitignore/api/python,node,vue,vuejs,matlab

# Include only the submitted GSE194040 package provenance logs.
!flask_backend/models/gse194040_pcr_expression_elastic_net/logs/
flask_backend/models/gse194040_pcr_expression_elastic_net/logs/*
!flask_backend/models/gse194040_pcr_expression_elastic_net/logs/gse194040_model_training_session_info.json
!flask_backend/models/gse194040_pcr_expression_elastic_net/logs/gse194040_session_info.json


Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.git
.gitignore
.venv
venv
env
ENV
__pycache__
*.py[cod]
.pytest_cache
.coverage
htmlcov
tmp
temp
*.tmp
*.pptx
*.pdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
cff-version: 1.2.0
message: >-
If you use this package, cite this software record and the source
GSE194040 dataset.
title: "GSE194040 exploratory pooled pCR expression-classifier pipeline"
type: software
authors:
- family-names: "Charles"
given-names: "Rhea"
affiliation: "George Washington University HIVE Lab"
email: "riocx1997@gmail.com"
abstract: >-
A reproducible research package that prepares the public GSE194040/I-SPY2
gene-expression data and applies a frozen Elastic Net logistic-regression
pipeline to predict pathological complete response.
keywords:
- GSE194040
- I-SPY2
- breast cancer
- gene expression
- elastic net
- machine learning
references:
- type: data
title: "I-SPY2-990 mRNA/RPPA Data Resource: mRNA component"
authors:
- family-names: "Wolf"
given-names: "Denise"
- family-names: "Yau"
given-names: "Christina"
- family-names: "van 't Veer"
given-names: "Laura"
identifiers:
- type: other
value: "GSE194040"
description: "NCBI Gene Expression Omnibus accession"
url: "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE194040"
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM python:3.12.13-slim

LABEL org.opencontainers.image.title="GSE194040 exploratory pCR expression classifier"
LABEL org.opencontainers.image.description="Reproducible research package for the pooled GSE194040 Elastic Net pCR classifier"

ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1

WORKDIR /app

COPY requirements-lock.txt .
RUN python -m pip install --upgrade pip==25.0.1 \
&& python -m pip install -r requirements-lock.txt

COPY . .

CMD ["python", "scripts/predict_gse194040_single_patient.py", "--help"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Licensing status and scope

This file records only licence information verified inside this package. It is
not itself a licence grant, and one component's licence must not be assumed to
cover another component.

## Package contributor metadata

Rhea Charles is the sole package contributor, affiliated with George Washington
University HIVE Lab, with the role PredictMod Volunteer and contact email
`riocx1997@gmail.com`. No ORCID was provided. This contributor record does not
assign or alter any licence terms.

## PredictMod repository code

The upstream `GW-HIVE/PredictMod` repository code is licensed under the MIT
License, with the copyright notice:

`Copyright © 2022 HIVE-Lab`

Source: the upstream `GW-HIVE/PredictMod` `LICENSE` file. This verified
repository-level licence does not by itself assign a licence to the submitted
package code or trained model.

## Submitted trained model

The submitted trained model is licensed under the Creative Commons Attribution
4.0 International licence (CC BY 4.0), based on the PredictMod User Guide's
statement that models shared through PredictMod are available to users and
commercial entities under CC BY 4.0.

References:

- HIVE PredictMod User Guide:
`https://hivelab.biochemistry.gwu.edu/predictmod/help`
- Upstream user-guide source:
`https://github.com/GW-HIVE/PredictMod/blob/main/vuetify_app/src/docs/help_content/help.md`
- CC BY 4.0 terms: `https://creativecommons.org/licenses/by/4.0/`

This model licence does not assign CC BY 4.0 to the original GSE194040 source
data.

## BioCompute Object

`bco/gse194040_pcr_pipeline_bco_v1.json` records
`https://spdx.org/licenses/CC-BY-4.0.html` in its provenance domain. This is the
verified licence statement for the BCO document itself. It does not assign that
licence to the repository code, submitted model, source data, or vendored
schema snapshot.

## GSE194040 data

The package attributes its source data to the NCBI Gene Expression Omnibus
accession `GSE194040`, titled "I-SPY2-990 mRNA/RPPA Data Resource: mRNA
component." The GEO record lists Denise Wolf, Christina Yau, and Laura
van 't Veer as series contributors and associate PubMed identifiers `35623341`
and `40905691` with the series.

The downloaded GEO archives and the large processed training CSV are not
distributed in this package. Original GSE194040 source data are governed by
NCBI GEO and the original data submitters' terms. Neither the PredictMod MIT
software licence nor PredictMod's CC BY 4.0 model/database-set terms are
asserted to cover the original GEO data.

Source record:
`https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE194040`

## PredictMod database sets

PredictMod applies CC BY 4.0 to its database sets, based on the HIVE PredictMod
website licence statement. This scope is distinct from both repository source
code and original third-party source data.

References:

- HIVE PredictMod website:
`https://hivelab.biochemistry.gwu.edu/predictmod/`
- Upstream website licence component:
`https://github.com/GW-HIVE/PredictMod/blob/main/vuetify_app/src/views/LicenseShow.vue`
- CC BY 4.0 terms: `https://creativecommons.org/licenses/by/4.0/`

## Vendored IEEE 2791 schema snapshot

`schemas/ieee-2791-v1.4/README.md` records the source and retrieval date of the
vendored schema files, but the package contains no licence or redistribution
terms for that snapshot. An authorized maintainer must confirm that the schema
files may be redistributed and add any required notice.

## Information still required

Before publication or redistribution, confirm the licence and notice
requirements for the vendored IEEE 2791 schema snapshot.
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Package Manifest

The submission package contains 120 files. The full processed training CSV,
downloaded GEO archives, Git LFS rules, generated Python and pytest caches,
volunteership reporting, symposium material, and package-audit documentation
are intentionally excluded.

## Top-level inventory

| Path | File count | Contents |
|---|---:|---|
| `bco/` | 1 | IEEE 2791 BioCompute Object |
| `data_processed/` | 7 | Data dictionaries, manifests, and preprocessing records |
| `docs/` | 7 | Technical model and analysis documentation |
| `examples/` | 1 | Single-patient example input |
| `logs/` | 2 | Preprocessing and model-training session information |
| `models/` | 7 | Frozen model pipelines and selected-model metadata |
| `results/` | 60 | Tables, figures, evaluations, and validation records |
| `schemas/` | 9 | Vendored IEEE 2791 v1.4 schemas |
| `scripts/` | 9 | Preprocessing, training, evaluation, validation, and prediction code |
| `tests/` | 6 | Automated test modules |
| Package-root files | 11 | README, manifest, citation, licensing, dependency, Docker, and pytest configuration |

## Required completion-criteria files

| Requirement | Included path |
|---|---|
| Historical training-dataset provenance | `data_processed/gse194040_preprocessing_summary.md` and `results/reproducibility/gse194040_reproducibility_manifest_v1_20260719.json` |
| Model training | `scripts/train_gse194040_models.py` |
| Single-patient prediction | `scripts/predict_gse194040_single_patient.py` |
| Example patient input | `examples/gse194040_single_patient_input_example.csv` |
| Example prediction output | `results/tables/gse194040_single_patient_prediction_example_v2_uncalibrated_score.csv` |
| Frozen selected model | `models/gse194040_best_model.joblib` |
| BioCompute Object | `bco/gse194040_pcr_pipeline_bco_v1.json` |

## Reproducibility and deployment

- Citation metadata: `CITATION.cff`
- Licence scope and unresolved terms: `LICENSES.md`
- Third-party inventory: `THIRD_PARTY_NOTICES.md`
- Exact Python packages: `requirements-lock.txt`
- Direct dependencies: `requirements.txt`
- Conda environment: `environment.yml`
- Docker build: `Dockerfile`
- Docker exclusions: `.dockerignore`
- Large-data policy: processed training data and downloaded GEO archives are recreated with `scripts/preprocess_gse194040.py`; no package Git LFS rules remain
- Automated tests: `tests/`
- IEEE 2791 v1.4 schemas: `schemas/ieee-2791-v1.4/`
- BCO validation: `scripts/validate_gse194040_bco.py`

## Outputs

- Canonical model summary: `results/gse194040_model_training_summary.md`
- Tables: `results/tables/`
- Figures: `results/figures/`
- Locked evaluation and confidence intervals: `results/evaluation/`
- Calibration diagnostics: `results/calibration/`
- Reproducibility manifest: `results/reproducibility/`
- Test and BCO validation records: `results/validation/`

## Included technical documentation

- `docs/gse194040_bco_pipeline_documentation.md`
- `docs/gse194040_calibration_analysis.md`
- `docs/gse194040_clinical_model_comparison.md`
- `docs/gse194040_preprocessing_leakage_audit.md`
- `docs/gse194040_reproducibility.md`
- `docs/gse194040_single_patient_prediction_usage.md`
- `docs/gse194040_subgroup_evaluation.md`

## Intentional exclusions

- `.pytest_cache/`
- `scripts/__pycache__/`
- `tests/__pycache__/`
- `docs/gse194040_volunteership_report.md`
- `docs/gse194040_symposium_slide_outline.md`
- `docs/gse194040_final_project_verification.md`
- `docs/gse194040_package_audit.md`
- `data_processed/gse194040_ml_ready_pcr_expression.csv`
- `GSE194040/`
- `.gitattributes`

## Scope

This package contains the canonical pooled full-cohort model. The separate
Paclitaxel-only analysis is not a replacement production model and is excluded
pending a project-lead decision on whether it should be a documented
supplement.
Loading