vloux / ProteoRE

GNU General Public License v3.0
2 stars 5 forks source link

PreoteoRE beta-tools: GO terms profiles comparison #208

Closed yvandenb closed 4 years ago

yvandenb commented 5 years ago

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) image

davidchristiany commented 5 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

combesf commented 5 years ago

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 !

combesf commented 5 years ago

pardon @davidchristiany je me suis trompée : synchroniser avec la section bêta tools de proteore.org

davidchristiany commented 5 years ago

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

davidchristiany commented 5 years ago

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.

combesf commented 5 years ago

ah oui tu as raison pardon. Bien noté.

combesf commented 5 years ago

voilà le bug est corrigé. @yvandenb tu peux relancer

yvandenb commented 5 years ago

j'ai lancé 2 run ce matin avec un plantage sur le second (cf ci-dessous), l'historique est partagé...merci image

combesf commented 5 years ago

@yvandenb Tu peux me préciser quelle est la différence entre les 2 'runs' stp ? c'est des données sont différentes ?

yvandenb commented 5 years ago

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

combesf commented 5 years ago

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 ...

combesf commented 5 years ago

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

davidchristiany commented 5 years ago

c'est fait

combesf commented 5 years ago

merci @davidchristiany bug corrigé @yvandenb , normalement c'est bon tu peux relancer.

yvandenb commented 5 years ago

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 ?

yvandenb commented 5 years ago

USer doc section à rediger + A deployer sur instance de dev "migale-proteore" pour test

yvandenb commented 5 years ago

As a reminder : USer doc section à rediger + A deployer sur instance de dev "migale-proteore" pour test avec dataset test

yvandenb commented 5 years ago

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

combesf commented 5 years ago

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.

yvandenb commented 5 years ago

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)

combesf commented 5 years ago

voilà le résultat vite fait avec compareCluster, fonction enrichGO. Background = l'organisme. J'ai les data txt aussi si tu veux par mail

BreastK

yvandenb commented 5 years ago

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...

combesf commented 5 years ago

voici le graphe pour BP. BreastK BP

yvandenb commented 5 years ago

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 ?

combesf commented 5 years ago

yes

combesf commented 5 years ago

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"

combesf commented 4 years ago

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 ...

combesf commented 4 years ago

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 ...

combesf commented 4 years ago

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

combesf commented 4 years ago

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

yvandenb commented 4 years ago

J'ai fait un 1er test, souris + 2 listes, it works ;-) Je vais poursuivre; en attendant qques demandes: image

  1. Rendre les intitulés des items history homogènes avec les autres outils de type GO: "GO enrich comparison files" pas super explicite suggestion : replace "GO enrich comparison diagram" par "GO enrichComparison results Diagram" and "GO enrich comparison files" par "GO enrichComparison results Table
  2. Rédiger la partie USerDoc
combesf commented 4 years ago
  1. done
yvandenb commented 4 years ago

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

combesf commented 4 years ago

I looked at your data : you wrote "c3" instead of "c13" for the 3d list (item 65). I think is is the reason why ...

yvandenb commented 4 years ago

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 :-)

yvandenb commented 4 years ago

userDoc to be written