diff options
-rw-r--r-- | doc/database.org | 165 | ||||
-rw-r--r-- | doc/database.svg | 882 | ||||
-rw-r--r-- | test/lib/NavigationTest.rb | 46 |
3 files changed, 1090 insertions, 3 deletions
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/test/lib/NavigationTest.rb b/test/lib/NavigationTest.rb new file mode 100644 index 00000000..26080d28 --- /dev/null +++ b/test/lib/NavigationTest.rb @@ -0,0 +1,46 @@ +# In these tests we navigate from the main page to a specific trait then hit the different mapping tool buttons (In this case pylMM and r/qtl) followed by computing the results (marker regressions). + +class NavigationTest +end + +describe NavigationTest do + before do + @agent = Mechanize.new + @agent.agent.http.ca_file = '/etc/ssl/certs/ca-certificates.crt' + end + + describe NavigationTest do + it "pyLMM mapping tool selection" do + page = @agent.get($host+'/show_trait?trait_id=1435395_s_at&dataset=HC_M2_0606_P') +#Navigates to http://localhost:5003/show_trait?trait_id=1435395_s_at&dataset=HC_M2_0606_P and clicks respective buttons. + link = page.link_with(text: 'pyLMM') + page = link.click + puts page.uri + link = page.link_with(text: 'Compute') + page = link.click + puts page.uri + probe_link.uri.to_s.must_equal "/marker_regression" + + + end + end + +end + +describe NavigationTest do + it "R/qtl mapping tool selection" do + page = @agent.get($host+'/show_trait?trait_id=1435395_s_at&dataset=HC_M2_0606_P') + link = page.link_with(text: 'R/qtl') + page = link.click + puts page.uri + form.field_with(:name => 'Methods').options[2].select + link = page.link_with(text: 'Compute') + page = link.click + puts page.uri + probe_link.uri.to_s.must_equal "/marker_regression" + + + end + end + + |