diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | doc/README.org | 2 | ||||
-rw-r--r-- | doc/database.org | 165 | ||||
-rw-r--r-- | doc/database.svg | 882 | ||||
-rw-r--r-- | doc/joss/2016/paper.bib | 50 | ||||
-rw-r--r-- | doc/joss/2016/paper.json | 23 | ||||
-rw-r--r-- | doc/joss/2016/paper.md | 84 | ||||
-rw-r--r-- | doc/joss/2016/qtl.png | bin | 0 -> 146924 bytes | |||
-rw-r--r-- | doc/joss/2016/qtl2.png | bin | 0 -> 375505 bytes |
9 files changed, 1204 insertions, 4 deletions
@@ -1,3 +1,5 @@ +[![DOI](https://zenodo.org/badge/5591/genenetwork/genenetwork2.svg)](https://zenodo.org/badge/latestdoi/5591/genenetwork/genenetwork2) + # GENENETWORK This repository contains the source code for the GeneNetwork server diff --git a/doc/README.org b/doc/README.org index 345341e1..278dd31c 100644 --- a/doc/README.org +++ b/doc/README.org @@ -548,7 +548,7 @@ configuration. At some point you may want to fix the source code. Assuming you have Guix and Genenetwork2 installed (as described above) clone the GN2 -repository from https://github.com/genenetwork/genenetwork2_diet +repository from https://github.com/genenetwork/genenetwork2. Copy-paste the paths into your terminal (mainly so PYTHON_PATH and R_LIBS_SITE are set) from the information given by guix: diff --git a/doc/database.org b/doc/database.org index e06ac1ff..2221c4fb 100644 --- a/doc/database.org +++ b/doc/database.org @@ -1,7 +1,11 @@ - github Document reduction issue +* The small test database (2GB) -* GeneNetwork Database +The default install comes with a smaller database which includes a +number of the BSD's and the Human liver dataset (GSE9588). + +* GeneNetwork database ** Estimated table sizes @@ -487,7 +491,6 @@ select count(*) from ProbeSet limit 5; - ** ProbeSetData Probedata - main molecular data. Probesets, metabolome, @@ -678,7 +681,21 @@ No longer used ** Species & Strain (should be sample) -Menu +select * from Species; ++----+-----------+----------------------+----------------+----------------------+-------------------------+------------+---------+ +| Id | SpeciesId | SpeciesName | Name | MenuName | FullName | TaxonomyId | OrderId | ++----+-----------+----------------------+----------------+----------------------+-------------------------+------------+---------+ +| 1 | 1 | Mouse | mouse | Mouse | Mus musculus | 10090 | 30 | +| 2 | 2 | Rat | rat | Rat | Rattus norvegicus | 10116 | 40 | +| 3 | 3 | Arabidopsis thaliana | arabidopsis | Arabidopsis thaliana | Arabidopsis thaliana | 3702 | 60 | +| 4 | 4 | Human | human | Human | Homo sapiens | 9606 | 10 | +| 5 | 5 | Barley | barley | Barley | Hordeum vulgare | 4513 | 70 | +| 6 | 6 | Drosophila | drosophila | Drosophila | Drosophila melanogaster | 7227 | 50 | +| 7 | 7 | Macaque monkey | macaque monkey | Macaque monkey | Macaca mulatta | 9544 | 20 | +| 8 | 8 | Soybean | soybean | Soybean | Soybean | 3847 | 80 | +| 9 | 9 | Tomato | tomato | Tomato | Tomato | 4081 | 90 | ++----+-----------+----------------------+----------------+----------------------+-------------------------+------------+---------+ + ** InbredSet @@ -708,3 +725,145 @@ User selection - retained ** Vlookup +* Fetching Data + +** Fetch phenotypes + +To get at phenotype data ProbeSetData is the main table (almost all +important molecular assay data is in this table including probe set +data, RNA-seq data, proteomic data, and metabolomic data. 2.5 billion +rows March 2016) + +select count(*) from ProbeSetData limit 5; ++---------------+ +| count(*) | ++---------------+ +| 2,510,566,472 | ++---------------+ + +select * from ProbeSetData limit 5; ++----+----------+-------+ +| Id | StrainId | value | ++----+----------+-------+ +| 1 | 1 | 5.742 | +| 1 | 2 | 5.006 | +| 1 | 3 | 6.079 | +| 1 | 4 | 6.414 | +| 1 | 5 | 4.885 | ++----+----------+-------+ + +This table is used in + +: wqflask/base/do_search.py +: wqflask/base/data_set.py +: wqflask/utility/AJAX_table.py +: wqflask/wqflask/correlation/show_corr_results.py + +In there we find 'ProbeSetData.Id = ProbeSetXRef.dataId'. + +select * from ProbeSetXRef limit 5; ++------------------+------------+--------+------------+--------------------+------------+-------------------+---------------------+-----------------+--------------------+--------+----------------------+------+ +| ProbeSetFreezeId | ProbeSetId | DataId | Locus_old | LRS_old | pValue_old | mean | se | Locus | LRS | pValue | additive | h2 | ++------------------+------------+--------+------------+--------------------+------------+-------------------+---------------------+-----------------+--------------------+--------+----------------------+------+ +| 1 | 1 | 1 | 10.095.400 | 13.3971627898894 | 0.163 | 5.48794285714286 | 0.08525787814808819 | rs13480619 | 12.590069931048001 | 0.269 | -0.28515625 | NULL | +| 1 | 2 | 2 | D15Mit189 | 10.042057464356201 | 0.431 | 9.90165714285714 | 0.0374686634976217 | CEL-17_50896182 | 10.5970737900941 | 0.304 | -0.11678333333333299 | NULL | +| 1 | 3 | 3 | D5Mit139 | 5.43678531742749 | 0.993 | 7.83948571428571 | 0.0457583416912569 | rs13478499 | 6.0970532702754 | 0.988 | 0.112957489878542 | NULL | +| 1 | 4 | 4 | D1Mit511 | 9.87815279480766 | 0.483 | 8.315628571428569 | 0.0470396593931327 | rs6154379 | 11.774867551173099 | 0.286 | -0.157113725490196 | NULL | +| 1 | 5 | 5 | D16H21S16 | 10.191723834264499 | 0.528 | 9.19345714285714 | 0.0354801718293322 | rs4199265 | 10.923263374016202 | 0.468 | 0.11476470588235299 | NULL | ++------------------+------------+--------+------------+--------------------+------------+-------------------+---------------------+-----------------+--------------------+--------+----------------------+------+ + +i.e., for Strain Id 1 (DataId) 1, the locus '10.095.400' has a +phenotype value of 5.742. + +GeneNetwork1 already has a limited REST interface, if you do + +: curl "http://robot.genenetwork.org/webqtl/main.py?cmd=get&probeset=1443823_s_at&db=HC_M2_0606_P" + +we get + +: ProbeSetID B6D2F1 C57BL/6J DBA/2J BXD1 BXD2 BXD5 BXD6 BXD8 BXD9 BXD11 BXD12 BXD13 BXD15 BXD16 BXD19 BXD20 BXD21 BXD22 BXD23 BXD24 BXD27 BXD28 BXD29 BXD31 BXD32 BXD33 BXD34 BXD38 BXD39 BXD40 BXD42 BXD67 BXD68 BXD43 BXD44 BXD45 BXD48 BXD50 BXD51 BXD55 BXD60 BXD61 BXD62 BXD63 BXD64 BXD65 BXD66 BXD69 BXD70 BXD73 BXD74 BXD75 BXD76 BXD77 BXD79 BXD73a BXD83 BXD84 BXD85 BXD86 BXD87 BXD89 BXD90 BXD65b BXD93 BXD94 A/J AKR/J C3H/HeJ C57BL/6ByJ CXB1 CXB2 CXB3 CXB4 CXB5 CXB6 CXB7 CXB8 CXB9 CXB10 CXB11 CXB12 CXB13 BXD48a 129S1/SvImJ BALB/cJ BALB/cByJ LG/J NOD/ShiLtJ PWD/PhJ BXD65a BXD98 BXD99 CAST/EiJ KK/HlJ WSB/EiJ NZO/HlLtJ PWK/PhJ D2B6F1 +: 1443823_s_at 15.251 15.626 14.716 15.198 14.918 15.057 15.232 14.968 14.87 15.084 15.192 14.924 15.343 15.226 15.364 15.36 14.792 14.908 15.344 14.948 15.08 15.021 15.176 15.14 14.796 15.443 14.636 14.921 15.22 15.62 14.816 15.39 15.428 14.982 15.05 15.13 14.722 14.636 15.242 15.527 14.825 14.416 15.125 15.362 15.226 15.176 15.328 14.895 15.141 15.634 14.922 14.764 15.122 15.448 15.398 15.089 14.765 15.234 15.302 14.774 14.979 15.212 15.29 15.012 15.041 15.448 14.34 14.338 14.809 15.046 14.816 15.232 14.933 15.255 15.21 14.766 14.8 15.506 15.749 15.274 15.599 15.673 14.651 14.692 14.552 14.563 14.164 14.546 15.044 14.695 15.162 14.772 14.645 15.493 14.75 14.786 15.003 15.148 15.221 + +getTraitData is defined in the file [[https://github.com/genenetwork/genenetwork/blob/master/web/webqtl/textUI/cmdClass.py#L134][web/webqtl/textUI/cmdClass.py]]. +probe is None, so the code at line 199 is run + +query = "SELECT Strain.Name, %sData.value from %sData, Strain, %s, +%sXRef WHERE %s.Name = '%s' and %sXRef.%sId = %s.Id and +%sXRef.%sFreezeId = %d and %sXRef.DataId = %sData.Id and +%sData.StrainId = Strain.Id order by Strain.Id" % (prefix, prefix, +prefix, prefix, prefix, probeset,prefix, prefix, prefix, prefix, +prefix, dbId, prefix, prefix, prefix) + +where prefix is ProbeSet (one presumes). So, let's see if we can do this by hand + +SELECT Strain.Name, ProbeSetData.value from ProbeSetData, Strain, ProbeSet, +ProbeSetXRef WHERE ProbeSet.Name = '1443823_s_at' and ProbeSetXRef.ProbeSetId = ProbeSet.Id and +ProbeSetXRef.ProbeSetFreezeId = $dbid and ProbeSetXRef.DataId = ProbeSetData.Id and +ProbeSetData.StrainId = Strain.Id ORDER BY Strain.Id + +The $dbid is listed in the ProbeSetFreeze table, + +SELECT ProbeFreezeId,Name FROM ProbeSetFreeze WHERE Name='HC_M2_0606_P' limit 5; + ++---------------+--------------+ +| ProbeFreezeId | Name | ++---------------+--------------+ +| 30 | HC_M2_0606_P | ++---------------+--------------+ + +select id,name from ProbeSet WHERE Name = '1443823_s_at' limit 5; ++--------+--------------+ +| id | name | ++--------+--------------+ +| 106556 | 1443823_s_at | ++--------+--------------+ + +So + +query = "SELECT Strain.Name, %sData.value from %sData, Strain, %s, +%sXRef WHERE %s.Name = '%s' and %sXRef.%sId = %s.Id and +%sXRef.%sFreezeId = %d and %sXRef.DataId = %sData.Id and +%sData.StrainId = Strain.Id order by Strain.Id" % (prefix, prefix, +prefix, prefix, prefix, probeset,prefix, prefix, prefix, prefix, +prefix, dbId, prefix, prefix, prefix) + +CORRECT NAME: + +SELECT Strain.Name, ProbeSetData.value from ProbeSetData, Strain, +ProbeSet, ProbeSetXRef WHERE ProbeSet.Name = 'at_probe' and +ProbeSetXRef.ProbeSetId = ProbeSet.Id and +ProbeSetXRef.ProbeSetFreezeId = dbid and ProbeSetXRef.DataId = +ProbeSetData.Id and ProbeSetData.StrainId = Strain.Id order by +Strain.Id + + +select * from ProbeSetXRef WHERE probesetfreezeid=30 limit 5; ++------------------+------------+--------+------------+--------------------+------------+--------------------+--------------------+-----------------+--------------------+--------+-------------------+------+ +| ProbeSetFreezeId | ProbeSetId | DataId | Locus_old | LRS_old | pValue_old | mean | se | Locus | LRS | pValue | additive | h2 | ++------------------+------------+--------+------------+--------------------+------------+--------------------+--------------------+-----------------+--------------------+--------+-------------------+------+ +| 30 | 1 | 445962 | 01.059.350 | 7.1753152078069595 | 0.961 | 30.0646 | 1.79763935596594 | rs13475891 | 7.1753152078069204 | 0.973 | 4.71778125 | NULL | +| 30 | 2 | 445963 | D4Mit156 | 7.58944292943285 | 0.724 | 232.38328571428602 | 9.00278909374791 | CEL-4_118751423 | 7.57513435426218 | 0.793 | 25.2660951417004 | NULL | +| 30 | 3 | 445964 | D1Mit134 | 9.766065497826819 | 0.737 | 47.206 | 1.58413526287766 | mCV23431007 | 9.76606549782677 | 0.797 | -4.82405952380952 | NULL | +| 30 | 4 | 445965 | D1Mit155 | 18.0045829157241 | 0.033 | 132.29248571428602 | 4.37799472291842 | rs3689947 | 17.9365068406286 | 0.049 | -16.945619047619 | NULL | +| 30 | 5 | 445966 | D5Mit197 | 9.51068902627823 | 0.476 | 271.309971428571 | 7.4294268316065395 | rs6239372 | 10.4214974316601 | 0.41 | -25.6148045454546 | NULL | ++------------------+------------+--------+------------+--------------------+------------+--------------------+--------------------+-----------------+--------------------+--------+-------------------+------+ + +So, apparently ProbeSetFreezeID points to the database identifier in +ProbeSetFreeze which has the name of the 'DB'. OK, that kinda makes +sense now. Meanwhile Probeset.name points to the phenotype name. + +ProbeSetXRef binds these tables together. Finally there is the data in + +select * from ProbeSetData limit 5; ++----+----------+-------+ +| Id | StrainId | value | ++----+----------+-------+ +| 1 | 1 | 5.742 | +| 1 | 2 | 5.006 | +| 1 | 3 | 6.079 | +| 1 | 4 | 6.414 | +| 1 | 5 | 4.885 | ++----+----------+-------+ +5 rows in set (0.00 sec) + +linked by ProbeSetXRef.dataid. diff --git a/doc/database.svg b/doc/database.svg new file mode 100644 index 00000000..9ddc2f47 --- /dev/null +++ b/doc/database.svg @@ -0,0 +1,882 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="database.svg"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker12489" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000d7;stroke-opacity:1;fill:#0000d7;fill-opacity:1" + id="path12491" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4445" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker11727" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000da;stroke-opacity:1;fill:#0000da;fill-opacity:1" + id="path11729" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker11607" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000da;stroke-opacity:1;fill:#0000da;fill-opacity:1" + id="path11609" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4427" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#0000a3;stroke-width:1pt;stroke-opacity:1;fill:#0000a3;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4451" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000d7;stroke-opacity:1;fill:#0000d7;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker10561" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + id="path10563" /> + </marker> + <marker + inkscape:stockid="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4448" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000b1;stroke-opacity:1;fill:#0000b1;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="TriangleOutM" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutM" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4569" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#0000b1;stroke-width:1pt;stroke-opacity:1;fill:#0000b1;fill-opacity:1" + transform="scale(0.4)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4424" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#0000b1;stroke-width:1pt;stroke-opacity:1;fill:#0000b1;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mstart-5" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path4448-2" + style="fill:#0000b1;fill-opacity:1;fill-rule:evenodd;stroke:#0000b1;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-8" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path4451-9" + style="fill:#0000b1;fill-opacity:1;fill-rule:evenodd;stroke:#0000b1;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12489-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#0000d7;fill-opacity:1;fill-rule:evenodd;stroke:#0000d7;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path12491-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12489-7-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6,-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#0000d7;fill-opacity:1;fill-rule:evenodd;stroke:#0000d7;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path12491-4-9" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="361.50633" + inkscape:cy="527.18241" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1085" + inkscape:window-height="1276" + inkscape:window-x="28" + inkscape:window-y="142" + inkscape:window-maximized="0" + inkscape:snap-bbox="false" + inkscape:snap-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3355" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.46889797px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357" + width="174.81682" + height="25.531101" + x="39.020161" + y="85.668076" /> + <rect + style="fill:none" + id="rect4159" + width="280" + height="20" + x="40" + y="72.362206" /> + <rect + style="fill:none" + id="rect4164" + width="290" + height="20" + x="40" + y="72.362206" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;-inkscape-font-specification:'sans-serif, Normal';font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;" + x="40" + y="82.362206" + id="text4181" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4183" + x="40" + y="82.362206">ProbesetData</tspan><tspan + sodipodi:role="line" + x="40" + y="107.36221" + id="tspan4185" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="100" + y="132.3622" + id="text4187" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4189" + x="100" + y="132.3622" /></text> + <rect + style="fill:none" + id="rect4191" + width="80" + height="70.000008" + x="60" + y="92.362206" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" + x="60" + y="102.3622" + id="text4208" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4210" + x="60" + y="102.3622">id</tspan><tspan + sodipodi:role="line" + x="60" + y="127.3622" + id="tspan4212" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;-inkscape-font-specification:'sans-serif, Normal';font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;" + x="90" + y="102.3622" + id="text4214" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4216" + x="90" + y="102.3622">strainid</tspan><tspan + sodipodi:role="line" + x="90" + y="127.3622" + id="tspan4218" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="210" + y="102.3622" + id="text4220" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="210" + y="102.3622" + id="tspan4224" /><tspan + sodipodi:role="line" + x="210" + y="127.3622" + id="tspan4228" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="160.71428" + y="102.3622" + id="text4230" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4232" + x="160.71428" + y="102.3622">value</tspan><tspan + sodipodi:role="line" + x="160.71428" + y="117.9872" + id="tspan4234" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="40" + y="162.3622" + id="text4236" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4238" + x="40" + y="162.3622">ProbeSetXRef</tspan><tspan + sodipodi:role="line" + x="40" + y="177.9872" + id="tspan4240" /></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999564px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357-3" + width="393.15714" + height="25.300003" + x="39.849991" + y="171.49791" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="60" + y="182.3622" + id="text4257" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4259" + x="60" + y="182.3622">ProbeSetFreezeId</tspan><tspan + sodipodi:role="line" + x="60" + y="197.9872" + id="tspan4261" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="190" + y="182.3622" + id="text4263" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4265" + x="190" + y="182.3622">ProbeSetID</tspan><tspan + sodipodi:role="line" + x="190" + y="197.9872" + id="tspan4267" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="290" + y="182.3622" + id="text4269" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4271" + x="290" + y="182.3622">DataId</tspan><tspan + sodipodi:role="line" + x="290" + y="197.9872" + id="tspan4273" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="360" + y="182.3622" + id="text4275" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4277" + x="360" + y="182.3622">pValue</tspan><tspan + sodipodi:role="line" + x="360" + y="197.9872" + id="tspan4279" /></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50748467px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357-6" + width="205.08281" + height="25.492514" + x="249.75372" + y="87.830231" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="250" + y="82.362206" + id="text4296" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="250" + y="82.362206" + id="tspan12343">ProbesetFreeze</tspan><tspan + sodipodi:role="line" + x="250" + y="97.987206" + id="tspan4300" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="312.52795" + y="102.3622" + id="text4302" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="312.52795" + y="102.3622" + id="tspan5260">ProbeFreezeId </tspan><tspan + sodipodi:role="line" + x="312.52795" + y="117.9872" + id="tspan4308" /><tspan + sodipodi:role="line" + x="312.52795" + y="133.6122" + id="tspan4306" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="404.24365" + y="102.3622" + id="text4310" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4312" + x="404.24365" + y="102.3622">Name</tspan><tspan + sodipodi:role="line" + x="404.24365" + y="117.9872" + id="tspan4314" /></text> + <path + style="fill:none" + id="path4331" + sodipodi:type="arc" + sodipodi:cx="415" + sodipodi:cy="57.362206" + sodipodi:rx="15" + sodipodi:ry="15" + sodipodi:start="0" + sodipodi:end="0.30092023" + d="m 430,57.362206 a 15,15 0 0 1 -0.67404,4.445988 L 415,57.362206 Z" /> + <path + style="fill:none" + id="path4333" + sodipodi:type="arc" + sodipodi:cx="415" + sodipodi:cy="57.362206" + sodipodi:rx="25" + sodipodi:ry="5" + sodipodi:start="0" + sodipodi:end="0.30092094" + d="m 440,57.362206 a 25,5 0 0 1 -1.1234,1.481999 L 415,57.362206 Z" /> + <path + style="fill:none" + id="path4335" + sodipodi:type="arc" + sodipodi:cx="400" + sodipodi:cy="57.362206" + sodipodi:rx="10" + sodipodi:ry="15" + sodipodi:start="0" + sodipodi:end="0.30092094" + d="m 410,57.362206 a 10,15 0 0 1 -0.44936,4.445998 L 400,57.362206 Z" /> + <path + style="fill:none" + id="path4337" + sodipodi:type="arc" + sodipodi:cx="336.88586" + sodipodi:cy="45.240116" + sodipodi:rx="30.304577" + sodipodi:ry="1.5152289" + sodipodi:start="0" + sodipodi:end="0.30092094" + d="m 367.19044,45.240116 a 30.304577,1.5152289 0 0 1 -1.36177,0.449114 l -28.94281,-0.449114 z" /> + <path + style="fill:none" + id="path4341" + sodipodi:type="arc" + sodipodi:cx="279.81226" + sodipodi:cy="30.592905" + sodipodi:rx="10.101525" + sodipodi:ry="4.0406103" + sodipodi:start="0" + sodipodi:end="0.27257505" + d="m 289.91378,30.592905 a 10.101525,4.0406103 0 0 1 -0.37294,1.087782 l -9.72858,-1.087782 z" /> + <path + style="fill:none" + id="path4343" + sodipodi:type="arc" + sodipodi:cx="294.96454" + sodipodi:cy="47.007885" + sodipodi:rx="5.0507627" + sodipodi:ry="12.374369" + sodipodi:start="0" + sodipodi:end="0.27257505" + d="m 300.0153,47.007885 a 5.0507627,12.374369 0 0 1 -0.18647,3.331332 l -4.86429,-3.331332 z" /> + <path + style="fill:none" + id="path4345" + sodipodi:type="arc" + sodipodi:cx="314.15744" + sodipodi:cy="50.795956" + sodipodi:rx="17.172594" + sodipodi:ry="2.5253813" + sodipodi:start="0" + sodipodi:end="0.27257505" + d="m 331.33003,50.795956 a 17.172594,2.5253813 0 0 1 -0.63399,0.679863 l -16.5386,-0.679863 z" /> + <path + style="fill:none" + id="path4347" + sodipodi:type="arc" + sodipodi:cx="372.49374" + sodipodi:cy="53.573875" + sodipodi:rx="36.112953" + sodipodi:ry="5.8083773" + sodipodi:start="0" + sodipodi:end="0.27257505" + d="m 408.6067,53.573875 a 36.112953,5.8083773 0 0 1 -1.33326,1.563687 l -34.7797,-1.563687 z" /> + <path + style="opacity:0.92099998;fill:#1df5d5;fill-opacity:1;stroke:#000000;stroke-width:0.05549314;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.96610173" + id="path4362" + sodipodi:type="arc" + sodipodi:cx="432.99887" + sodipodi:cy="78.632385" + sodipodi:rx="26.093044" + sodipodi:ry="18.630219" + sodipodi:start="0.86050045" + sodipodi:end="0.81667097" + d="m 450.01305,92.757239 a 26.093044,18.630219 0 0 1 -36.6095,-1.82283 26.093044,18.630219 0 0 1 2.15172,-26.157287 26.093044,18.630219 0 0 1 36.65666,1.249611 26.093044,18.630219 0 0 1 -1.34842,26.184672" + sodipodi:open="true" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="427.39667" + y="80.98439" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="427.39667" + y="80.98439">DB</tspan><tspan + sodipodi:role="line" + x="427.39667" + y="96.60939" + id="tspan4416" /></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.63383168px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357-6-4" + width="263.54529" + height="30.944864" + x="473.30872" + y="-76.369919" + transform="scale(1,-1)" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="475.78186" + y="35.138592" + id="text5279" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5281" + x="475.78186" + y="35.138592">ProbeFreeze</tspan><tspan + sodipodi:role="line" + x="475.78186" + y="50.763592" + id="tspan5283" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="481.84277" + y="64.433014" + id="text5285" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5287" + x="481.84277" + y="64.433014">id</tspan><tspan + sodipodi:role="line" + x="481.84277" + y="80.058014" + id="tspan5289" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="509.11688" + y="64.433014" + id="text5291" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5293" + x="509.11688" + y="64.433014">ProbeFreezeId</tspan><tspan + sodipodi:role="line" + x="509.11688" + y="80.058006" + id="tspan5295" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="616.19305" + y="64.433014" + id="text5297" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5299" + x="616.19305" + y="64.433014">TissueId</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="263.64981" + y="101.80865" + id="text5965" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5967" + x="263.64981" + y="101.80865">id</tspan><tspan + sodipodi:role="line" + x="263.64981" + y="117.43365" + id="tspan5969" /></text> + <path + style="opacity:0.92099998;fill:#1df5d5;fill-opacity:1;stroke:#000000;stroke-width:0.04304412;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.96610173" + id="path4362-2" + sodipodi:type="arc" + sodipodi:cx="506.08649" + sodipodi:cy="83.625862" + sodipodi:rx="20.03821" + sodipodi:ry="14.595966" + sodipodi:start="0.86050045" + sodipodi:end="0.81667097" + d="m 519.15256,94.692071 a 20.03821,14.595966 0 0 1 -28.11434,-1.428108 20.03821,14.595966 0 0 1 1.65242,-20.493098 20.03821,14.595966 0 0 1 28.15056,0.979016 20.03821,14.595966 0 0 1 -1.03552,20.514553" + sodipodi:open="true" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="501.03564" + y="86.656364" + id="text7497" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7499" + x="501.03564" + y="86.656364">=</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#0000a3;stroke-width:2.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" + d="m 385.87827,117.9711 c 0,0 59.599,62.62946 92.93404,22.22336 30.30457,-42.426411 30.30457,-42.426411 30.30457,-42.426411" + id="path11531" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#0000da;stroke-width:4.50923538;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker11727)" + d="M 303.7558,169.72606 71.513981,116.30022" + id="path11707" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#0000d7;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#marker12489)" + d="m 138.3909,171.50919 130.30968,-59.599" + id="path12481" + inkscape:connector-curvature="0" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.46889797px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357-8" + width="174.81682" + height="25.531101" + x="42.901268" + y="25.4035" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="43.436558" + y="17.966" + id="text12592" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan12594" + x="43.436558" + y="17.966">Strain</tspan><tspan + sodipodi:role="line" + x="43.436558" + y="33.591" + id="tspan12596" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="55.558392" + y="41.199509" + id="text12598" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="55.558392" + y="41.199509" + id="tspan12610">id</tspan><tspan + sodipodi:role="line" + x="55.558392" + y="56.824509" + id="tspan12602" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="101.01525" + y="40.189354" + id="text12604" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan12606" + x="101.01525" + y="40.189354">name</tspan><tspan + sodipodi:role="line" + x="101.01525" + y="55.814354" + id="tspan12608" /></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#0000d7;stroke-width:0.96167564;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker12489-7)" + d="M 108.99621,89.933268 65.230166,45.329821" + id="path12481-0" + inkscape:connector-curvature="0" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.46889797px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="rect3357-8-7" + width="174.81682" + height="25.531101" + x="40.880962" + y="240.56599" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="43.436558" + y="231.10818" + id="text14098" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan14100" + x="43.436558" + y="231.10818">ProbeSet</tspan><tspan + sodipodi:role="line" + x="43.436558" + y="246.73318" + id="tspan14102" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="53.538086" + y="257.37213" + id="text14104" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="53.538086" + y="257.37213" + id="tspan14108">id</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="90.913734" + y="256.362" + id="text14112" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="90.913734" + y="256.362" + id="tspan14116">name</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="144.45181" + y="255.35185" + id="text14120" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="144.45181" + y="255.35185" + id="tspan14124">many infos</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#0000d7;stroke-width:1.89054883;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker12489-7-2)" + d="M 72.019909,251.65943 208.39464,196.3512" + id="path12481-0-6" + inkscape:connector-curvature="0" + inkscape:transform-center-x="-32.453094" + inkscape:transform-center-y="114.65633" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="150.51273" + y="40.18935" + id="text3465" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3467" + x="150.51273" + y="40.18935">speciesid</tspan><tspan + sodipodi:role="line" + x="150.51273" + y="55.81435" + id="tspan3469" /></text> + </g> +</svg> diff --git a/doc/joss/2016/paper.bib b/doc/joss/2016/paper.bib new file mode 100644 index 00000000..34c0fd05 --- /dev/null +++ b/doc/joss/2016/paper.bib @@ -0,0 +1,50 @@ +@article{WGCNA:2008, + author = {Langfelder, P. and Horvath, S.}, + title = {{WGCNA: an R package for weighted correlation network analysis}}, + journal = {BMC Bioinformatics}, + year = {2008}, + volume = {9}, + pages = {559}, + doi = {10.1186/1471-2105-9-559}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/19114008}, + abstract = {BACKGROUND: Correlation networks are increasingly being used in bioinformatics applications. For example, weighted gene co-expression network analysis is a systems biology method for describing the correlation patterns among genes across microarray samples. Weighted correlation network analysis (WGCNA) can be used for finding clusters (modules) of highly correlated genes, for summarizing such clusters using the module eigengene or an intramodular hub gene, for relating modules to one another and to external sample traits (using eigengene network methodology), and for calculating module membership measures. Correlation networks facilitate network based gene screening methods that can be used to identify candidate biomarkers or therapeutic targets. These methods have been successfully applied in various biological contexts, e.g. cancer, mouse genetics, yeast genetics, and analysis of brain imaging data. While parts of the correlation network methodology have been described in separate publications, there is a need to provide a user-friendly, comprehensive, and consistent software implementation and an accompanying tutorial. RESULTS: The WGCNA R software package is a comprehensive collection of R functions for performing various aspects of weighted correlation network analysis. The package includes functions for network construction, module detection, gene selection, calculations of topological properties, data simulation, visualization, and interfacing with external software. Along with the R package we also present R software tutorials. While the methods development was motivated by gene expression data, the underlying data mining approach can be applied to a variety of different settings. CONCLUSION: The WGCNA package provides R functions for weighted correlation network analysis, e.g. co-expression network analysis of gene expression data. The R package along with its source code and additional material are freely available at http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA.} +} + +@article{Wang:2016, + author = {Wang, X. and Pandey, A. K. and Mulligan, M. K. and Williams, E. G. and Mozhui, K. and Li, Z. and Jovaisaite, V. and Quarles, L. D. and Xiao, Z. and Huang, J. and Capra, J. A. and Chen, Z. and Taylor, W. L. and Bastarache, L. and Niu, X. and Pollard, K. S. and Ciobanu, D. C. and Reznik, A. O. and Tishkov, A. V. and Zhulin, I. B. and Peng, J. and Nelson, S. F. and Denny, J. C. and Auwerx, J. and Lu, L. and Williams, R. W.}, + title = {{Joint mouse-human phenome-wide association to test gene function and disease risk}}, + journal = {Nat Commun}, + year = {2016}, + volume = {7}, + pages = {10464}, + doi = {10.1038/ncomms10464}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/26833085}, + abstract = {Phenome-wide association is a novel reverse genetic strategy to analyze genome-to-phenome relations in human clinical cohorts. Here we test this approach using a large murine population segregating for approximately 5 million sequence variants, and we compare our results to those extracted from a matched analysis of gene variants in a large human cohort. For the mouse cohort, we amassed a deep and broad open-access phenome consisting of approximately 4,500 metabolic, physiological, pharmacological and behavioural traits, and more than 90 independent expression quantitative trait locus (QTL), transcriptome, proteome, metagenome and metabolome data sets--by far the largest coherent phenome for any experimental cohort (www.genenetwork.org). We tested downstream effects of subsets of variants and discovered several novel associations, including a missense mutation in fumarate hydratase that controls variation in the mitochondrial unfolded protein response in both mouse and Caenorhabditis elegans, and missense mutations in Col6a5 that underlies variation in bone mineral density in both mouse and human.} +} + +@article{Lippert:2011, + author = {Lippert, C. and Listgarten, J. and Liu, Y. and Kadie, C. M. and Davidson, R. I. and Heckerman, D.}, + title = {{FaST linear mixed models for genome-wide association studies}}, + journal = {Nat Methods}, + year = {2011}, + volume = {8}, + number = {10}, + pages = {833-835}, + doi = {10.1038/nmeth.1681}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/21892150}, + abstract = {We describe factored spectrally transformed linear mixed models (FaST-LMM), an algorithm for genome-wide association studies (GWAS) that scales linearly with cohort size in both run time and memory use. On Wellcome Trust data for 15,000 individuals, FaST-LMM ran an order of magnitude faster than current efficient algorithms. Our algorithm can analyze data for 120,000 individuals in just a few hours, whereas current algorithms fail on data for even 20,000 individuals (http://mscompbio.codeplex.com/).} +} + +@article{Arends:2010, + author = {Arends, D. and Prins, P. and Jansen, R. C. and Broman, K. W.}, + title = {{R/qtl: high-throughput multiple QTL mapping}}, + journal = {Bioinformatics}, + year = {2010}, + volume = {26}, + number = {23}, + pages = {2990-2992}, + doi = {10.1093/bioinformatics/btq565}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/20966004}, + abstract = {MOTIVATION: R/qtl is free and powerful software for mapping and exploring quantitative trait loci (QTL). R/qtl provides a fully comprehensive range of methods for a wide range of experimental cross types. We recently added multiple QTL mapping (MQM) to R/qtl. MQM adds higher statistical power to detect and disentangle the effects of multiple linked and unlinked QTL compared with many other methods. MQM for R/qtl adds many new features including improved handling of missing data, analysis of 10,000 s of molecular traits, permutation for determining significance thresholds for QTL and QTL hot spots, and visualizations for cis-trans and QTL interaction effects. MQM for R/qtl is the first free and open source implementation of MQM that is multi-platform, scalable and suitable for automated procedures and large genetical genomics datasets. AVAILABILITY: R/qtl is free and open source multi-platform software for the statistical language R, and is made available under the GPLv3 license. R/qtl can be installed from http://www.rqtl.org/. R/qtl queries should be directed at the mailing list, see http://www.rqtl.org/list/. CONTACT: kbroman@biostat.wisc.edu.}, + +} diff --git a/doc/joss/2016/paper.json b/doc/joss/2016/paper.json new file mode 100644 index 00000000..c3c02156 --- /dev/null +++ b/doc/joss/2016/paper.json @@ -0,0 +1,23 @@ +{ + "@context": "https://raw.githubusercontent.com/mbjones/codemeta/master/codemeta.jsonld", + "@type": "Code", + "author": [ + { + "@id": "0000-0002-9623-3401", + "@type": "Person", + "email": "jakevdp@uw.edu", + "name": "Jake VanderPlas", + "affiliation": "University of Washington eScience Institute" + } + ], + "identifier": "https://zenodo.org/record/50995#.Vyp9DBUrJBw", + "codeRepository": "http://github.com/jakevdp/mst_clustering", + "datePublished": "2016-05-04", + "dateModified": "2016-05-04", + "dateCreated": "2016-05-04", + "description": "Clustering via Euclidean Minimum Spanning Trees", + "keywords": "machine learning", + "license": "BSD", + "title": "mst_clustering", + "version": "v1.0" +} diff --git a/doc/joss/2016/paper.md b/doc/joss/2016/paper.md new file mode 100644 index 00000000..42fcd500 --- /dev/null +++ b/doc/joss/2016/paper.md @@ -0,0 +1,84 @@ +--- +title: 'GeneNetwork: framework for web-based genetics' +tags: + - bioinformatics + - genetics + - genomics +authors: + - name: Zachary Sloan + orcid: 0000-0002-8099-1363 + affiliation: University of Tennessee Health Science Center, USA + - name: Danny Arends + orcid: 0000-0001-8738-0162 + affiliation: Humboldt Universityl, Berlin, Germany + - name: Karl W. Broman + orcid: 0000-0002-4914-6671 + affiliation: University of Wisconsin, USA + - name: Arthur Centeno + orcid: 0000-0003-3142-2081 + affiliation: University of Tennessee Health Science Center, USA + - name: Nick Furlotte + orcid: ? + - name: Harm Nijveen + orcid: 0000-0002-9167-4945 + affiliation: Wageningen University, The Netherlands + - name: Lei Yan + orcid: 0000-0001-5259-3379 + affiliation: University of Tennessee Health Science Center, USA + - name: Xiang Zhou + orcid: 0000-0002-4331-7599 + affiliation: University of Michigan + - name: Robert W. WIlliams + orcid: 0000-0001-8924-4447 + affiliation: University of Tennessee Health Science Center, USA + - name: Pjotr Prins + orcid: orcid.org/0000-0002-8021-9162 + affiliation: University Medical Center Utrecht, The Netherlands + affiliation: University of Tennessee Health Science Center, USA +date: 29 May 2016 +bibliography: paper.bib +--- + +# Summary + +GeneNetwork (GN) is a free and open source (FOSS) framework for +web-based genetics that can be deployed anywhere. GN allows biologists +to upload experimental data and map phenotypes interactively against +genotypes using tools, such as R/QTL [@Arends:2010] mapping, interval +mapping for model organisms and pylmm; an implementation of FaST-LMM +[@Lippert:2011] which is suitable for human populations and outbred +crosses, such as the mouse diversity outcross. Interactive D3 graphics +are included from R/qtlcharts and presentation-ready figures can be +generated. Recently we have added functionality for phenotype +correlation [@Wang:2016] and network analysis [@WGCNA:2008]. + +-![Mouse LMM mapping example](qtl2.png) + +GN is written in python and javascript and contains a rich set of +tools and libraries that can be written in any computer language. A +full list of included software can be found in +[guix-bioinformatics](https://github.com/genenetwork/guix-bioinformatics/blob/master/gn/packages/genenetwork.scm). To +make it easy to install GN locally in a byte reproducible way, +including all dependencies and a 2GB MySQL test database (the full +database is 160GB and growing), GN is packaged with +[GNU Guix](https://www.gnu.org/software/guix/), as described +[here](https://github.com/genenetwork/genenetwork2/blob/staging/doc/README.org). +GNU Guix deployment makes it feasible to deploy and rebrand GN +anywhere. + +# Future work + +More mapping tools will be added, including support for Genome-wide +Efficient Mixed Model Association (GEMMA). The +[Biodiallance genome browser](http://www.biodalliance.org/) is being +added as a Google Summer of Code project with special tracks related +to QTL mapping and network analysis. Faster LMM solutions are being +worked on, including GPU support. + +A REST interface is being added so that data can be uploaded to a +server, analysis run remotely on high performance hardware, and +results downloaded and used for further analysis. This feature will +allow biologist-programmers to use R and python on their computer and +execute computations on GN enabled servers. + +# References diff --git a/doc/joss/2016/qtl.png b/doc/joss/2016/qtl.png Binary files differnew file mode 100644 index 00000000..995a2739 --- /dev/null +++ b/doc/joss/2016/qtl.png diff --git a/doc/joss/2016/qtl2.png b/doc/joss/2016/qtl2.png Binary files differnew file mode 100644 index 00000000..e0b684ef --- /dev/null +++ b/doc/joss/2016/qtl2.png |