Closed yvandenb closed 4 years ago
J'ai mis à jour l'outil sur proteore dans beta tools. J'ai changé le nom des collections datasets.
Je te laisse voir pour l'erreur du scipt R lié au ";" présent dans la liste d'ids @combesf
je crois que j'ai trouvé pour le bug. j'ai "commité" une correction sur le github dans 'GO_prof_comp.R' @davidchristiany est-ce que tu peux synchroniser avec dev-migale stp ? et me le dire ensuite, comme ça je reteste merci !
pardon @davidchristiany je me suis trompée : synchroniser avec la section bêta tools de proteore.org
pour le mettre à jour sur proteore, il faut mettre la version du testtoolshed à jour avec planemo shed_update --shed_target testtoolshed
.
Je te fais ça pas de soucis
J'ai mis à jour go terms profiles comparison dans les beta tools, je n'avais pas fais attention mais tu as oublié de changé le numéro de version dans le xml, cela ne pose pas de problème mais c'est pas mal de le faire à chaque changement ou au moins chaque nouvelle version uploadée sur le toolshed.
ah oui tu as raison pardon. Bien noté.
voilà le bug est corrigé. @yvandenb tu peux relancer
j'ai lancé 2 run ce matin avec un plantage sur le second (cf ci-dessous), l'historique est partagé...merci
@yvandenb Tu peux me préciser quelle est la différence entre les 2 'runs' stp ? c'est des données sont différentes ?
Non il s'agit d'une relance de la même tâche (item n°30) avec juste changement du param 'ontology lovel' passé de 3 à 5...pour voir si ça tenait
j'ai trouvé d'où ça vient : On raccourcit les noms des 'GO categories' pour que le plot soit lisible, mais si ça donne artificiellement un même nom pour 2 catégories alors cela fait planter le plot ... je réfléchis à une solution intelligente ...
voilà j'ai commité sur le github. @davidchristiany si tu veux bien stp "mettre la version du testtoolshed à jour avec planemo shed_update --shed_target testtoolshed ." (j'ai tjrs pas d'instance ici ) et ensuite le mettre sur proteoRE dans bêta tools pour que je puisse tester ... Merci beaucoup
c'est fait
merci @davidchristiany bug corrigé @yvandenb , normalement c'est bon tu peux relancer.
Ok Flo J'ai relancé en jouant sur les params notamment le "GO level" de 3 à 5 et ça fonctionne bien :-) mais que sur de l'humain (je crois me souvenir que tu avais testé la souris de ton côté?) Peux-tu t'occuper de rédiger la section USerDoc, please ?
USer doc section à rediger + A deployer sur instance de dev "migale-proteore" pour test
As a reminder : USer doc section à rediger + A deployer sur instance de dev "migale-proteore" pour test avec dataset test
Tested on proteore.org "beta-tools" section History "Test_CompareCluster" shared with Flo Item n° 27- 29:
please add "BgRatio" "pvalue" "p.adjust" "qvalue" => https://yulab-smu.github.io/clusterProfiler-book/chapter11.html
=> https://yulab-smu.github.io/clusterProfiler-book/chapter11.html#visualization-of-profile-comparison
[ ] Update/Change USerDoc section
[ ] presently only two lists (1 list = 1 cluster) can be compared via the user interface, maybe would it be a good option to extend the number of lists ? to be discussed
[ ] change name of the related history items : e.g. GO terms profiles diagram outputs => GO profiles comparison diagram
for the moment the tool uses the function 'compareCluster' with the "fun" arg sets to 'groupGO". There is no pval calculation, so no pval can be plotted or returned in the txt result.
I am actually doing tests with the "fun" arg equals to "enrichGO" in order to have a pval in the output and a background as a user input.
Datasets up and down for ProfileComparison (Breast cancer vs. Healthy patient, suppMat from https://www.sciencedirect.com/science/article/pii/S240547121630031X?via%3Dihub): deposited in Proteore-MIGALE: Shared data -> Libraires -> Test datasets: Gene_ID_upRegulated_BreastCancer_RedundantIDList Gene_ID_DownRegulated_BreastCancer_RedundantIDList Certains ID sont redondants, je fais également des tests avec la même liste même en supprimant les doublons pour voir s'il y a impact sur le résultat (i.e. vérifier qu'ils sont bien considérés en unique en input de l'outil)
voilà le résultat vite fait avec compareCluster, fonction enrichGO. Background = l'organisme. J'ai les data txt aussi si tu veux par mail
Well, le différentiel est clair entre ces subsets; il s'agit ici, a priori, de la catégorie MF - la publi du dataset présente les résultats pour la cat GO BP, pourrais tu également poster le diagram BP, stp? Quel GO level as tu pris ? Enfin, l'output est celui qu'il faudra renvoyer...
voici le graphe pour BP.
Résultat en cohérence avec le papier : https://www.sciencedirect.com/science/article/pii/S240547121630031X?via%3Dihub#app2 "This analysis showed significant changes in two major groups of cellular processes: (1) protein homeostasis and quality control, and (2) central metabolism. read for details (Table S4)" Tu déploies sur proteoRE-migale une fois l'outil prêt ?
yes
MàJ 7 Nov 2019. A fin de finaliser cet outil (qui s'appellera "GO_terms_enrich_comparison", et donc je travaille sur les fichiers "GO_terms_enrich_comparison.xml" et "GO_terms_enrich_comparison.R" :
1) Grâce à l'aide de David j'ai pu avancer sur l'écriture de ce tool pour prendre en entrée plus de 2 listes, à savoir de min 2 à max 5 listes à comparer.
2) Je bloque sur le passage des arguments du xml au script R en lui-même. Plus précisément le passage des ids constituant les listes à comparer.
Ces 2 à 5 listes doivent au final être contenues dans un même R objet de type "list()", qui sera donc de longueur 2 à 5.
Voilà le pavé venant de mon xml et qui lance la commande R (validé par David) :
Rscript $__tool_directory__/GO_terms_enrich_comparison.R
#for $list in $lists
--input
#if $list.input.ids == "file"
"$list.input.file" "$list.list_name" "file" "$list.input.header" "$list.input.ncol"
#else
"$list.input.txt" "$list.list_name" "text"
#end if
#end for
--org="$species"
--ont="$ontology"
> $log
On voit qu'il y a bien une boucle for pour récupérer les 2 à 5 listes d'ids (pouvant venir d'un fichier "file" ou étant tapées directement : "text" dans le "else").
Mon pb est de récupérer correctement dans le script R ce qu'il y a dans la boucle for.
Voilà le "main" de mon R :
#to get the args of the command line
args=get_args()
l<-list(NULL)
for ($list in args$lists) {
ids<-get_ids(args$inputype, args$input, args$header, args$column)
l[[$list]]<-ids
}
ont = strsplit(args$ont, ",")[[1]]
org=args$org
A part "ont =" et "org=", les lignes de code ne sont pas correctes (je pense, pas testé encore), car je ne comprends pas la structure de données passée par le xml à R à partir de la boucle for en question.
Ce que ça doit faire : récupérer les 2 à 5 listes d'ids qui sont rentrées par l'utilisateur, soit par un fichier, soit copié collé (texte)
Voilà. Je comprends bien le principe, je sais juste pas l'écrire comme il faut.
David m'a dit (ii) de m'inspirer du venn diagram tool , mais voilà le code du main du venn tool :
# Parse parameters
parser = argparse.ArgumentParser(description='Filters an abundance file')
group_input = parser.add_argument_group( 'Inputs' )
group_input.add_argument('--input', nargs="+", action="append", required=True, help="The input tabular file.")
group_output = parser.add_argument_group( 'Outputs' )
group_output.add_argument('--summary', default="summary.html", help="The HTML file containing the graphs. [Default: %(default)s]")
args = parser.parse_args()
franchement j'ai pas vu comment transposer.
et (ii) de regarder aussi le package R 'argparse' , mais je n'ai pas non plus réussi à m'aider avec les exemples.
Voilà où j'en suis. Je pense que je suis pas loin malgré tout ... Merci @vloux de ton aide.
PS : j'ai mis dans tools/GO_terms_profiles_comparison : les fichiers "GO_terms_enrich_comparison.R" et "GO_terms_enrich_comparison.xml"
I deploy on migale-proteore to run the tool and have the command-line written.
The command-line is as follows :
Rscript /projet/galaxyprod/proteore2/shed_tools/testtoolshed.g2.bx.psu.edu/repos/proteore/proteore_go_terms_enrich_comparison/99b580726446/proteore_go_terms_enrich_comparison/GO_terms_enrich_comparison.R
--input "/projet/galaxyprod/proteore2/galaxy/database/files/012/dataset_12515.dat" "UP" "file" "true" "c7"
--input "/projet/galaxyprod/proteore2/galaxy/database/files/012/dataset_12514.dat" "DN" "file" "true" "c7"
--org="org.Hs.eg.db"
--ont="BP"
> /projet/galaxyprod/proteore2/galaxy/database/files/012/dataset_12716.dat
1st) It could not work as in the R script there is args$input, args$org, arg$ont, BUT ALSO args$inputtype, args$header, args$column that annot exist when we see how is written the command line.
2nd) there is 2 times "--input- and I suspect this is not very good ...
So solution is : either to reformat the xml for the command line to be written differently, or to change the R code to reformat after getting the args ...
I am thinking of it ... If you have any advice / remarks, you are welcome ...
Knowing the structure of the command-line I made some modifcations in the sml code and it is better : it works, but ... empty results for the moment. but it gets better ...
Here is the command-line now :
Rscript /projet/galaxyprod/proteore2/shed_tools/testtoolshed.g2.bx.psu.edu/repos/proteore/proteore_go_terms_enrich_comparison/82f7c56f575d/proteore_go_terms_enrich_comparison/GO_terms_enrich_comparison.R
--nb=2
--input="/projet/galaxyprod/proteore2/galaxy/database/files/012/dataset_12515.dat"
--name="UP" --inputtype="file" --header="true" --column="c7"
--input="/projet/galaxyprod/proteore2/galaxy/database/files/012/dataset_12514.dat" --name="DN" --inputtype="file" --header="true" --column="c7" --org="org.Hs.eg.db" --ont="MF"
it is much much better and I hope it will be ok soon now it is just an the R's side that I have to make modifications, it should be ok
It works now ... The tool is installed on migale proteore and available to be extensively tested. (I tested on human data, with 3 lists from files or from copy/paste)
It needs GeneID as input ID
J'ai fait un 1er test, souris + 2 listes, it works ;-) Je vais poursuivre; en attendant qques demandes:
History: Test_ClusterProfiler Tested using 3 gene lists (Rattus): only the two first lists have been considered and displayed :-/ see items n° 68-69-70 NB: userDoc still pending
I looked at your data : you wrote "c3" instead of "c13" for the 3d list (item 65). I think is is the reason why ...
Indeed ! question: the col 3 contains Gene name: Does EnrichR tracked this in case of "non GeneID list" by generating a msg ? In other words, is there any way to inform the end-user in case of error typing ? Btw, I executed again, and results are there! Good :-)
userDoc to be written
1er test - Fatal error: Exit code 1 () Error in strsplit(ids, ";") : non-character argument Calls: main -> get_ids -> unlist -> strsplit Execution halted History shared with Flo and David (see snapshot below)