
Domaine SDTM GF en R : expression génique et RNA-seq
Tabulez les résultats de transcription — TPM, FPKM dérivés du RNA-seq et expression relative qPCR — dans le domaine CDISC GF comme résultats numériques, la mesure dans GFSTRESN et son unité dans GFSTRESU
Le workflow complet d’expression génique pour le domaine CDISC SDTM Genomics Findings (GF). S’appuyant sur les fondamentaux du domaine GF et la leçon sur les variants, cette leçon mappe les résultats de transcription — expression RNA-seq normalisée (TPM, FPKM, comptages normalisés) et expression relative qPCR (fold-change, Ct/Cq) — en enregistrements GF de la classe Findings. Contrairement à un appel de variant, qui est un résultat caractère, l’expression génique est une quantité mesurée : la valeur atterrit dans la variable de résultat numérique GFSTRESN avec son unité dans GFSTRESU, la technique dans GFMETHOD, et le gène dans GFTESTCD/GFTEST. Découvrez ce que signifie chaque mesure d’expression et où elle se mappe, pourquoi la qPCR sur un seul gène, un panel et l’expression par gène dérivée du RNA-seq ne diffèrent que par la méthode, et — le principe cardinal — pourquoi GF contient la mesure d’expression rapportée, jamais les reads FASTQ ni la matrice de comptage brute. Le tout avec R de base et sdtm.oak, chaque code étant un espace réservé illustratif à vérifier contre la terminologie contrôlée CDISC.
- L’expression génique est un résultat GF numérique. Là où un appel de variant est un résultat caractère (
DETECTED), une mesure d’expression génique — le degré d’activité de transcription d’un gène — est un nombre. Dans le domaine CDISC SDTM (Study Data Tabulation Model) GF (Genomics Findings), elle atterrit dans la variable de résultat numériqueGFSTRESN, avec son unité dansGFSTRESU— pas dans leGFSTRESCcaractère qu’utilise un variant. - L’unité est le point crucial — ne la supprimez jamais. Un nombre d’expression n’a aucun sens sans son unité : TPM (transcrits par million), FPKM/RPKM, un comptage normalisé, un fold-change qPCR, une valeur de cycle Ct/Cq. Portez l’unité d’origine dans
GFORRESUet l’unité standardisée dansGFSTRESU. GFCATla marque comme expression, pas comme variation. La catégorie de transcription (à titre illustratifGENE EXPRESSION) sépare ces résultats des lignesGENETIC VARIATIONde la leçon sur les variants — même domaine, même forme Findings, une catégorie différente et un résultat numérique.- La technique réside dans
GFMETHOD; le gène réside dansGFTESTCD/GFTEST. La qPCR sur un seul gène, un panel d’expression ciblé et l’expression par gène dérivée du RNA-seq ne diffèrent que par la méthode — une ligne GF par gène, par spécimen, quel qu’ait été l’instrument de mesure. - GF contient la mesure d’expression, jamais les reads. Une valeur TPM
PD-L1est un résultat GF ; les reads FASTQ et la matrice de comptage RNA-seq brute à partir desquels elle a été quantifiée sont hors du périmètre de SDTM — le séquençage et la quantification relèvent de l’analyse en amont.
Introduction
Le run RNA-seq a produit environ 20 000 valeurs d’expression génique par tumeur. Le dossier de soumission ne veut pas les reads, et il ne veut pas les 20 000 gènes — il veut l’expression PD-L1, l’expression EGFR, le marqueur de prolifération, tabulée comme tout autre résultat. C’est le rôle du domaine GF pour les données de transcription.
L’expression génique est le degré d’activité de transcription d’un gène en ARN — le signal biologique sur lequel repose la biologie d’une tumeur, et un biomarqueur que les régulateurs demandent de plus en plus. Le RNA-seq (séquençage de l’ARN) et la qPCR (réaction en chaîne par polymérase quantitative) sont les deux techniques qui la mesurent. Cette leçon mappe leurs résultats dans GF (Genomics Findings), le domaine de la classe Findings du SDTM (Study Data Tabulation Model) de CDISC (Clinical Data Interchange Standards Consortium) pour les données pharmacogénomiques.
Elle suppose que vous savez déjà ce qu’est GF. Sinon, commencez par le domaine Genomics Findings (GF) — sa structure, les variables de la classe Findings, le lien biospécimen, et le principe cardinal selon lequel GF tabule le résultat appelé, jamais les fichiers FASTQ/BAM/VCF bruts. La leçon sur les mutations et variants a mappé la moitié variation de GF — les changements génomiques sous forme d’appels caractère. Cette leçon mappe l’autre moitié : la transcription. Ensemble, elles complètent le cluster génomique : fondamentaux → variants → expression.
La distinction qui gouverne tout ce qui suit : un variant est un résultat caractère ; l’expression est un nombre. Voici où nous allons — un petit panel d’expression RNA-seq, trois gènes sur trois spécimens de tumeur pulmonaire, chaque valeur étant un enregistrement GF en attente de tabulation :
Chaque tuile est un enregistrement GF — l’expression d’un gène sur un spécimen prélevé, un nombre avec une unité. À la fin de cette leçon, vous les aurez tous construits à partir d’un export d’expression brut, ajouté l’unité et la méthode, et relié chacun à son biospécimen.
Ceci est de la tabulation, pas de l’analyse — et c’est tout l’intérêt. Le pilier Bioinformatique enseigne le travail en amont : aligner les reads RNA-seq, quantifier l’expression par gène, et exécuter l’analyse d’expression différentielle. Cette leçon commence là où cela s’arrête — à partir d’une table de valeurs d’expression déjà quantifiées — et les tabule en aval vers CDISC SDTM pour un dossier de soumission. Quantifiez l’expression là-bas ; tabulez la mesure rapportée ici. Les deux ne se recoupent jamais.
Pourquoi l’expression se mappe différemment d’un variant
Un appel de variant et une mesure d’expression sont tous deux des résultats GF, mais ils remplissent des variables de résultat différentes — et bien le comprendre, c’est toute la leçon. Rappelez-vous que GF, comme tout domaine Findings, sépare un résultat entre un côté collecté (--ORRES, tel que le laboratoire l’a rapporté) et un côté standardisé, et le côté standardisé comporte deux variables : une caractère (GFSTRESC) et une numérique (GFSTRESN).
| Résultat | Nature | Collecté | Caractère standardisé | Numérique standardisé + unité |
|---|---|---|---|---|
| Variant (leçon sur les variants) | Appel catégoriel | GFORRES = p.L858R |
GFSTRESC = DETECTED |
— (aucun nombre significatif) |
| Expression génique (cette leçon) | Quantité mesurée | GFORRES = 48.2, GFORRESU = TPM |
GFSTRESC = 48.2 |
GFSTRESN = 48.2, GFSTRESU = TPM |
La règle : une valeur d’expression mesurée atterrit dans GFSTRESN (numérique) avec son unité dans GFSTRESU, exactement comme un résultat de laboratoire tel que l’hémoglobine atterrit dans LBSTRESN/LBSTRESU. Un appel de variant n’a aucun nombre significatif, il utilise donc GFSTRESC et laisse GFSTRESN vide ; une valeur d’expression n’a pas d’appel détecté/non détecté, elle remplit donc les variables numériques. Placez un nombre d’expression dans un champ caractère sans GFSTRESN, et un évaluateur ne peut pas calculer dessus — l’erreur de mapping d’expression la plus fréquente.
GFCAT marque aussi la séparation au niveau de la catégorie : les lignes de variant portent GENETIC VARIATION ; les lignes d’expression portent une catégorie de transcription, à titre illustratif GENE EXPRESSION. Contrairement au code de test, GFCAT et GFSCAT sont des regroupements définis par le promoteur sans liste de codes CDISC publiée — seuls le code de test Genomic Findings (GFTESTCD, C181178) et le nom de test (GFTEST, C181179) relèvent de la terminologie contrôlée, le domaine GF étant détaillé dans le SDTMIG v3.4, le guide d’implémentation SDTM qui a publié GF — choisissez les valeurs de catégorie de façon cohérente et documentez-les, sans jamais en affirmer une comme officielle CDISC.
Les mesures d’expression — et leurs unités
L’unité est le résultat. Un nombre d’expression sans son unité est inutilisable, et chaque technique rapporte sa propre mesure. Connaissez celles que vous rencontrerez, ce que chacune signifie, et où elle se mappe dans GF :
| Mesure | Ce que c’est | Unité typique | Résultat GF |
|---|---|---|---|
| TPM (transcrits par million) | Abondance normalisée en RNA-seq ; par échantillon, les valeurs somment à un million, si bien qu’un TPM est la part d’un gène dans le pool de transcrits — comparable entre échantillons | TPM |
GFSTRESN + GFSTRESU = TPM |
| FPKM / RPKM (fragments / reads par kilobase par million) | Normalisation RNA-seq plus ancienne ; corrige la longueur du gène et la profondeur, mais n’est pas comparable entre échantillons comme l’est le TPM | FPKM / RPKM |
GFSTRESN + GFSTRESU = FPKM |
| Comptage normalisé | Un comptage RNA-seq mis à l’échelle par un facteur de taille de librairie (p. ex. par un pipeline d’expression différentielle) | normalized count |
GFSTRESN + GFSTRESU = normalized count |
| Expression relative / fold-change | Résultat qPCR par rapport à un gène de référence et à un calibrateur (la méthode 2^−ΔΔCt) — de combien de fois un gène est sur- ou sous-exprimé | fold change |
GFSTRESN + GFSTRESU = fold change |
| Ct / Cq (cycle seuil / cycle de quantification) | Le cycle qPCR brut auquel le signal franchit le seuil ; un Cq plus bas signifie plus de matrice de départ, il est donc inversement lié à l’expression | Ct (cycles) |
GFSTRESN + GFSTRESU = Ct |
Deux choses à intégrer. Premièrement, le TPM est la mesure RNA-seq par défaut vers laquelle se tourner car, contrairement au FPKM/RPKM, il est cohérent entre les échantillons — RPKM/FPKM étaient les mesures RNA-seq d’origine (Mortazavi et al. 2008) mais leurs totaux par échantillon diffèrent, si bien qu’un FPKM brut n’est pas directement comparable entre sujets. Deuxièmement, la qPCR rapporte une mesure relative, pas une mesure absolue : la méthode d’expression relative 2^−ΔΔCt donne un fold-change par rapport à un gène de référence et à un calibrateur, et le Cq sous-jacent est défini par les directives MIQE (Minimum Information for Publication of Quantitative Real-Time PCR Experiments) — reportez celle que le laboratoire a rapportée, et son unité, à l’identique.
La leçon : quelle que soit la mesure, la valeur va dans GFSTRESN et l’unité dans GFSTRESU. La mesure change avec la technique ; la cible du mapping, non.
Construire un domaine GF à partir d’un export d’expression RNA-seq
Deux entrées pilotent la construction : l’export d’expression brut issu de la technique, et la connaissance de la structure GF dans laquelle le mapper. Un pipeline RNA-seq vous remet une ligne par gène et par échantillon — un sujet, le spécimen, le gène, la valeur quantifiée, et l’unité. Nous construisons d’abord cette table brute. Les références de spécimens (SPEC4.1, SPEC5.1, SPEC6.1) sont de vrais identifiants de biospécimens issus des données d’exemple be que nous relierons plus loin — les trois spécimens de tumeur pulmonaire qu’a aussi utilisés la leçon sur les variants.
library(sdtm.oak)
# A raw RNA-seq expression export: one row per gene per specimen. TPM (transcripts
# per million) is the normalized expression measure; the reads and the full count
# matrix are NOT here — they stay upstream and never reach SDTM. PD-L1 is the protein
# name for the gene CD274 (a checkpoint-immunotherapy biomarker); MKI67 marks proliferation.
expr_raw <- data.frame(
SUBJ = c("01-701-1033","01-701-1033","01-701-1033",
"01-701-1034","01-701-1034","01-701-1034",
"01-701-1047","01-701-1047","01-701-1047"),
SPECREF = c("SPEC4.1","SPEC4.1","SPEC4.1",
"SPEC5.1","SPEC5.1","SPEC5.1",
"SPEC6.1","SPEC6.1","SPEC6.1"),
GENE = c("CD274","EGFR","MKI67", "CD274","EGFR","MKI67", "CD274","EGFR","MKI67"),
TPM = c(48.2, 112.5, 76.3, 6.4, 88.1, 41.7, 21.9, 54.0, 95.2),
UNIT = rep("TPM", 9),
ASSAY = rep("RNA-seq", 9),
COLLDT = c("2025-09-10","2025-09-10","2025-09-10",
"2025-10-05","2025-10-05","2025-10-05",
"2025-11-01","2025-11-01","2025-11-01"),
stringsAsFactors = FALSE
)
head(expr_raw) SUBJ SPECREF GENE TPM UNIT ASSAY COLLDT
1 01-701-1033 SPEC4.1 CD274 48.2 TPM RNA-seq 2025-09-10
2 01-701-1033 SPEC4.1 EGFR 112.5 TPM RNA-seq 2025-09-10
3 01-701-1033 SPEC4.1 MKI67 76.3 TPM RNA-seq 2025-09-10
4 01-701-1034 SPEC5.1 CD274 6.4 TPM RNA-seq 2025-10-05
5 01-701-1034 SPEC5.1 EGFR 88.1 TPM RNA-seq 2025-10-05
6 01-701-1034 SPEC5.1 MKI67 41.7 TPM RNA-seq 2025-10-05
Chaque ligne est un résultat d’expression : un sujet, le spécimen tumoral (SPECREF), le gène, la valeur TPM quantifiée, et son unité. Il y a trois gènes ici — pas 20 000 : le dossier de soumission porte les gènes biomarqueurs pré-spécifiés, pas tout le transcriptome. Et notez ce qui est absent : pas de reads, pas de matrice de comptage, seulement la mesure rapportée.
Mapper l’export brut vers la structure GF
Maintenant, remplissez les colonnes GF à partir des champs bruts avec R de base. La valeur est numérique, donc — contrairement à un variant — elle remplit GFSTRESN, et son unité remplit GFORRESU/GFSTRESU. GFCAT est la catégorie de transcription pour chaque ligne ; GFMETHOD enregistre la technique. Nous construisons GFTESTCD à partir du gène en suivant la convention de fragment-suffixe de GF — et le signalons clairement comme illustratif, à vérifier contre C181178, non affirmé comme un code officiel.
# GFTESTCD below is ILLUSTRATIVE (gene root + "EXP"), following the GF suffix-fragment
# convention. The authoritative code list is NCI EVS subset C181178 — verify there.
# Expression is a NUMBER: it lands in GFSTRESN (numeric) with its unit in GFSTRESU,
# NOT in the character GFSTRESC a variant call uses.
gf <- data.frame(
STUDYID = "CDISCPILOT01",
DOMAIN = "GF",
USUBJID = expr_raw$SUBJ,
GFREFID = expr_raw$SPECREF, # links to the biospecimen
GFTESTCD = paste0(expr_raw$GENE, "EXP"), # illustrative — verify vs C181178
GFTEST = paste(expr_raw$GENE, "Expression"),
GFCAT = "GENE EXPRESSION", # illustrative transcription category
GFORRES = as.character(expr_raw$TPM), # the value, as reported
GFORRESU = expr_raw$UNIT, # original unit (TPM)
GFSTRESC = as.character(expr_raw$TPM), # standardized character form
GFSTRESN = expr_raw$TPM, # standardized NUMERIC value
GFSTRESU = expr_raw$UNIT, # standardized unit (TPM)
GFSPEC = "TUMOR TISSUE",
GFMETHOD = expr_raw$ASSAY, # the assay: RNA-seq
GFDTC = expr_raw$COLLDT,
stringsAsFactors = FALSE
)
gf[, c("USUBJID", "GFTESTCD", "GFCAT", "GFORRES", "GFSTRESN", "GFSTRESU", "GFMETHOD")] USUBJID GFTESTCD GFCAT GFORRES GFSTRESN GFSTRESU GFMETHOD
1 01-701-1033 CD274EXP GENE EXPRESSION 48.2 48.2 TPM RNA-seq
2 01-701-1033 EGFREXP GENE EXPRESSION 112.5 112.5 TPM RNA-seq
3 01-701-1033 MKI67EXP GENE EXPRESSION 76.3 76.3 TPM RNA-seq
4 01-701-1034 CD274EXP GENE EXPRESSION 6.4 6.4 TPM RNA-seq
5 01-701-1034 EGFREXP GENE EXPRESSION 88.1 88.1 TPM RNA-seq
6 01-701-1034 MKI67EXP GENE EXPRESSION 41.7 41.7 TPM RNA-seq
7 01-701-1047 CD274EXP GENE EXPRESSION 21.9 21.9 TPM RNA-seq
8 01-701-1047 EGFREXP GENE EXPRESSION 54 54.0 TPM RNA-seq
9 01-701-1047 MKI67EXP GENE EXPRESSION 95.2 95.2 TPM RNA-seq
L’expression de chaque gène est désormais une ligne : la valeur numérique dans GFSTRESN, son unité dans GFSTRESU, la catégorie de transcription dans GFCAT, et la technique dans GFMETHOD. Le GFSTRESC caractère porte la valeur sous forme de texte (les domaines Findings remplissent les deux formes), mais c’est le nombre dans GFSTRESN sur lequel un évaluateur calcule — et qui serait vide sur une ligne de variant.
Numéroter les enregistrements avec derive_seq
Un enregistrement Findings conforme a besoin d’un numéro de séquence unique au sein de chaque sujet. derive_seq() de sdtm.oak — le moteur raw-to-SDTM de pharmaverse — ordonne les lignes et les numérote par sujet, exactement comme il le fait pour LBSEQ ou VSSEQ.
gf <- derive_seq(gf, tgt_var = "GFSEQ",
rec_vars = c("USUBJID", "GFTESTCD"),
sbj_vars = "USUBJID")
gf <- as.data.frame(gf)
gf <- gf[, c("STUDYID", "DOMAIN", "USUBJID", "GFSEQ", "GFREFID", "GFTESTCD", "GFTEST",
"GFCAT", "GFORRES", "GFORRESU", "GFSTRESN", "GFSTRESU", "GFSPEC",
"GFMETHOD", "GFDTC")]
head(gf[, c("USUBJID", "GFSEQ", "GFTESTCD", "GFSTRESN", "GFSTRESU", "GFSPEC")]) USUBJID GFSEQ GFTESTCD GFSTRESN GFSTRESU GFSPEC
1 01-701-1033 1 CD274EXP 48.2 TPM TUMOR TISSUE
2 01-701-1033 2 EGFREXP 112.5 TPM TUMOR TISSUE
3 01-701-1033 3 MKI67EXP 76.3 TPM TUMOR TISSUE
4 01-701-1034 1 CD274EXP 6.4 TPM TUMOR TISSUE
5 01-701-1034 2 EGFREXP 88.1 TPM TUMOR TISSUE
6 01-701-1034 3 MKI67EXP 41.7 TPM TUMOR TISSUE
Voilà un squelette GF conforme pour l’expression : les identifiants, un GFSEQ par sujet, le code de test topic, et — le point crucial — un résultat numérique avec une unité, chacun rattaché à un spécimen TUMOR TISSUE. Une vérification structurelle rapide confirme le contrat, y compris les deux choses qu’un résultat d’expression ne doit jamais manquer : un nombre et son unité.
cat("one domain code: ", length(unique(gf$DOMAIN)) == 1, "\n")one domain code: TRUE
cat("GFSEQ unique within subject: ", !any(duplicated(gf[c("USUBJID", "GFSEQ")])), "\n")GFSEQ unique within subject: TRUE
cat("every value is numeric: ", all(!is.na(gf$GFSTRESN)), "\n")every value is numeric: TRUE
cat("every numeric value has a unit:", all(nchar(gf$GFSTRESU) > 0), "\n")every numeric value has a unit: TRUE
Quatre TRUE — structurellement sain, et surtout chaque GFSTRESN porte un GFSTRESU. En production, un outil de conformité (Pinnacle 21) exécute le jeu de règles complet qu’appliquerait un régulateur ; ici, l’essentiel est qu’un domaine GF d’expression est une construction Findings numérique ordinaire, une fois l’expression quantifiée.
Même résultat, une méthode différente : la qPCR
Le RNA-seq n’est pas la seule façon de mesurer l’expression. La qPCR mesure un seul gène (ou un petit panel) et rapporte un résultat relatif — un fold-change par rapport à un gène de référence et à un calibrateur. Le résultat reste de l’expression génique ; seuls la méthode et l’unité changent. Observez comment le même mapping GF l’absorbe — un GFMETHOD différent, un GFSTRESU différent, la valeur toujours dans GFSTRESN :
# A single-gene qPCR export: CD274 (PD-L1) relative expression by the 2^-ddCt method,
# reported as a fold-change vs a normal-tissue calibrator. Different assay, different
# unit — same numeric GF mapping (value in GFSTRESN, unit in GFSTRESU).
qpcr_raw <- data.frame(
SUBJ = c("01-701-1033","01-701-1034","01-701-1047"),
SPECREF = c("SPEC4.1","SPEC5.1","SPEC6.1"),
GENE = rep("CD274", 3),
FC = c(3.2, 0.8, 1.9), # fold-change (2^-ddCt) vs calibrator
UNIT = rep("fold change", 3),
ASSAY = rep("RT-qPCR", 3),
COLLDT = c("2025-09-10","2025-10-05","2025-11-01"),
stringsAsFactors = FALSE
)
gf_qpcr <- data.frame(
STUDYID = "CDISCPILOT01",
DOMAIN = "GF",
USUBJID = qpcr_raw$SUBJ,
GFREFID = qpcr_raw$SPECREF,
GFTESTCD = paste0(qpcr_raw$GENE, "EXP"), # illustrative — verify vs C181178
GFTEST = paste(qpcr_raw$GENE, "Expression"),
GFCAT = "GENE EXPRESSION",
GFORRES = as.character(qpcr_raw$FC),
GFORRESU = qpcr_raw$UNIT,
GFSTRESN = qpcr_raw$FC, # the numeric value again
GFSTRESU = qpcr_raw$UNIT, # but the unit is fold change, not TPM
GFSPEC = "TUMOR TISSUE",
GFMETHOD = qpcr_raw$ASSAY, # RT-qPCR, not RNA-seq
GFDTC = qpcr_raw$COLLDT,
stringsAsFactors = FALSE
)
gf_qpcr[, c("USUBJID", "GFTESTCD", "GFSTRESN", "GFSTRESU", "GFMETHOD")] USUBJID GFTESTCD GFSTRESN GFSTRESU GFMETHOD
1 01-701-1033 CD274EXP 3.2 fold change RT-qPCR
2 01-701-1034 CD274EXP 0.8 fold change RT-qPCR
3 01-701-1047 CD274EXP 1.9 fold change RT-qPCR
Même gène (CD274), même catégorie, même cible numérique — mais GFMETHOD est RT-qPCR et GFSTRESU est fold change, pas TPM. Voilà pourquoi l’unité et la méthode ne sont pas décoratives : sans elles, un fold-change 3.2 et un TPM 48.2 ressemblent au même type de nombre et ne sont absolument pas comparables. C’est aussi pourquoi l’expression par gène en RNA-seq, un panel d’expression ciblé et la qPCR sur un seul gène sont un domaine, plusieurs méthodes — la structure de ligne ne change jamais, GFMETHOD et GFSTRESU enregistrent ce qui a produit la valeur.
Relier un résultat à son biospécimen
Chaque valeur d’expression n’est interprétable que si vous savez sur quoi elle a été mesurée. Chaque enregistrement GF portait la référence du spécimen tumoral dans GFREFID, si bien qu’un merge() en R de base contre les données de biospécimens-événements be retrace chaque résultat d’expression jusqu’à l’échantillon physique — le même lien de spécimen que la leçon sur le domaine GF construit en entier. Les données d’exemple be de pharmaverse sont un vrai domaine de biospécimens-événements ; ses enregistrements de collecte sont les spécimens eux-mêmes.
library(pharmaversesdtm)
data(be)
be <- as.data.frame(be)
# the collection events = the specimens themselves
spec <- be[be$BECAT == "COLLECTION", c("USUBJID", "BEREFID", "BELOC", "BEDTC")]
link <- merge(
gf[, c("USUBJID", "GFSEQ", "GFTESTCD", "GFSTRESN", "GFSTRESU", "GFREFID")],
spec, by.x = c("USUBJID", "GFREFID"), by.y = c("USUBJID", "BEREFID"), all.x = TRUE
)
link <- link[order(link$USUBJID, link$GFSEQ), ]
head(link[, c("USUBJID", "GFTESTCD", "GFSTRESN", "GFSTRESU", "GFREFID", "BELOC")]) USUBJID GFTESTCD GFSTRESN GFSTRESU GFREFID BELOC
1 01-701-1033 CD274EXP 48.2 TPM SPEC4.1 LUNG
2 01-701-1033 EGFREXP 112.5 TPM SPEC4.1 LUNG
3 01-701-1033 MKI67EXP 76.3 TPM SPEC4.1 LUNG
4 01-701-1034 CD274EXP 6.4 TPM SPEC5.1 LUNG
5 01-701-1034 EGFREXP 88.1 TPM SPEC5.1 LUNG
6 01-701-1034 MKI67EXP 41.7 TPM SPEC5.1 LUNG
Désormais, chaque résultat d’expression est entièrement traçable : l’expression CD274 de 48.2 TPM du sujet 01-701-1033 a été mesurée sur le spécimen SPEC4.1, un échantillon LUNG. Cette chaîne — valeur d’expression → spécimen → événement de collecte — est ce qui rend un résultat de biomarqueur auditable dans un dossier de soumission, et pourquoi GF ne voyage jamais sans les domaines de biospécimens à ses côtés.
Demandez à Prova « dans le domaine CDISC SDTM GF, comment tabuler une valeur d’expression TPM RNA-seq par rapport à un fold-change qPCR, et où vont le résultat numérique et son unité ? » — elle répond en s’appuyant sur les leçons de ce pilier et le standard génomique CDISC, avec du R exécutable que vous pouvez essayer sur les données d’exemple. The runtime is the judge. Demandez à Prova →
Problèmes fréquents
Vous placez une matrice de comptage RNA-seq brute (ou les reads FASTQ) dans GF et rien ne colle. Ce ne sera jamais le cas — les reads bruts et la matrice de comptage complète sont hors du périmètre de SDTM, de la même façon que les fichiers BAM/VCF le sont pour les variants. GF tabule la mesure d’expression rapportée (une valeur TPM, un fold-change) pour les gènes pré-spécifiés, pas la sortie de séquençage à partir de laquelle elle a été quantifiée. Extrayez les valeurs rapportées dans des lignes GF ; archivez les reads et la matrice dans le dépôt génomique de l’étude et référencez-les, ne les tabulez pas.
Vous stockez le nombre d’expression mais oubliez l’unité. Un 48.2 sans unité est inutilisable — est-ce du TPM, du FPKM, un fold-change ? Renseignez GFORRESU (originale) et GFSTRESU (standardisée) sur chaque ligne d’expression numérique. Un GFSTRESN sans GFSTRESU échoue à la revue la plus élémentaire d’un résultat numérique.
Vous placez la valeur d’expression dans le résultat caractère et laissez GFSTRESN vide. L’expression est une quantité mesurée : elle a sa place dans le GFSTRESN numérique (un évaluateur calcule dessus), pas seulement dans le GFSTRESC caractère. Ce schéma caractère-seul convient à un appel de variant (DETECTED), pas à un nombre.
Vous réutilisez la catégorie de variant pour un résultat d’expression. Une ligne d’expression est un résultat de transcription, à titre illustratif GFCAT = "GENE EXPRESSION" — pas le GENETIC VARIATION de la leçon sur les variants. Les mélanger empêche un évaluateur de séparer les deux types de résultat. Confirmez le terme exact de catégorie contre C181178 plutôt que d’affirmer l’un ou l’autre comme officiel.
Questions fréquentes
Comme un enregistrement Findings numérique. L’expression de chaque gène sur un spécimen est une ligne GF (Genomics Findings) avec GFCAT fixé à une catégorie de transcription (à titre illustratif GENE EXPRESSION), le gène dans GFTESTCD/GFTEST, la technique dans GFMETHOD, et — le point crucial — la valeur mesurée dans le GFSTRESN numérique avec son unité dans GFSTRESU. C’est différent d’un appel de variant, qui est un résultat caractère (GFSTRESC = DETECTED). Vérifiez les codes et la catégorie contre le sous-ensemble NCI EVS C181178.
Non. GF stocke la mesure d’expression rapportée (une valeur TPM, un FPKM, un fold-change qPCR), jamais les reads FASTQ bruts ni la matrice de comptage RNA-seq à partir desquels ils ont été quantifiés. Ceux-ci sont hors du périmètre de SDTM — le séquençage, l’alignement et la quantification relèvent de l’analyse en amont (le pilier Bioinformatique) ; ils sont archivés dans un dépôt génomique spécialisé et référencés, tandis que GF ne porte que les valeurs tabulées qu’un évaluateur lit enregistrement par enregistrement.
La valeur va dans la variable de résultat standardisée numérique GFSTRESN, et l’unité (TPM, FPKM, fold change, Ct) va dans GFSTRESU — avec la valeur et l’unité d’origine dans GFORRES/GFORRESU. L’expression est une quantité mesurée, elle remplit donc les variables de résultat numériques exactement comme une valeur de laboratoire remplit LBSTRESN/LBSTRESU. Ne laissez jamais une valeur d’expression numérique dans un champ caractère uniquement, et ne supprimez jamais l’unité.
Les deux sont des enregistrements GF de la classe Findings, mais ils diffèrent par la catégorie et le type de résultat. Un variant est GFCAT = "GENETIC VARIATION", un appel catégoriel dans le GFSTRESC caractère (DETECTED), avec la chaîne HGVS dans GFORRES. L’expression génique est une catégorie de transcription (à titre illustratif GENE EXPRESSION), un nombre dans GFSTRESN avec une unité dans GFSTRESU. Même domaine, même forme Findings — un GFCAT différent et les variables de résultat numériques au lieu de la caractère.
Non — seuls GFMETHOD et l’unité changent. La qPCR sur un seul gène, un panel d’expression ciblé et l’expression par gène dérivée du RNA-seq sont un domaine, plusieurs méthodes : une ligne GF par gène et par spécimen, la valeur dans GFSTRESN. GFMETHOD enregistre la technique (RNA-seq, RT-qPCR), et GFSTRESU enregistre son unité (TPM pour le RNA-seq, fold change ou Ct pour la qPCR) — ce qui explique exactement pourquoi la méthode et l’unité sont déterminantes : un TPM et un fold-change ne sont pas des nombres comparables.
Testez vos connaissances
La construction ci-dessus a tabulé l’expression RNA-seq en TPM. Supposez qu’un pipeline d’expression différentielle rapporte plutôt l’expression EGFR du sujet 01-701-1034 comme un comptage normalisé de 1840. Esquissez la ligne GF : quel GFCAT elle porte, quelles variables de résultat contiennent la valeur et l’unité, et ce que seraient GFMETHOD et GFTESTCD — en notant que seuls l’unité et la méthode diffèrent de la ligne TPM.
Un comptage normalisé reste un nombre mesuré, il se mappe donc exactement comme un TPM — même variable de résultat numérique, même emplacement pour l’unité — seuls la chaîne de l’unité et la méthode changent. La catégorie ne change pas : c’est toujours un résultat de transcription.
Le résultat en comptage normalisé reste un enregistrement GF GENE EXPRESSION numérique :
GFCATreste"GENE EXPRESSION"(un résultat de transcription, pasGENETIC VARIATION).- La valeur va dans le
GFSTRESNnumérique =1840, avecGFSTRESU = "normalized count"(etGFORRES = "1840",GFORRESU = "normalized count") — la même cible numérique que la ligne TPM, une chaîne d’unité différente. GFMETHODnomme la technique/le pipeline (p. ex.RNA-seq), etGFTESTCD/GFTESTnomment le test d’expressionEGFR— vérifié contre C181178.GFSPEC/GFREFIDle rattachent toujours au spécimen.
Même domaine, même forme Findings numérique — seuls l’unité et la méthode distinguent un comptage normalisé d’un TPM. La valeur atterrit toujours dans GFSTRESN ; l’unité atterrit toujours dans GFSTRESU.
A. Dans le résultat caractère GFSTRESC, avec GFSTRESN laissé vide B. Dans le résultat numérique GFSTRESN, avec l’unité TPM dans GFSTRESU C. Dans la matrice de comptage brute, jointe au dossier de soumission comme fichier
B. L’expression génique est une quantité mesurée, une valeur TPM atterrit donc dans le GFSTRESN numérique avec son unité dans GFSTRESU — le même schéma que toute valeur de laboratoire. A est le schéma de variant (un appel caractère sans nombre significatif), erroné pour une valeur mesurée. C est entièrement hors du périmètre de SDTM — la matrice de comptage brute et les reads n’entrent jamais dans GF ; seule la mesure d’expression rapportée y entre.
Conclusion
L’expression génique complète le cluster GF comme la moitié numérique du domaine. Quelle que soit la technique — TPM, FPKM en RNA-seq, un comptage normalisé, un fold-change ou un Ct en qPCR — le résultat est un enregistrement de transcription par gène et par spécimen : la valeur mesurée dans GFSTRESN, son unité dans GFSTRESU, la technique dans GFMETHOD, le gène dans GFTESTCD/GFTEST, et GFCAT la marquant comme expression plutôt que variation. Gardez chaque GFTESTCD et catégorie comme un espace réservé illustratif jusqu’à ce que C181178 le confirme, et — le principe cardinal une fois de plus — gardez les reads et la matrice de comptage brute hors de SDTM : GF porte la mesure rapportée, pas le séquençage qui l’a produite.
Cela clôt le cluster génomique : les fondamentaux du domaine GF ont établi la structure de la classe Findings et la frontière résultats-et-non-fichiers-bruts ; la leçon sur les variants a mappé la variation génétique sous forme d’appels caractère ; et cette leçon a mappé la transcription sous forme de résultats numériques. Trois leçons, un domaine — chaque résultat génomique que produit un essai de médecine de précision, prêt pour la soumission.
Cette leçon est reproductible : chaque résultat de cette page a été produit par le code montré — copiez n’importe quel bloc et exécutez-le pour les reproduire. The runtime is the judge.
Leçons connexes
- Le domaine Genomics Findings (GF) — les fondamentaux sur lesquels s’appuie cette leçon : la structure de la classe Findings, résultats-et-non-fichiers-bruts, GF versus PF, et le lien biospécimen. · Mapper les données de mutation et de variant vers le domaine GF — la moitié variation du cluster, mappant SNV, indels, CNV et fusions sous forme d’appels caractère. · Mapper des données EDC brutes vers un domaine SDTM Findings avec sdtm.oak — la construction des signes vitaux qui établit le schéma numérique de la classe Findings que suit l’expression GF. · Le pilier Bioinformatique — la quantification RNA-seq en amont et l’analyse d’expression différentielle qui produit les valeurs d’expression que cette leçon tabule.
- Où cela s’insère : les fondamentaux du domaine GF → le mapping des données de mutation et de variant → le mapping de l’expression génique et du RNA-seq (vous êtes ici) — la leçon qui complète le cluster génomique. GF est là où les résultats de médecine de précision, variation comme transcription, entrent dans une soumission CDISC.
Réutilisation
Citation
@online{2026,
author = {},
title = {Domaine SDTM GF en R : expression génique et RNA-seq},
date = {2026-07-01},
url = {https://www.datanovia.com/learn/pharma-clinical/02-sdtm-programming/gene-expression-rnaseq-gf},
langid = {fr}
}