Closed YoannAnselmetti closed 7 years ago
C'est ton séparateur @
.
L'arbre de gène n'est pas lu directement par TreeClass, le séparateur est tout d'abord identifié et le string du newick est modifié pour détecter plus facilement la correspondance entre gène et espèce.
Dans ton cas, il faut que tu utilises l'argument --sep
pour spécifier le séparateur, et optionnellement --spos
pour la position de l'espèce.
Cette commande fonctionne pour tes données.
profileNJ -s Anopheles_species_tree_X_topology.nwk -g gene_tree_GF0000057.nwk -o output_GT.nwk -r best --firstbest --seuil 100.0 --cost 2.0 1.0 --sep '@' --spos 'postfix'
Aussi la classe TreeClass utilisé par profileNJ hérite de la classe Tree de ete3 en y ajoutant plusieurs nouvelles fonctionnalités. Mais de base, TreeClass supporte toutes les méthodes de Tree.
Bonjour Emmanuel, je rencontre un problème avec profileNJ. Je me suis mis à ete3 pour traiter les arbres de gènes et j'ai donc généré à partir d'un arbre RAxML un arbre lisible par ete3. Cependant, quand je le donne en entrée de profileNJ celui-ci n'arrive pas à le lire...
Voici la commande et l'erreur de profileNJ (dernière version de profileNJ dispo sur GitHub): ./profileNJ -s Anopheles_species_tree_X_topology.nwk -g gene_tree_GF0000057.nwk -o output_GT.nwk -r best --firstbest --seuil 100.0 --cost 2.0 1.0
Traceback (most recent call last): File "../Software/TREE_INFERENCE/profileNJ/bin/profileNJ", line 191, in
oritree, specietree, distance_matrix, node_order = TreeUtils.polySolverPreprocessing(gtree, args.specietree.name, cur_dist, specie_pos=args.spos, capitalize=args.cap, gene_sep=args.gene_sep, nFlag=args.nflag, smap=(args.smap.name if args.batch else args.smap), errorproof=args.tryhard)
File "/usr/local/lib/python2.7/dist-packages/ProfileNJ-20151027-py2.7.egg/profileNJ/TreeLib/TreeUtils.py", line 641, in polySolverPreprocessing
genetree = TreeClass(genetree)
File "/usr/local/lib/python2.7/dist-packages/ProfileNJ-20151027-py2.7.egg/profileNJ/TreeLib/TreeClass.py", line 36, in init
self, newick=newick, format=format, dist=dist, support=support, name=name)
File "/usr/local/lib/python2.7/dist-packages/ete3-3.0.0b35-py2.7.egg/ete3/coretype/tree.py", line 210, in init
read_newick(newick, root_node = self, format=format)
File "/usr/local/lib/python2.7/dist-packages/ete3-3.0.0b35-py2.7.egg/ete3/parser/newick.py", line 237, in read_newick
return _read_newick_from_string(nw, root_node, matcher, format)
File "/usr/local/lib/python2.7/dist-packages/ete3-3.0.0b35-py2.7.egg/ete3/parser/newick.py", line 289, in _read_newick_from_string
_read_node_data(closing_internal, current_parent, "internal", matcher, formatcode)
File "/usr/local/lib/python2.7/dist-packages/ete3-3.0.0b35-py2.7.egg/ete3/parser/newick.py", line 386, in _read_node_data
raise NewickError("Unexpected newick format '%s' " %subnw[0:50])
ete3.parser.newick.NewickError: Unexpected newick format '97%%0.07657231775906227222'
J'ai mis en pièce-jointe le fichier d'arbres de gène et l'arbre des espèces. Mon arbre de gène est au "format 0" de ete3, à l'exception que les supports sont des entiers entre 0 et 100, et non des flottants entre 0 et 1: Format 0 = (A:0.350596,(B:0.728431,(D:0.609498,G:0.125729)1.000000:0.642905)1.000000:0.567737);
test_profileNJ.zip