101 lines
4.2 KiB
Markdown
Executable File
101 lines
4.2 KiB
Markdown
Executable File
# Task 2 Independent Verification — Reference-bundle ID evidence schema
|
|
|
|
## Verdict
|
|
|
|
**PASS**
|
|
|
|
Task 2 satisfies the accepted brief. Numeric NCBI GeneID is exposed as a
|
|
separate `ncbi_gene_id` field/TSV column, the existing LOC-style `gene_id`
|
|
semantics are unchanged, missing GeneID metadata produces an empty string, and
|
|
the generated TSV remains readable as a tab-delimited table.
|
|
|
|
## Baseline/current diff evidence
|
|
|
|
Commands run from `/data/project_roots/PlantAI-dev`:
|
|
|
|
```bash
|
|
diff -u /tmp/ppi-id-resolution-task2-baseline/pipeline_backend.py apps/web/pipeline_backend.py
|
|
diff -u /tmp/ppi-id-resolution-task2-baseline/test_pipeline_backend_execution_env.py tests/unit/test_pipeline_backend_execution_env.py
|
|
```
|
|
|
|
The expected `diff` exit status was `1` because differences exist. The complete
|
|
production diff contains only four additions in the two allowed functions:
|
|
|
|
- `_fasta_header_index()` adds the exact numeric parser
|
|
`re.search(r"\[db_xref=GeneID:(\d+)\]", header)` and stores its capture in
|
|
`ncbi_gene_id`, defaulting to `""` when absent.
|
|
- `_build_reference_bundle_id_map()` adds `ncbi_gene_id` to the TSV field list
|
|
and fills it using the same CDS-first, PEP-fallback precedence as `gene_id`.
|
|
- The pre-existing `gene_id` regex and row expression are byte-for-byte
|
|
unchanged by the diff:
|
|
`cds.get("gene_id", "") or pep.get("gene_id", "")`.
|
|
|
|
The complete test diff contains only the `csv` import and one focused test,
|
|
`test_reference_bundle_id_map_preserves_loc_and_numeric_geneid`. That test
|
|
writes a CDS header containing both `[gene=LOC110806180]` and
|
|
`[db_xref=GeneID:110806180]`, reads the generated TSV with
|
|
`csv.DictReader(..., delimiter="\t")`, and asserts the two values remain in
|
|
separate columns.
|
|
|
|
CodeGraph inspection of the complete changed functions confirmed that the
|
|
remaining FASTA indexing, ID union/sorting, presence flags, headers, overlap
|
|
metrics, and return schema are unchanged. No PPI query, ortholog, frontend,
|
|
canonical-ID, contract, manifest, or unrelated-stage code appears in either
|
|
diff.
|
|
|
|
## Fresh required verification
|
|
|
|
### Focused reference-bundle/PPI suite
|
|
|
|
```bash
|
|
/home/xia-lab/miniconda3/envs/test4py311/bin/python -m pytest tests/unit/test_pipeline_backend_execution_env.py -k 'reference_bundle or ppi' -q
|
|
```
|
|
|
|
Exit code: `0`
|
|
|
|
```text
|
|
collected 31 items / 6 deselected / 25 selected
|
|
25 passed, 6 deselected in 1.67s
|
|
```
|
|
|
|
### Syntax compilation
|
|
|
|
```bash
|
|
/home/xia-lab/miniconda3/envs/test4py311/bin/python -m py_compile apps/web/pipeline_backend.py tests/unit/test_pipeline_backend_execution_env.py
|
|
```
|
|
|
|
Exit code: `0`; no output.
|
|
|
|
## Independent TSV round-trip probe
|
|
|
|
I ran an additional temporary-file probe against the current
|
|
`_build_reference_bundle_id_map()` implementation. It created two aligned
|
|
PEP/CDS records: one containing LOC plus numeric GeneID metadata, and one
|
|
legacy record containing LOC but no GeneID metadata. It then opened the emitted
|
|
file with `csv.DictReader(delimiter="\t")` and asserted the exact header and
|
|
values.
|
|
|
|
Exit code: `0`
|
|
|
|
```json
|
|
{"fieldnames": ["species_code", "protein_id", "pep_id", "cds_id", "gene_id", "ncbi_gene_id", "pep_present", "cds_present", "pep_header", "cds_header"], "missing": {"gene_id": "LOC0002", "ncbi_gene_id": ""}, "present": {"gene_id": "LOC0001", "ncbi_gene_id": "12345"}, "readable": true, "result_counts": {"cds_records": 2, "pep_cds_overlap": 2, "pep_records": 2}, "row_count": 2}
|
|
```
|
|
|
|
This directly verifies:
|
|
|
|
- LOC `gene_id` remains unchanged (`LOC0001`/`LOC0002`).
|
|
- Numeric GeneID occupies the separate `ncbi_gene_id` column (`12345`).
|
|
- Missing GeneID is deterministic (`""`).
|
|
- The generated TSV header and both data rows are readable.
|
|
|
|
## Notes and residual scope
|
|
|
|
- Pytest and the independent probe emitted the pre-existing
|
|
`RequestsDependencyWarning` about installed `urllib3` and character-detection
|
|
dependency versions. It did not affect execution or assertions.
|
|
- No manifest count was added, which is permitted by the brief.
|
|
- This verification used focused unit and temporary parser/schema data, not a
|
|
live reference-bundle download or backend API execution; the accepted Task 2
|
|
brief scopes required validation to these focused checks.
|
|
- No production or test source file was edited during this verification.
|