From 22218f3a0540cb861a2d53a6ac216b92578f4152 Mon Sep 17 00:00:00 2001 From: Sebastian Proost Date: Mon, 22 Jan 2018 07:05:26 +0100 Subject: [PATCH] documentation --- docs/building/005_comparative_genomics.md | 67 +++++++++++++++++++++- docs/images/add_gf.png | Bin 0 -> 14326 bytes docs/images/add_trees.png | Bin 0 -> 19719 bytes 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 docs/images/add_gf.png create mode 100644 docs/images/add_trees.png diff --git a/docs/building/005_comparative_genomics.md b/docs/building/005_comparative_genomics.md index dd8c26a..1d66d56 100644 --- a/docs/building/005_comparative_genomics.md +++ b/docs/building/005_comparative_genomics.md @@ -1,3 +1,66 @@ -# Adding Gene Families and Trees +# Adding OrthoGroups with Trees and Gene Families + +When building OrthoGroups and Gene families for CoNekT the easiest way to go about +this is to add the species to the database, and export the protein fastas from +CoNekT. This ensures all IDs are the same. + +## Importing OrthoGroups and Gene Families +Output from [OrthoFinder](https://github.com/davidemms/OrthoFinder) and (tribe)MCL can be directly imported, add a fitting +description, select the type of data you wish to import and select the file. Hit +**Add Families** to upload the file and create the gene families in the database. + +For OrthoFinder, select Orthogroups.txt, from the output. For (tribe)MCL pick the +file with the final output (all members of a gene family on one line). + +![add_gf](../images/add_gf.png) + +## Importing Trees + +[OrthoFinder](https://github.com/davidemms/OrthoFinder)'s phylogenetic trees can +be imported into CoNekT. To do so **first create a gzip file** containing all the +trees. Furthermore you will need to locate the file **SequenceIDs.txt** which is +used to convert OrthoFinder's internal IDs back to CoNekT's. + +![add_trees](../images/add_trees.png) + +First select the **OrthoFinder families** you wish to add trees to. Next **add a +description** and finally select the **gzip file** with all trees and +**SequenceIDs.txt**. + +Currently adding trees to other types of gene families is not supported. + +## Adding Clades + +For clades to be detected correctly, clade definitions need to be stored in the +database from 'Add->'Clades'. This is done using a JSON object structured as the +example here: + +```json +{ + "Arabidopsis": { + "species": ["ath"], + "tree": null + }, + "Poplar": { + "species": ["ptr"], + "tree": null + }, + "Rice": { + "species": ["osa"], + "tree": null + }, + "Rosids": { + "species": ["ptr", "ath"], + "tree": "(ptr:0.01, ath:0.01);" + }, + "Angiosperms": { + "species": ["ptr", "ath", "osa"], + "tree": "((ptr:0.03, ath:0.03):0.01, osa:0.04);" + } +} +``` + +**Dictionary keys** are different clades, within each dict you have to specify two +things : the **species**, which contain an array of short names of the species in that +clade and a **tree** with a newick tree of that clade. -*UNDER CONSTRUCTION* \ No newline at end of file diff --git a/docs/images/add_gf.png b/docs/images/add_gf.png new file mode 100644 index 0000000000000000000000000000000000000000..926ef9e117cd9efa456c62a6df096c43ffe49602 GIT binary patch literal 14326 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 literal 0 HcmV?d00001 diff --git a/docs/images/add_trees.png b/docs/images/add_trees.png new file mode 100644 index 0000000000000000000000000000000000000000..6b11bd59144c65f9615d6c73248922720ecd3ed5 GIT binary patch literal 19719 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%0Ak5F=Z~XO4b7 zTroCYnTK6j;-5@VcQYn;sGBj9cZNk$K1SGN*KcL$E4P#`r@%fGH{rI7*U3w>Y5M+u z7}q>e{I!I^;Sb6yn!;x^xAx-`^w)->tK!dX%^o=Hv^r$|bxP#aRjN11d?&tbxlYn2 zYQ2MYt~V=*ZF+eIhof!lrj5s@U3#U{tn!4lD&gV^i|&K@AA3uPNm&>q&3MxoX8zz! z?)vH^`70kfjaydVT6tuDDlkMuA9QGn9w0A;Ae9fLZl)L!2f`uJw`-nPIGeVRA!(N< zZ1N72>xM(T)SM^}Ncz*5qMU!(;{rF4+liLl3cs&klYzpU)bSpPDv>{DdGGaD*5g~o zj1OA{ucdW~=8h6h_VaB#m;Sb=*w{-Q2U7(f4bQFrHf@8%Ym-z$E1vkSa2_L#Kg0JF8J{@`bl%f-xHzKenk&Pu%5I7K zN1Hm1#6u2NL&nIcuk5hHt^}k76)}FZ8rN3R^&n8DSXh68EJBAU-|-VLNU#hWEUnQ| zU&)u`IG&*$3tvC6I0@uHKH^hl(wF!WgAT@ z$kqc>{(YX^f16S|wq-$R%p_~;7iY{hA^`-Wu+zyw_S)uXMK3j9t}qq7PR4-+1#LWJ z2zknd8d3g$HFapFtOVes^K=XrDryeSq;%lF_me7NB z3TmcC!t38I3H(`s1LPzz%=mqgAVF&PSX2pO>;D23SdNUg43i-+;$pjU`dxeNJtqMN zIPydumocy1f=!nCJyyr%#}?;>k%o)se(kMICd9Za3kifzxwUQmD#q+2gb|KML&C|$ zA=>*S@`u72Ra`f>EFbEmd>>s8&G5=SJ74tR3C#T3qIQb(*2r+*?!m??Q(}r}h;bN{ zM3=GIT4uif>w8LJtb>c51* z6mk*92O-F2RZZNiu1QW>)5zN-vY(1@S?j?Hpe4S*gz_83N2j*%$R0C80V0PSQe*`P+^XWi2#iE zefgo2o~`-GlTTq_ss&vj{Dd`FsT?gVj|^Clf13Adff*f3mhkoewqXzi-4eBFSYbpt zNRx6}ZG4WADqSgg*l3yhtw5B}^eFgI|6H>iz5EoC{YhYz*@%{DZgYy2O;1#QDg^nt zQEBktN$uCveTFvn8^RTo`y_%eGV}+Aig85R-En#=gp|-o_REbRzva)lXr(yWEEZ-l ztoL`83Ey4`3EOu5XW9x0vxW`~oP3rFJ}VfX&Jw9OgdO$dpXsj|#}T&Q6%w|uDeX8b z^RMX~1PM=UbA(~kN%TF*hvR?mGw_d-(7?kJG2Q=48A1l4sN>BY?SH;@i@dkAMXr7E zkCfUt-_$E3`Oj8@CtrtlwpRIf_k+)1l0>w+TQ^L{rkb2yH}F^7kETbo?YNmZ7KRstkGkAHm zgBq~O_uT#X`}kjnwsSvO@8es)2H5`C;e*zy*uQMqvSY`NUCXb1|Nqa^)AxUWjsE}X zOx^We$14A+vpe#&$_RiOHctd*Hcthw!AQxKq#2*5biYY_SPEH!x_A+IsNp?0