Skip to content
View Zyrok12's full-sized avatar

Block or report Zyrok12

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Zyrok12/README.md

Bruno Young de Castro

Computational genomics · Pharmacogenomics · Machine learning for precision medicine

MSc candidate in Genomics, Informatics, Mathematics and AI for Health (GENIOMHE) at Université Paris-Saclay. BSc in Cell and Molecular Biology, University of South Florida.

I work on one question: how do you turn genomic data into a decision someone can actually act on? In practice that means building the software a lab needs before it can ask the question at all — and then measuring honestly whether the thing works, including when it doesn't.

Currently seeking a 2027 internship in computational biology or precision medicine.


PGX Pipeline — end-to-end pharmacogenomics for WES cohorts

Repository · Python · research use only

Pharmacogenomic cohort work has a tooling gap. Getting from raw reads to something a researcher can interpret means chaining alignment, several variant callers, annotation and a dozen knowledge bases, then repeating database lookups variant by variant across a whole cohort. Copy-number variants are often skipped entirely, because calling them from exome data is hard — an omission that matters here, since a CNV in a gene like CYP2D6 changes metaboliser status outright.

During a research internship in clinical pharmacogenomics I needed that whole path to exist, be reproducible and run locally. So I built it.

FASTQ → alignment → SNV/indel and CNV calling → VEP annotation → pharmacogenomic database enrichment → cohort analytics → an interactive variant browser

Four entry points (FASTQ, BAM/CRAM, raw VCF, filtered VCF), 19 checkpointed stages with resume and retry, 175 automated tests, and a preflight stage that catches configuration errors before any compute is spent.

Validation

Whole-exome benchmark on GIAB HG003 (NovaSeq, IDT capture, 100×), scored with hap.py/vcfeval against GIAB v4.2.1 truth inside the capture territory intersected with the confident regions — 25,279 truth SNVs and 1,051 truth indels across 35.9 Mb. Sixteen selection strategies on an identical variant representation: four individual callers, five rule-based ensembles, six ML model families, and the deployed guarded rescue.

Small variants Best strategy F1 Best single caller
SNVs (n = 25,279) Strelka2 + guarded ML rescue 0.9876 Strelka2, 0.9875
Indels (n = 1,051) ML random forest 0.9225 Strelka2, 0.9032

Differences are tested with an exact McNemar test on paired per-variant decisions, not by comparing decimal places:

  • SNVs: Strelka2's advantage is precision — 222 false positives against 340–416 for the other callers, and 1,223–2,337 for union strategies. The guarded ML rescue is a small genuine gain: 9 additional true variants (p = 0.0039) for 5 extra false positives that do not reach significance (p = 0.063).
  • Indels: multi-caller fusion does beat the best single caller. A random forest matches Strelka2's recall exactly (p = 0.40) while removing 51 of its false positives (p = 1.5 × 10⁻⁷).
  • An earlier single-chromosome pilot found no fusion benefit. That conclusion was correct for its 29 indels and had no power to detect this one — the finding only appeared at 36× the data. Both results are published in the repository.

Copy number, on a synthetic 16-sample cohort with 37 events planted at real pharmacogene coordinates: the five-caller ensemble recovers 35/37 at precision 1.000, F1 0.972, against F1 0.596 for the best individual caller, with no calls in controls. The mechanism is aggregation rather than voting — merging thousands of per-target calls into correctly sized segments.

What this evidence is not

One sample, one capture kit, one chemistry. Scoring is confined to GIAB confident regions, which deliberately exclude segmental duplications and pseudogene-adjacent sequence — so real CYP2D6 calling is harder than any number above. The CNV results are synthetic throughout: GIAB's GRCh38 structural-variant benchmark contains exactly one deletion large enough and overlapping enough capture targets to be callable from exome data. Not a diagnostic device; not clinically validated.


OncoVulnerability — predicting cancer gene dependencies

Repository · Python

Can a cancer model's RNA-expression and genomic profile predict which genes it depends on for survival?

End-to-end machine learning on public DepMap data: predicts CRISPR gene-effect values from RNA expression, damaging mutations, copy number and lineage across 1,066 cancer models, then separates predictions into common-essential genes (used as positive controls) and the selective dependencies that are actually interesting as therapeutic hypotheses.

Precision@10 of 0.965 on held-out models, validated against an independent Sanger screen. The trained model ships with a runnable CLI, so you can pass your own expression and mutation tables and get a ranked dependency list back.


Panel Bias Auditor — where does a genomic panel miss the biology?

Repository · Python

A dependency-light CLI for auditing panel designs against user-supplied risk tracks. Given a panel BED, it measures the target footprint, quantifies coverage of critical regions, and flags overlap with difficult territory — repeats, low mappability, high GC, homologous genes, pseudogene-like regions.

It also derives empirical GC-extreme, homopolymer and low-complexity risk tracks directly from FASTA, then tests whether those tracks are enriched in assay failures or low-callability benchmark regions — turning "this panel looks fine" into a testable claim. Outputs Markdown, JSON and HTML reports.

Deliberately track-driven: the repo ships small demo tracks only, because a real audit needs curated, versioned tracks chosen for the specific assay.


TCGA-BRCA differential expression

Repository · R / Bioconductor

A reproducible R Markdown workflow over TCGA-BRCA RNA-seq: TCGAbiolinks retrieval, DESeq2 differential expression between primary tumour and solid tissue normal, volcano plot and heatmap, Kaplan–Meier survival stratified by ERBB2 expression, a LASSO classifier separating tumour from normal, and GO biological-process enrichment with clusterProfiler.


How I work

Three things show up in every repository above, and they are the point:

  • Negative results are published. PGX ships a document stating that its four-caller fusion did not beat a single caller on the first dataset — and then the whole-exome result that partly reverses it. Both are in the repository.
  • Claims are tested, not asserted. Paired McNemar tests where the comparison is paired, Wilson intervals where the sample is small, and the sample size stated next to every metric.
  • Limits are written down before someone finds them. Every project has a section saying what its evidence does not support.

LinkedIn · Université Paris-Saclay, GENIOMHE

Pinned Loading

  1. OncoVulnerability OncoVulnerability Public

    Predicts CRISPR gene dependencies across 1,066 DepMap cancer models and ranks selective therapeutic hypotheses. Precision@10 0.965 on held-out models, validated against an independent Sanger screen.

    Python

  2. PGX PGX Public

    Python

  3. Panel-Bias-Auditor Panel-Bias-Auditor Public

    Python

  4. tcga-brca-differential-expression tcga-brca-differential-expression Public

    R

  5. 2526-m1geniomhe-group-7-main 2526-m1geniomhe-group-7-main Public

    Python

  6. georgyzaouk/Cardi-HACK-data-challenge-group6 georgyzaouk/Cardi-HACK-data-challenge-group6 Public

    Jupyter Notebook 1