
Domaine SDTM GF en R : tabuler les résultats génomiques
Tabulez les résultats génomiques appelés — mutations, variants, expression génique — dans le domaine CDISC SDTM Genomics Findings (GF) en R, reliez-les aux domaines de biospécimens, et gardez les fichiers de séquences bruts hors du dossier de soumission
Une introduction exécutable au domaine CDISC SDTM Genomics Findings (GF) — le domaine de la classe Findings de SDTMIG v3.4 pour les données pharmacogénomiques. Découvrez le principe cardinal selon lequel GF tabule les résultats appelés (variants et expression génique), jamais les fichiers de séquences FASTQ/BAM/VCF bruts ; comment GF remplace le domaine provisoire PF obsolète ; les variables cœur de la classe Findings (GFSEQ, GFTESTCD, GFTEST, GFCAT, GFORRES, GFSTRESC, GFSPEC, GFREFID) et d’où provient leur terminologie contrôlée ; et comment un résultat GF renvoie aux domaines de biospécimens (BE/BS/RELSPEC). Puis construisez un premier jeu de données GF en R à partir d’un export d’anatomopathologie moléculaire et joignez-le à de vraies données de biospécimens.
- GF est un domaine de la classe Findings pour les résultats génomiques. Le domaine SDTM (Study Data Tabulation Model) GF (Genomics Findings) tabule les résultats génomiques appelés — variants de l’ADN et mesures d’expression génique — dans la même forme « un enregistrement par test » que les analyses biologiques et les signes vitaux, indexé par un code de test
GFTESTCD. - GF stocke des résultats, jamais les reads bruts. Le domaine GF d’un dossier de soumission contient le résultat appelé (un variant, une valeur d’expression), pas les fichiers de séquences FASTQ/BAM/VCF à partir desquels ces résultats ont été appelés — ceux-ci résident dans des dépôts génomiques spécialisés, hors du périmètre de SDTM.
- GF remplace le domaine PF obsolète. GF est publié dans SDTMIG v3.4 ; CDISC le recommande plutôt que l’ancien domaine provisoire PF (Pharmacogenomics/Genetics Findings) et le guide SDTMIG-PGx obsolète.
- La terminologie contrôlée provient de NCI EVS. Le code de test
GFTESTCDest régi par le sous-ensemble CDISC C181178, et le nomGFTESTassocié par C181179 — n’inventez pas les vôtres en les traitant comme officiels. Les regroupements de catégorie (GFCAT/GFSCAT) sont définis par le promoteur, sans liste de codes CDISC. - Un résultat GF renvoie au spécimen dont il provient. Les domaines de biospécimens — BE (Biospecimen Events), BS (Biospecimen Findings), RELSPEC (Related Specimens) — suivent l’échantillon, et un enregistrement GF le référence, de sorte qu’un variant est toujours traçable jusqu’à un spécimen prélevé.
Introduction
L’essai en oncologie a séquencé chaque tumeur. Désormais, les résultats génomiques doivent parvenir à la FDA dans la même forme SDTM que les analyses biologiques et les signes vitaux — sans livrer le moindre fichier BAM. C’est le rôle du domaine GF.
SDTM — le Study Data Tabulation Model — est le standard CDISC (Clinical Data Interchange Standards Consortium) qui trie les données d’essai collectées en domaines fixes et examinables. GF (Genomics Findings) est le domaine des données pharmacogénomiques : les mutations, variants et mesures d’expression génique qu’un laboratoire moléculaire a appelés à partir du spécimen d’un sujet. C’est un domaine de la classe Findings — un enregistrement par test, indexé par un code de test — publié dans le CDISC Genomics standard au sein de SDTMIG v3.4, le guide d’implémentation SDTM.
Le principe cardinal traverse tout ce qui suit : GF tabule les résultats appelés, pas les fichiers de séquences bruts. Un appel de variant (EGFR p.L858R, détecté) relève de GF ; les fichiers FASTQ, BAM et VCF à partir desquels il a été appelé, non — ils restent dans des dépôts génomiques spécialisés, hors de SDTM. Réglez correctement cette frontière et le reste n’est qu’une tabulation ordinaire de la classe Findings.
Voici où nous allons — un petit domaine GF construit à partir d’un export d’anatomopathologie moléculaire, montrant quelles mutations conductrices ont été appelées sur le spécimen tumoral de chaque sujet :
Chaque tuile azur est un enregistrement GF — un variant appelé sur un spécimen prélevé. À la fin de cette leçon, vous les aurez tous construits à partir d’un export brut et reliés 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 et appeler les variants ou quantifier l’expression à partir des données de séquençage (RNA-seq, appel de variants). Cette leçon commence là où celui-ci s’arrête — à partir d’une table de résultats déjà appelés — et les tabule en aval vers CDISC SDTM pour un dossier de soumission. Appelez les variants là-bas ; tabulez-les ici. Les deux ne se recouvrent jamais.
Ce qu’est le domaine GF
SDTM classe chaque observation dans l’une des trois classes générales d’observation, et la classe fixe la forme d’un enregistrement. GF est un domaine Findings, il hérite donc de la forme Findings — un enregistrement par test, indexé par un code de test :
| Classe d’observation | Ce qu’elle enregistre | Domaines exemples | Variable topic |
|---|---|---|---|
| Interventions | Ce qui est administré au sujet ou pratiqué sur lui | CM (médicaments concomitants), EX (exposition) | --TRT |
| Events | Ce qui arrive au sujet | AE (événements indésirables), MH (antécédents médicaux) | --TERM |
| Findings | Mesures et évaluations | LB (analyses biologiques), VS (signes vitaux), GF (génomique) | --TESTCD |
Un résultat génomique est une mesure — « ce variant était-il présent ? », « quelle était l’expression de ce gène ? » — c’est donc un enregistrement Findings : la variable topic est un code de test (GFTESTCD, « ce qui a été testé »), et chaque ligne répond à « ce qui a été testé et quel était le résultat ». Cela rend GF structurellement identique à un résultat d’analyse biologique ; la génomique tient à quels tests il porte et à comment les résultats sont codés, non à une nouvelle forme d’enregistrement.
La règle cardinale : les résultats, pas les fichiers bruts
L’idée unique qui régit tout le domaine : GF contient les résultats appelés, pas les données de séquençage brutes. Un résultat est ce qu’un laboratoire a produit — un appel de variant, un génotype, une valeur d’expression normalisée. Les fichiers FASTQ (reads bruts), BAM (reads alignés) et VCF (variant appelé) dont proviennent ces résultats sont hors du périmètre de SDTM ; ils sont archivés dans des dépôts de données génomiques spécialisés, référencés mais non tabulés.
| Relève de GF (un résultat) | Ne relève pas de SDTM (données brutes) |
|---|---|
EGFR p.L858R — détecté |
L’alignement BAM à partir duquel l’appel a été fait |
Génotype KRAS : mutant |
Le fichier VCF listant chaque variant |
| Une valeur d’expression génique normalisée | Les reads FASTQ / la matrice de comptage RNA-seq |
Pourquoi la frontière importe : SDTM est un standard de tabulation qu’un régulateur lit enregistrement par enregistrement, pas une archive de séquences. Un seul BAM de génome entier pèse des gigaoctets ; un jeu de données de soumission ne contient que la poignée de résultats appelés qui éclairent réellement l’analyse. Placez un appel de variant dans GF ; conservez le fichier dont il provient dans le dépôt que l’étude documente à part.
GF remplace le domaine PF obsolète
Si vous tombez sur d’anciennes recommandations en génomique, vérifiez leur ancienneté. Le domaine actuel est GF ; l’ancien domaine provisoire PF (Pharmacogenomics/Genetics Findings) et tout le guide provisoire SDTMIG-PGx v1.0 dans lequel il figurait sont obsolètes. Selon le CDISC Genomics standard, « CDISC recommande fortement l’utilisation de GF plutôt que le précédent domaine provisoire, PF » et « le SDTMIG-PGx v1.0 provisoire a été rendu obsolète. » Bâtissez les nouvelles études sur GF ; ne traitez PF que comme du legacy que vous pourriez avoir à lire.
La structure des variables GF
GF porte les variables standard de la classe Findings. Ces rôles sont l’ossature vérifiable du domaine — le même schéma que n’importe quel domaine Findings --TESTCD, avec un préfixe GF :
| Variable | Rôle | Contient |
|---|---|---|
STUDYID, DOMAIN, USUBJID |
Identifiants | Étude, code de domaine (GF), sujet. |
GFSEQ |
Identifiant | Numéro de séquence unique par enregistrement au sein d’un sujet. |
GFREFID / GFSPID |
Identifiants de référence | Référence promoteur/spécimen qui relie le résultat à son biospécimen. |
GFTESTCD, GFTEST |
Topic | Le code de test court et son nom — ce qui a été testé (p. ex. un test de mutation EGFR). |
GFCAT, GFSCAT |
Regroupement | Catégorie / sous-catégorie, p. ex. variation génétique vs expression génique. |
GFORRES, GFORRESU |
Résultat (tel que collecté) | Le résultat rapporté par le laboratoire et son unité. |
GFSTRESC, GFSTRESN, GFSTRESU |
Résultat (standardisé) | Le résultat sous forme caractère/numérique standard et l’unité. |
GFSPEC |
Spécimen | Le type de spécimen sur lequel le résultat a été mesuré (p. ex. TUMOR TISSUE). |
GFMETHOD, GFNAM |
Méthode / laboratoire | La technique/la méthode et le laboratoire qui l’a exécutée. |
GFDTC |
Timing | Date de collecte/évaluation au format ISO 8601. |
Deux conventions font l’essentiel du travail. Premièrement, GFTESTCD est le topic — il nomme le test, et chaque autre colonne le qualifie. Deuxièmement, GFTESTCD et GFTEST relèvent de la terminologie contrôlée : les valeurs de code de test proviennent du sous-ensemble CDISC C181178 — CDISC SDTM Genomic Findings Test Code Terminology et les valeurs de nom de test du sous-ensemble C181179 — Genomic Findings Test Name, tous deux maintenus par NCI EVS (les Enterprise Vocabulary Services du National Cancer Institute), la même source que toute la terminologie contrôlée SDTM. (Les regroupements de catégorie GFCAT/GFSCAT sont définis par le promoteur — ils n’ont pas de liste de codes CDISC publiée.) GFTESTCD suit une convention suffixe-fragment — une racine gène/analyte plus un fragment désignant le type de mesure — mais la liste faisant autorité est C181178. N’inventez pas un code de test pour le présenter comme officiel CDISC ; recherchez-le d’abord là-bas.
GF définit aussi des qualificateurs spécifiques à la génomique — pour le gène, l’allèle/le variant, la séquence de référence, et ainsi de suite — au-delà de ce cœur de la classe Findings. Ceux-ci, ainsi que les valeurs de catégorie exactes, sont spécifiés dans SDTMIG v3.4. Cette leçon construit le squelette de la classe Findings que partage tout jeu de données GF ; le détail au niveau du variant et au niveau de l’expression fait l’objet des deux prochaines leçons de cette série.
Construire un domaine GF à partir d’un export d’anatomopathologie moléculaire
Deux entrées pilotent la construction : l’export brut des résultats du laboratoire moléculaire, et la connaissance de la structure GF vers laquelle le mapper. Le laboratoire exporte une ligne large par test de gène — un sujet, le spécimen qu’il a testé, le gène, le résultat appelé — sous les noms de colonnes qu’utilise son système. Nous construisons d’abord cette table brute. Les références de spécimen (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 — trois spécimens de tumeur pulmonaire.
library(sdtm.oak)
# A raw genomic-findings export: one row per gene test on a tumour specimen.
# Variants are written in HGVS notation (the Human Genome Variation Society
# standard for naming sequence variants, e.g. p.L858R = protein change at codon 858).
gf_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("EGFR","KRAS","TP53", "EGFR","KRAS","BRAF", "EGFR","KRAS","TP53"),
VARIANT = c("p.L858R","p.G12C","p.R273H", "Not detected","p.G12C","Not detected",
"Not detected","Not detected","p.R248Q"),
RESULT = c("Detected","Detected","Detected", "Not detected","Detected","Not detected",
"Not detected","Not detected","Detected"),
ASSAY = rep("NGS targeted panel", 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(gf_raw) SUBJ SPECREF GENE VARIANT RESULT ASSAY
1 01-701-1033 SPEC4.1 EGFR p.L858R Detected NGS targeted panel
2 01-701-1033 SPEC4.1 KRAS p.G12C Detected NGS targeted panel
3 01-701-1033 SPEC4.1 TP53 p.R273H Detected NGS targeted panel
4 01-701-1034 SPEC5.1 EGFR Not detected Not detected NGS targeted panel
5 01-701-1034 SPEC5.1 KRAS p.G12C Detected NGS targeted panel
6 01-701-1034 SPEC5.1 BRAF Not detected Not detected NGS targeted panel
COLLDT
1 2025-09-10
2 2025-09-10
3 2025-09-10
4 2025-10-05
5 2025-10-05
6 2025-10-05
Chaque ligne est un résultat appelé : un sujet, le spécimen tumoral (SPECREF), le gène testé, le variant en notation HGVS lorsqu’il est détecté, et la technique. NGS désigne ici le séquençage nouvelle génération (next-generation sequencing) — mais notez que nous avons déjà le résultat appelé ; les reads ne sont pas dans cette table et n’atteignent jamais SDTM.
Mapper l’export brut vers la structure GF
Remplissez maintenant les colonnes GF à partir des champs bruts avec R base. Les identifiants sont des affectations constantes ; le topic (GFTESTCD/GFTEST) et le résultat (GFORRES/GFSTRESC) proviennent du gène et du résultat bruts. Nous construisons GFTESTCD à partir du gène en suivant la convention suffixe-fragment — et le signalons clairement comme illustratif, à vérifier au regard de C181178, non affirmé comme un code officiel.
# GFTESTCD below is ILLUSTRATIVE (gene root + "MUT"), following the GF suffix-fragment
# convention. The authoritative code list is NCI EVS subset C181178 — verify there.
gf <- data.frame(
STUDYID = "CDISCPILOT01",
DOMAIN = "GF",
USUBJID = gf_raw$SUBJ,
GFREFID = gf_raw$SPECREF, # links to the biospecimen
GFTESTCD = paste0(gf_raw$GENE, "MUT"), # illustrative — see C181178
GFTEST = paste(gf_raw$GENE, "Mutation"),
GFCAT = "GENETIC VARIATION",
GFORRES = ifelse(gf_raw$RESULT == "Detected", gf_raw$VARIANT, "Not detected"),
GFSTRESC = toupper(gf_raw$RESULT), # DETECTED / NOT DETECTED
GFSPEC = "TUMOR TISSUE",
GFMETHOD = gf_raw$ASSAY,
GFDTC = gf_raw$COLLDT,
stringsAsFactors = FALSE
)
head(gf[, c("USUBJID", "GFREFID", "GFTESTCD", "GFTEST", "GFCAT")]) USUBJID GFREFID GFTESTCD GFTEST GFCAT
1 01-701-1033 SPEC4.1 EGFRMUT EGFR Mutation GENETIC VARIATION
2 01-701-1033 SPEC4.1 KRASMUT KRAS Mutation GENETIC VARIATION
3 01-701-1033 SPEC4.1 TP53MUT TP53 Mutation GENETIC VARIATION
4 01-701-1034 SPEC5.1 EGFRMUT EGFR Mutation GENETIC VARIATION
5 01-701-1034 SPEC5.1 KRASMUT KRAS Mutation GENETIC VARIATION
6 01-701-1034 SPEC5.1 BRAFMUT BRAF Mutation GENETIC VARIATION
Le côté topic est en place : une ligne par test de gène, chacune avec un code de test, son nom et sa catégorie. GFORRES conserve le résultat tel que rapporté (le variant HGVS, ou Not detected) ; GFSTRESC le standardise en DETECTED/NOT DETECTED contrôlé — la séparation entre le résultat collecté et le résultat standardisé que trace tout domaine Findings.
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 brut-vers-SDTM de pharmaverse — ordonne les lignes et les numérote par sujet, exactement comme il le fait pour AESEQ 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", "GFSTRESC", "GFSPEC", "GFMETHOD", "GFDTC")]
head(gf[, c("USUBJID", "GFSEQ", "GFTESTCD", "GFORRES", "GFSTRESC", "GFSPEC")]) USUBJID GFSEQ GFTESTCD GFORRES GFSTRESC GFSPEC
1 01-701-1033 1 EGFRMUT p.L858R DETECTED TUMOR TISSUE
2 01-701-1033 2 KRASMUT p.G12C DETECTED TUMOR TISSUE
3 01-701-1033 3 TP53MUT p.R273H DETECTED TUMOR TISSUE
4 01-701-1034 1 BRAFMUT Not detected NOT DETECTED TUMOR TISSUE
5 01-701-1034 2 EGFRMUT Not detected NOT DETECTED TUMOR TISSUE
6 01-701-1034 3 KRASMUT p.G12C DETECTED TUMOR TISSUE
Voilà un squelette GF conforme : les identifiants, un GFSEQ par sujet, le code de test topic, et les résultats collectés + standardisés, chacun rattaché à un spécimen TUMOR TISSUE. Une vérification structurelle rapide confirme le contrat :
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 finding has a specimen:", all(nchar(gf$GFREFID) > 0), "\n")every finding has a specimen: TRUE
Trois TRUE — structurellement solide. 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 est une construction Findings ordinaire, une fois les résultats appelés.
Relier un résultat à son biospécimen
Un résultat génomique n’est interprétable que si l’on sait sur quoi il a été mesuré. SDTM suit l’échantillon lui-même dans les domaines de biospécimens : BE (Biospecimen Events — collecte, aliquotage, manipulation d’un spécimen), BS (Biospecimen Findings — mesures sur le spécimen, telles que la qualité), et RELSPEC (Related Specimens — comment les spécimens parents et les aliquotes sont liés). Un enregistrement GF pointe vers un spécimen via son identifiant de référence ; RELREC (le jeu de données Related Records) documente formellement la relation dans un dossier de soumission.
Les données d’exemple be de pharmaverse constituent un vrai domaine Biospecimen Events. Ses enregistrements de collecte sont les spécimens réels — chacun avec un BEREFID comme SPEC4.1 et une localisation corporelle BELOC :
library(pharmaversesdtm)
data(be)
be <- as.data.frame(be)
# the collection events = the specimens themselves
spec <- be[be$BECAT == "COLLECTION",
c("USUBJID", "BEREFID", "BETERM", "BELOC", "BEDTC")]
head(spec) USUBJID BEREFID BETERM BELOC BEDTC
1 01-701-1015 SPEC1.1 Specimen Collection SKIN OF THE AXILLA 2025-06-14T08:00
7 01-701-1015 SPEC1.2 Specimen Collection SKIN OF THE AXILLA 2025-06-21T08:00
10 01-701-1023 SPEC2.1 Specimen Collection URINARY SYSTEM 2025-07-15T08:00
14 01-701-1023 SPEC2.2 Specimen Collection URINARY SYSTEM 2025-07-22T08:00
17 01-701-1028 SPEC3.1 Specimen Collection SKIN OF THE AXILLA 2025-08-11T08:00
22 01-701-1033 SPEC4.1 Specimen Collection LUNG 2025-09-10T08:00
BEREFID est l’identifiant du spécimen et BELOC l’endroit où il a été prélevé (plusieurs sont LUNG). Nos résultats GF portaient la référence de spécimen correspondante dans GFREFID, de sorte qu’un merge() en R base retrace chaque variant jusqu’au spécimen physique à partir duquel il a été appelé :
link <- merge(
gf[, c("USUBJID", "GFSEQ", "GFTESTCD", "GFORRES", "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", "GFSEQ", "GFTESTCD", "GFORRES", "GFREFID", "BELOC", "BEDTC")]) USUBJID GFSEQ GFTESTCD GFORRES GFREFID BELOC BEDTC
1 01-701-1033 1 EGFRMUT p.L858R SPEC4.1 LUNG 2025-09-10T08:00
2 01-701-1033 2 KRASMUT p.G12C SPEC4.1 LUNG 2025-09-10T08:00
3 01-701-1033 3 TP53MUT p.R273H SPEC4.1 LUNG 2025-09-10T08:00
4 01-701-1034 1 BRAFMUT Not detected SPEC5.1 LUNG 2025-10-05T08:00
5 01-701-1034 2 EGFRMUT Not detected SPEC5.1 LUNG 2025-10-05T08:00
6 01-701-1034 3 KRASMUT p.G12C SPEC5.1 LUNG 2025-10-05T08:00
Désormais, chaque résultat est entièrement traçable : le EGFR p.L858R du sujet 01-701-1033 a été appelé sur le spécimen SPEC4.1, un échantillon LUNG prélevé à la date BEDTC. Cette chaîne — résultat → spécimen → événement de collecte — est ce qui rend un résultat génomique 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 représenter un résultat d’expression génique par rapport à un résultat de variant, et quelles valeurs GFCAT et GFTESTCD SDTMIG v3.4 utilise-t-il ? » — elle répond en s’appuyant sur les leçons de ce pilier et le standard CDISC genomics, 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 essayez de charger un fichier VCF ou BAM dans SDTM et rien ne convient. Ce ne sera jamais le cas — les fichiers de séquences bruts et alignés (FASTQ/BAM/VCF) sont hors du périmètre de SDTM. GF tabule le résultat appelé (le variant, le génotype, la valeur d’expression), pas le fichier dont il provient. Extrayez les résultats appelés vers des lignes GF ; archivez les fichiers de séquences dans le dépôt génomique spécialisé de l’étude et référencez-les, ne les tabulez pas.
Vous forgez un GFTESTCD comme EGFRMUT et le traitez comme officiel CDISC. La terminologie contrôlée de GFTESTCD/GFTEST est le sous-ensemble CDISC C181178 maintenu par NCI EVS. Un code que vous avez inventé pour suivre la convention suffixe-fragment est un espace réservé tant que vous ne l’avez pas confirmé là-bas — ne présentez jamais un code non vérifié comme standard. Lorsqu’aucun code publié ne convient, c’est une question de terminologie contrôlée pour votre équipe standards, pas une valeur à inventer.
Vous construisez GF et oubliez le lien vers le spécimen. Un résultat sans spécimen traçable n’est pas auditable. Renseignez GFREFID/GFSPID pour que chaque enregistrement GF pointe vers un biospécimen dans BE/BS/RELSPEC, et documentez la relation dans RELREC. Si vous ne pouvez pas dire de quel échantillon physique un variant a été appelé, le domaine est incomplet.
Vous partez de l’ancien domaine PF. PF (Pharmacogenomics/Genetics Findings) et le guide SDTMIG-PGx v1.0 sont obsolètes. Mappez les nouvelles données génomiques vers GF (SDTMIG v3.4) ; ne lisez PF que pour traiter des études legacy.
Questions fréquentes
Le domaine GF (Genomics Findings) est le domaine de la classe Findings du SDTM CDISC qui tabule les résultats pharmacogénomiques — variants de l’ADN et mesures d’expression génique — d’un essai clinique. Chaque enregistrement est un test génomique sur un spécimen, indexé par le code de test GFTESTCD, avec un résultat (GFORRES/GFSTRESC), un type de spécimen (GFSPEC), une méthode, et un lien vers le biospécimen. Il est publié dans SDTMIG v3.4 et c’est là que les résultats génomiques entrent dans une soumission réglementaire.
Non. SDTM — et le domaine GF en particulier — stocke les résultats appelés (un variant, un génotype, une valeur d’expression), jamais les fichiers de séquences FASTQ/BAM/VCF bruts. Ces fichiers sont hors du périmètre de SDTM ; ils sont archivés dans des dépôts de données génomiques spécialisés et référencés depuis l’étude, tandis que GF ne porte que les résultats tabulés qu’un régulateur lit enregistrement par enregistrement.
PF (Pharmacogenomics/Genetics Findings) était un domaine génomique provisoire du guide désormais obsolète SDTMIG-PGx v1.0. GF (Genomics Findings) le remplace dans SDTMIG v3.4 : selon CDISC, « CDISC recommande fortement l’utilisation de GF plutôt que le précédent domaine provisoire, PF. » Bâtissez les nouvelles études sur GF ; traitez PF comme du contenu legacy que vous pourriez avoir à lire mais que vous ne devriez pas produire.
Via les domaines de biospécimens — BE (Biospecimen Events), BS (Biospecimen Findings), et RELSPEC (Related Specimens) — qui suivent l’échantillon physique. Un enregistrement GF porte une référence de spécimen (GFREFID/GFSPID) qui correspond à un spécimen dans BE, et la relation est formellement documentée dans RELREC. Cette chaîne rend chaque résultat génomique traçable jusqu’au spécimen à partir duquel il a été appelé, ce qui le rend auditable dans un dossier de soumission.
De la terminologie contrôlée CDISC, maintenue par NCI EVS : le sous-ensemble C181178 — CDISC SDTM Genomic Findings Test Code Terminology. GFTESTCD suit une convention suffixe-fragment (une racine gène/analyte plus un fragment pour le type de mesure), mais les valeurs autorisées sont régies par C181178 — recherchez-y un code plutôt que d’en inventer un et de le traiter comme standard.
Testez vos connaissances
La construction ci-dessus a tabulé des résultats de variants de l’ADN (GFCAT = "GENETIC VARIATION"). Supposons que les mêmes spécimens tumoraux aient aussi été testés pour l’expression génique de PDL1, rapportée sous forme de valeur numérique normalisée. Esquissez en quoi une ligne GF pour ce résultat diffère d’une ligne de variant : quel GFCAT porterait-elle, et quelles variables de résultat contiendraient une valeur d’expression numérique ?
L’expression est un nombre, pas un appel détecté/non détecté — le résultat standardisé est donc numérique, pas caractère. GF sépare la catégorie de résultat (variant vs expression) avec GFCAT, et il dispose à la fois d’une variable de résultat caractère et d’une numérique.
Un résultat d’expression génique reste un enregistrement Findings, mais :
GFCATdevient"GENE EXPRESSION"(au lieu de"GENETIC VARIATION").- Le résultat va dans la variable standardisée numérique
GFSTRESN(avec une unité dansGFSTRESU), car l’expression est une valeur mesurée — tandis qu’un appel de variant utilisait leGFSTRESCcaractère (DETECTED/NOT DETECTED). GFTESTCD/GFTESTnomment le test d’expression (p. ex. un test d’expressionPDL1), vérifié au regard de C181178, etGFSPEC/GFREFID/GFMETHODle rattachent toujours au spécimen et à la technique.
Même domaine, même forme Findings — un GFCAT différent et ce sont les variables de résultat numériques qui portent la valeur. Le détail au niveau du variant et au niveau de l’expression fait l’objet des deux prochaines leçons de cette série.
A. Le fichier BAM des reads de séquençage alignés pour la tumeur d’un sujet B. Le variant appelé KRAS p.G12C, détecté sur un spécimen tumoral C. Les reads FASTQ bruts issus du séquenceur
B. GF tabule les résultats appelés — un appel de variant comme KRAS p.G12C en est précisément un, et il devient un enregistrement GF sur le spécimen à partir duquel il a été appelé. A et C sont des fichiers de séquences bruts/alignés (BAM, FASTQ), qui sont hors du périmètre de SDTM — archivés dans un dépôt génomique spécialisé et référencés, jamais tabulés dans SDTM.
Conclusion
Le domaine GF rend les résultats génomiques prêts pour la soumission en les traitant pour ce qu’ils sont : des Findings. Tabulez le résultat appelé — le variant, le génotype, la valeur d’expression — un enregistrement par test, indexé par GFTESTCD avec une terminologie contrôlée issue de C181178 ; gardez les fichiers FASTQ/BAM/VCF bruts hors de SDTM ; et reliez chaque résultat à son spécimen via les domaines de biospécimens BE/BS/RELSPEC. Voilà toute la fondation. Les deux prochaines leçons de cette série approfondissent les deux types de résultat — variants de l’ADN et expression génique — mais chacune est la même construction Findings que vous venez d’exécuter, avec des qualificateurs spécifiques à la génomique plus riches.
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
- Mapper des données EDC brutes vers un domaine SDTM Findings avec sdtm.oak — la construction des signes vitaux qui établit le schéma de la classe Findings que suit GF. · Mapper les événements indésirables vers le domaine SDTM AE — la contrepartie de la classe Events, à comparer avec la forme Findings. · Le flux de données d’un essai clinique : du CRF au SDTM, ADaM, TLF — où se situe SDTM dans le pipeline de soumission qu’alimente GF. · Le pilier Bioinformatique — l’analyse en amont (appel de variants, RNA-seq) qui produit les résultats que cette leçon tabule.
- Où cela s’inscrit : les fondations réglementaires et CDISC → le mapping des domaines standard (signes vitaux, événements indésirables) → la tabulation des résultats génomiques dans le domaine GF (vous êtes ici) → les analyses approfondies des variants et de l’expression génique qui complètent le volet génomique. GF est le point où les résultats de médecine de précision entrent dans une soumission CDISC.
Réutilisation
Citation
@online{2026,
author = {},
title = {Domaine SDTM GF en R : tabuler les résultats génomiques},
date = {2026-07-01},
url = {https://www.datanovia.com/learn/pharma-clinical/02-sdtm-programming/genomics-findings-gf-domain},
langid = {fr}
}