Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

produce_info_tables #4

Open
CharlesJB opened this issue Oct 4, 2023 · 6 comments
Open

produce_info_tables #4

CharlesJB opened this issue Oct 4, 2023 · 6 comments
Assignees

Comments

@CharlesJB
Copy link
Member

Ajouter une fonction qui va prendre en entré:

  • de_infos
  • design_infos
  • metadata_infos

et qui va créer les autres tables nécessaires pour produire les analyses en batch ou avec la fonction produce_deliverables.

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 2, 2023

@CharlesJB

  • Faire la liste des contraintes sur chaque table
  • Description des tables typiques d'une analyse

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 2, 2023

Chaînes de caractères

On devrait toujours limiter les chaînes de caractères aux valeurs suivantes:

  • Lettres majuscules ou minuscules
  • Chiffres
  • Underscore _

Les identifiants uniques de chaque ligne ne doivent pas commencer par un chiffre. Même chose pour les noms d'échantillons.

On met ces restrictions pour:

  • Les identifiants
  • Les noms de colonnes
  • Les noms de groupe

Certains champs sont plus permissifs, par exemple les champs title. Dans ce cas, il n'y a pas de contraintes. On peut noter aussi les formulas.

de_infos

Le but de cette table est de décrire toutes les comparaisons à réaliser pour les analyses d'expression différentielle.

Voir ici pour une brève description des champs.

Pour la validation des champs, on pourrait réutiliser la fonction validate_de_infos qu'on pourrait modifier pour qu'il ne soit pas obligatoire de fournir le paramètre txi.

Pour les contraintes de chaque champs:

  • id_de:
    • Obligatoire
    • Chaîne de caractères
    • Valeur unique à chaque ligne
    • Est utilisé pour le nom du fichier dans lequel les résultats seront sauvegardés
  • group:
    • Obligatoire
    • Correspond au nom de la colonne dans la table design_infos qui décrit à quel groupe appartiennent les échantillons à utiliser pour la comparaison.
    • Chaîne de caractère
  • contrast_1 et contrast_2:
    • Obligatoire
    • Le nom des groupes à comparer par analyse d'expression différentielle.
    • Chaîne de caractère
    • Doivent être présent dans la colonne group dans la table design_infos
    • Chaque contraste doit être associé à au moins 2 échantillons
  • formula:
    • Obligatoire
    • La formule à utiliser pour l'analyse d'expression différentielle
    • Chaîne de caractère
    • Doit avoir la forme ~ group ou ~ group + replicat ou ~ group:replicat ou une combinaison de ces valeurs. group et replicat peuvent prendre d'autres valeurs qui doivent être dans la table design_infos.
    • Ce sera plus compliqué à valider, à court terme on peut s'assurer que ce soit une chaîne de caractère qui comment par ~.
  • filter:
    • Valeur numérique >= 0
  • count_matrix:
    • Correspond au nom de la matrice è utiliser pour faire les comparaisons
    • Chaîne de caractère
    • Valeur par défaut: NA
      • Signifie qu'il faut utiliser la matrice de comptes bruts: txi$counts
    • La valeur doit être présent dans l'objet txi, mais on ne peut pas le valider lors de la création des tables

design_infos

C'est une table qui contient l'information sur les groupes auxquels appartiennent chaque échantillon.

Il faut minimalement un colonne nommée sample qui contient les noms des échantillons. Tous les sample de la table design_infos doivent se trouver dans la table metadata_infos et vice versa.

Il doit y avoir au moins une autre colonne qui contient les noms des groupes. Historiquement, on nomme cette première autre colonne group.

Pour chacune de ces colonnes supplémentaires, on doit retrouver des chaînes de caractères et il doit y avoir au moins 2 valeurs différentes qui sont retrouvés au moins 2 fois.

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 3, 2023

metadata_infos

Cette table est utilisée pour la création des PCA. À cet effet, elle a 2 buts principaux:

  1. Déterminer quelles seront les différentes versions de chaque PCA. Il y aura une PCA sans couleur et pour chaque colonne appropriée, il y aura une version de la même PCA mais en utilisant les valeurs dans la colonne pour déterminer la couleur des points.
  2. Déterminer quels seront les sous-ensembles d'échantillons pour les PCA qui seront réalisées pour chaque comparaison.

Les valeurs pour le point 1 vont se retrouver dans la table min_metadata qui aura été remplie au préalable par le client. À noter que min_metadata n'est pas obligatoire. Il faudra donc modifier le code pour le cas où il n'y aurait pas de metadata.

Les valeurs pour le point 2 sont produites par la fonction produce_info_tables en utilisant les valeurs des tables de_infos et design_infos.

La table metadata_infos est donc nécessaire pour créer la table PCA_infos.

Il n'y a qu'une seule colonne obligatoire et c'est la colonne sample qui contient les identifiants des échantillons de l'étude.

Le code pour la validation de la table metadata_infos est ici.

Comme pour la fonction validate_de_infos du commentaire précédent, on pourrait rendre le paramètre txi facultatif car on n'a pas accès à cet objet à ce moment de l'analyse.

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 3, 2023

PCA_infos

C'est la table qui permet de décrire toutes les PCA qu'on veut produire dans une analyse. De manière générale, on va vouloir une PCA globale sans couleur et une PCA globale par colonne qui se trouvait dans la table min_metadata. On veut également une PCA par comparaison sans couleur et une PCA en couleur par comparaison et par colonne de la table min_metadata .

Une brève description des champs attendus est disponible ici.

La fonction de validation est ici.

Les champs les plus complexes à comprendre sont group et group_val. Ces champs servent à déterminer quels seront les échantillons à utiliser pour produire la PCA. Si on veut une PCA globale (qui représente tous les échantillons), ces 2 champs auront la valeur NA. Autrement, on va fournir le nom de la colonne dans la table metadata_infos qui contient l'information nécessaire pour déterminer quels échantillons utiliser grâce au champs group. On va ensuite sélectionner les échantillons qui ont la valeur du champs group_val dans la colonne group dans la table metadata_infos.

Je suis ouvert à l'idée de renommer ces colonnes pour des valeurs plus claires.

Pour les contraintes de chaque champs:

  • id_plot:
    • Obligatoire
    • Chaîne de caractères
    • Valeur unique à chaque ligne
    • Est utilisé pour le nom du fichier dans lequel les résultats seront sauvegardés
  • group:
    • Chaîne de caractère
    • Il doit y avoir une colonne avec un nom correspondant dans la table metadata_infos
    • Si cette valeur n'est pas NA, group_val ne doit pas être NA non plus.
  • group_val:
    • Chaîne de caractère
    • Ce champ doit être retrouvé au moins 2 fois dans la colonne group de la table metadata_infos
    • Si cette valeur n'est pas NA, group ne doit pas être NA non plus
  • use_normalisation:
    • Chaîne de caractère: "none", "ruvg" ou "combat"
      • Les valeurs possibles représentent les normalisations présentement disponibles dans le paquet rnaseq
    • Similaire à count_matrix dans de_infos (il faudrait harmoniser?).
    • La valeur par défaut est none. Dans ce cas, c'est la matrice txi$abundance (TPM) qui est utilisée.
  • min_counts:
    • Valeur numérique plus grande ou égale à 0
    • Correspond au compte en TPM minimal pour être utilisé dans la production de la PCA. C'est donc la somme des TPM pour un gène qui doit être supérieur ou égal à cette valeur pour être utilisé dans la production de la PCA.
  • id_metadata:
    • Chaîne de caractère
    • Doit correspondre à un nom de colonne qui existe dans la table metadata_infos
    • Correspond à la colonne qui contient les noms des échantillons
    • On pourrait peut-être retirer ce champs si on oblige la table metadata_infos à contenir la colonne sample pour représenter le nom des échantillons.
  • size:
    • Un entier plus grand que 0
  • shape:
    • Chaîne de caractère
    • Doit correspondre à une colonne qui existe dans la table metadata_infos
  • color:
    • Chaîne de caractère
    • Doit correspondre à une colonne qui existe dans la table metadata_infos
  • title:
    • Chaîne de caractère
  • legend.position:
    • Chaîne de caractère
    • Valeurs tolérées: left, right, top ou bottom
  • legend.box:
    • Chaîne de caractère
    • Valeurs tolérées: horizontal ou vertical
  • show_names:
    • Booléen

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 3, 2023

volcano_infos

Il s'agit de la table qui décrit quels sont les volcanos qu'on souhaite produire pour une analyse.

Les valeurs sont décrites brièvement ici.

La fonction de validation est ici. Il faudrait la modifier pour que le txi ne soit pas obligatoire et ainsi pouvoir la ré-utiliser pour produce_info_tables. En fait, le txi n'est probablement pas nécessaire ici. Il y a également un bug où on a nommé le paramètre design alors que ce devrait être de_infos. Il manque également les contraintes en lien avec la table de_infos.

Pour les contraintes de chaque champs:

  • id_plot:
    • Obligatoire
    • Chaîne de caractères
    • Valeur unique pour chaque ligne
    • Est utilisé pour le nom du fichier dans lequel les résultats seront sauvegardés
  • id_de:
    • Obligatoire
    • Chaîne de caractères
    • Doit correspondre à un id_de dans la table de_infos
  • y_axis:
    • Chaîne de caractère
    • "padj" ou "pvalue"
  • p_threshold:
    • Valeur numérique entre 0 et 1
  • fc_threshold:
    • Valeur numérique >= 0
  • title:
    • Chaîne de caractères
  • show_signif_counts:
    • Booléen
  • show_signif_lines:
    • Chaîne de caractères
    • none, vertical, horizontal ou both, défaut: vertical
  • show_signif_color:
    • Booléen
  • col_up:
    • Chaîne de caractères
    • Soit un code hexadecimal pour la couleur ou bien une couleur valide
      • C'est compliqué à vérifier, peut-être faire quelque chose comme ça mais en utilisant map_lgl plutôt que sapply
  • col_down:
    • Chaîne de caractère
    • Comme pour col_up
  • size:
    • Entier > 0

@CharlesJB
Copy link
Member Author

CharlesJB commented Nov 3, 2023

Analyse typique

Dans une analyses typique nous allons produire:

  • Une ou plusieurs PCA globales (pca_infos et metadata_infos):
    • Sans couleur (toujours)
    • Avec couleur, selon le nombre de colonne dans min_metadata
  • Pour chaque ligne dans la table de_infos:
    • Une ou plusieurs PCA en utilisant seulement les échantillons impliqués dans la comparaison
      • Sans couleur (toujours)
      • Avec couleur, selon le nombre de colonne dans min_metadata
    • Un fichier csv qui contient le résultat de l'analyse d'expression différentielle
    • Un ou plusieurs volcano plots (volcano_infos):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants