aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml18
-rw-r--r--test/requests/links_scraper/genelinks.py133
-rw-r--r--wqflask/wqflask/static/new/css/broken_links.css5
-rw-r--r--wqflask/wqflask/templates/base.html10
-rw-r--r--wqflask/wqflask/templates/credits.html4
-rw-r--r--wqflask/wqflask/templates/data_sharing.html18
-rw-r--r--wqflask/wqflask/templates/index_page.html9
-rwxr-xr-xwqflask/wqflask/templates/index_page_orig.html4
-rw-r--r--wqflask/wqflask/templates/show_trait_calculate_correlations.html4
-rwxr-xr-xwqflask/wqflask/templates/show_trait_mapping_tools.html2
10 files changed, 182 insertions, 25 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 2342796a..a36abc0a 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -46,3 +46,21 @@ jobs:
WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG \
GENENETWORK_FILES=/genotype_files/ bin/genenetwork2 \
etc/default_settings.py -c -m unittest discover -v
+
+ - name: Start Genenetwork as a Background Task
+ run: |
+ env GN2_PROFILE=/gn2-profile \
+ TMPDIR=/tmp SERVER_PORT=5004 \
+ WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG \
+ GENENETWORK_FILES=/genotype_files/ bin/genenetwork2 \
+ etc/default_settings.py&
+
+ - name: Test for Broken Links
+ run: |
+
+ env GN2_PROFILE=/gn2-profile \
+ TMPDIR=/tmp\
+ WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG \
+ GENENETWORK_FILES=/genotype_files/ bin/genenetwork2 \
+ etc/default_settings.py -c /__w/genenetwork2/genenetwork2/test/requests/links_scraper/genelinks.py
+
diff --git a/test/requests/links_scraper/genelinks.py b/test/requests/links_scraper/genelinks.py
new file mode 100644
index 00000000..12300f4a
--- /dev/null
+++ b/test/requests/links_scraper/genelinks.py
@@ -0,0 +1,133 @@
+import re
+import requests
+import urllib3
+import os
+import logging
+
+from urllib.request import urlopen as uReq
+from bs4 import BeautifulSoup as soup
+from urllib.parse import urljoin
+from urllib.parse import urlparse
+
+
+PORT = os.environ.get("PORT", "5004")
+TEMPLATE_PATH = "../wqflask/wqflask/templates"
+
+BROKEN_LINKS = set()
+
+
+def search_templates():
+ """searches for broken links in templates"""
+ html_parsed_pages = []
+ for subdir, dirs, files in os.walk(TEMPLATE_PATH):
+ for file in files:
+ file_path = os.path.join(subdir, file)
+ if file_path.endswith(".html"):
+ parsed_page = soup(
+ open(file_path, encoding="utf8"), "html.parser")
+ html_parsed_pages.append(parsed_page)
+
+ return html_parsed_pages
+
+
+def is_valid_link(url_link):
+ try:
+ result = urlparse(url_link)
+ return all([result.scheme, result.netloc, result.path])
+ except Exception as e:
+ return False
+
+
+def test_link(link):
+ print(f'Checking -->{link}')
+ results = None
+ try:
+
+ results = requests.get(link, verify=False, timeout=10)
+ status_code = results.status_code
+
+ except Exception as e:
+ status_code = 408
+
+ return int(status_code) > 403
+
+
+def fetch_css_links(parsed_page):
+ print("fetching css links")
+ for link in parsed_page.findAll("link"):
+ full_path = None
+
+ link_url = link.attrs.get("href")
+ if is_valid_link(link_url):
+ full_path = link_url
+
+ elif re.match(r"^/css", link_url) or re.match(r"^/js", link_url):
+ full_path = urljoin('http://localhost:5004/', link_url)
+
+ if full_path is not None:
+ if test_link(full_path):
+ BROKEN_LINKS.add(full_path)
+
+
+def fetch_html_links(parsed_page):
+ print("fetching a tags ")
+
+ for link in parsed_page.findAll("a"):
+ full_path = None
+ link_url = link.attrs.get("href")
+ if re.match(r"^/", link_url):
+ full_path = urljoin('http://localhost:5004/', link_url)
+
+ elif is_valid_link(link_url):
+ full_path = link_url
+
+ if full_path is not None:
+ if test_link(full_path):
+ BROKEN_LINKS.add(full_path)
+
+
+def fetch_script_tags(parsed_page):
+ print("--->fetching js links")
+ for link in parsed_page.findAll("script"):
+ js_link = link.attrs.get("src")
+ if js_link is not None:
+ if is_valid_link(js_link):
+ raise SystemExit("Failed,the library should be packaged in guix.\
+ Please contact,http://genenetwork.org/ for more details")
+
+ elif re.match(r"^/css", js_link) or re.match(r"^/js", js_link):
+ full_path = urljoin('http://localhost:5004/', js_link)
+ if test_link(full_path):
+ BROKEN_LINKS.add(full_path)
+
+
+def fetch_page_links(page_url):
+
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
+ html_page = uReq(page_url)
+ parsed_page = soup(html_page, "html.parser")
+
+ fetch_script_tags(parsed_page=parsed_page)
+ fetch_css_links(parsed_page=parsed_page)
+ fetch_html_links(parsed_page=parsed_page)
+
+
+def webpages_to_check():
+ pages = [f"http://localhost:{PORT}/"]
+
+ return pages
+
+
+if __name__ == '__main__':
+ # results = search_templates()
+
+ for page in webpages_to_check():
+ fetch_page_links(page)
+ if len(BROKEN_LINKS) > 0:
+ print("THE LINKS BELOW ARE BROKEN>>>>>>>>>>>>>")
+ for link in BROKEN_LINKS:
+ print(link)
+
+ if len(BROKEN_LINKS) > 0:
+ raise SystemExit(
+ "The links Above are broken.Please contact genenetwork.org<<<<<<<<")
diff --git a/wqflask/wqflask/static/new/css/broken_links.css b/wqflask/wqflask/static/new/css/broken_links.css
new file mode 100644
index 00000000..676f32d9
--- /dev/null
+++ b/wqflask/wqflask/static/new/css/broken_links.css
@@ -0,0 +1,5 @@
+
+.broken_link{
+ color:red;
+ text-decoration: underline;
+} \ No newline at end of file
diff --git a/wqflask/wqflask/templates/base.html b/wqflask/wqflask/templates/base.html
index ec500d1e..ccb2ac5a 100644
--- a/wqflask/wqflask/templates/base.html
+++ b/wqflask/wqflask/templates/base.html
@@ -21,6 +21,8 @@
<link rel="stylesheet" type="text/css" href="/static/new/css/colorbox.css" />
<!--<link rel="stylesheet" type="text/css" href="/static/new/css/main.css" />-->
<link rel="stylesheet" type="text/css" href="/static/new/css/parsley.css" />
+ <link rel="stylesheet" type="text/css" href="/static/new/css/broken_links.css" />
+
{% block css %}
{% endblock %}
@@ -80,9 +82,9 @@
<a href="/help" class="dropdow-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Tools <span class="caret"></a>
<ul class="dropdown-menu">
<li><a href="/snp_browser">Variant Browser</a></li>
- <li><a href="http://bnw.genenetwork.org/BNW/sourcecodes/home.php">Bayesian Network Webserver</a></li>
+ <li><a href="http://bnw.genenetwork.org/sourcecodes/home.php">Bayesian Network Webserver</a></li>
<li><a href="https://systems-genetics.org/">Systems Genetics PheWAS</a></li>
- <li><a href="http://ucscbrowser.genenetwork.org/">Genome Browser</a></li>
+ <li><span class="broken_link" href="http://ucscbrowser.genenetwork.org/">Genome Browser</span></li>
<li><a href="http://power.genenetwork.org">BXD Power Calculator</a></li>
<li><a href="http://datafiles.genenetwork.org">Interplanetary File System</a></li>
</ul>
@@ -197,7 +199,7 @@
(P20-DA 21131, 2001-2012)
</li>
<li>
- NCI <a href="http://emice.nci.nih.gov/">MMHCC</a> (U01CA105417), NCRR, <a href="http://www.birncommunity.org/">BIRN</a>, (U24 RR021760)
+ NCI <a href="http://emice.nci.nih.gov/">MMHCC</a> (U01CA105417), NCRR, <span class="broken_link test" href="http://www.birncommunity.org/">BIRN</span>, (U24 RR021760)
</li>
</UL>
<!--</p>-->
@@ -205,7 +207,7 @@
<a href="http://joss.theoj.org/papers/10.21105/joss.00025"><img src="https://camo.githubusercontent.com/846b750f582ae8f1d0b4f7e8fee78bed705c88ba/687474703a2f2f6a6f73732e7468656f6a2e6f72672f7061706572732f31302e32313130352f6a6f73732e30303032352f7374617475732e737667" alt="JOSS" data-canonical-src="http://joss.theoj.org/papers/10.21105/joss.00025/status.svg" style="max-width:100%;"></a>
</p>
<p>
- Development and source code on <a href="https://github.com/genenetwork/">github</a> with <a href="https://github.com/genenetwork/genenetwork2/issues">issue tracker</a> and <a href="https://github.com/genenetwork/genenetwork2/blob/master/README.md">documentation</a>. Join the <a href="http://listserv.uthsc.edu/mailman/listinfo/genenetwork-dev">mailing list</a> and find us on <a href="https://webchat.freenode.net/">IRC</a> (#genenetwork channel).
+ Development and source code on <a href="https://github.com/genenetwork/">github</a> with <a href="https://github.com/genenetwork/genenetwork2/issues">issue tracker</a> and <a href="https://github.com/genenetwork/genenetwork2/blob/master/README.md">documentation</a>. Join the <span class="broken_link" href="http://listserv.uthsc.edu/mailman/listinfo/genenetwork-dev">mailing list</span> and find us on <a href="https://webchat.freenode.net/">IRC</a> (#genenetwork channel).
{% if version: %}
<p><small>GeneNetwork {{ version }}</small></p>
{% endif %}
diff --git a/wqflask/wqflask/templates/credits.html b/wqflask/wqflask/templates/credits.html
index 95c424cc..bcb37c48 100644
--- a/wqflask/wqflask/templates/credits.html
+++ b/wqflask/wqflask/templates/credits.html
@@ -31,8 +31,8 @@
<UL>
<LI><A HREF="http://www.nervenet.org/people/lulu_cv.html">Lu Lu</A>
<LI> <A HREF="http://www.jax.org/news/archives/2009/chesler.html">Elissa J. Chesler</A>
- <LI><a href="http://www.ohsu.edu/som-BehNeuro/Faculty/Crabbe.html">John C Crabbe</a>, OHSU
- <LI><a href="http://www.ohsu.edu/som-BehNeuro/Faculty/Belknap.html">John K Belknap</a>, OHSU
+ <LI><span class="broken-link" href="http://www.ohsu.edu/som-BehNeuro/Faculty/Crabbe.html">John C Crabbe</span>, OHSU
+ <LI><span class="broken-link" href="http://www.ohsu.edu/som-BehNeuro/Faculty/Belknap.html">John K Belknap</span>, OHSU
<LI>Mary-Kathleen Sullivan
<LI>Emily English
<LI>Byron Jones
diff --git a/wqflask/wqflask/templates/data_sharing.html b/wqflask/wqflask/templates/data_sharing.html
index 366e2075..cca498ec 100644
--- a/wqflask/wqflask/templates/data_sharing.html
+++ b/wqflask/wqflask/templates/data_sharing.html
@@ -82,9 +82,9 @@
<P>The entire procedure can be reapplied once the initial outlier data sets have been eliminated to detect any remaining outlier data sets.
-<P><A HREF="http://www.datadesk.com/products/data_analysis/datadesk/" target="_empty" class="normalsize">DataDesk</A> was used to examine the statistical quality of the probe level (CEL) data after step 5 below. DataDesk allows the rapid detection of subsets of probes that are particularly sensitive to still unknown factors in array processing. Arrays can then be categorized at the probe level into "reaction classes." A reaction class is a group of arrays for which the expression of essentially all probes are colinear over the full range of log2 values. A single but large group of arrays (n = 32) processed in essentially the identical manner by a single operator can produce arrays belonging to as many as four different reaction classes. Reaction classes are NOT related to strain, age, sex, treatment, or any known biological parameter (technical replicates can belong to different reaction classes). We do not yet understand the technical origins of reaction classes. The number of probes that contribute to the definition of reaction classes is quite small (<10% of all probes). We have categorized all arrays in this data set into one of 5 reaction classes. These have then been treated as if they were separate batches. Probes in these data type "batches" have been aligned to a common mean as described below.
+<P><span class="broken_link" HREF="http://www.datadesk.com/products/data_analysis/datadesk/" target="_empty" class="normalsize">DataDesk</span> was used to examine the statistical quality of the probe level (CEL) data after step 5 below. DataDesk allows the rapid detection of subsets of probes that are particularly sensitive to still unknown factors in array processing. Arrays can then be categorized at the probe level into "reaction classes." A reaction class is a group of arrays for which the expression of essentially all probes are colinear over the full range of log2 values. A single but large group of arrays (n = 32) processed in essentially the identical manner by a single operator can produce arrays belonging to as many as four different reaction classes. Reaction classes are NOT related to strain, age, sex, treatment, or any known biological parameter (technical replicates can belong to different reaction classes). We do not yet understand the technical origins of reaction classes. The number of probes that contribute to the definition of reaction classes is quite small (<10% of all probes). We have categorized all arrays in this data set into one of 5 reaction classes. These have then been treated as if they were separate batches. Probes in these data type "batches" have been aligned to a common mean as described below.
-<P><B>Probe (cell) level data from the CEL file: </B>These CEL values produced by <a href="http://www.affymetrix.com/support/technical/product_updates/gcos_download.affx" target="_blank" class="normalsize">GCOS</a> are 75% quantiles from a set of 91 pixel values per cell.
+<P><B>Probe (cell) level data from the CEL file: </B>These CEL values produced by <span href="http://www.affymetrix.com/support/technical/product_updates/gcos_download.affx" target="_blank" class="normalsize broken_link">GCOS</span> are 75% quantiles from a set of 91 pixel values per cell.
<OL>
<LI>We added an offset of 1.0 unit to each cell signal to ensure that all values could be logged without generating negative values. We then computed the log base 2 of each cell.
@@ -122,7 +122,7 @@
<LI>Lu Lu, M.D. <!--Tissue acquisition, RNA processing, experimental design-->
<BR>Grant Support: NIH U01AA13499, U24AA13513
-<LI><A HREF="http://www.salk.edu/faculty/faculty/details.php?id=23" target="_empty" class="normalsize">Fred H. Gage, Ph.D.</A> <!--$10,000 contribution -->
+<LI><span HREF="http://www.salk.edu/faculty/faculty/details.php?id=23" target="_empty" class="broken_link normalsize">Fred H. Gage, Ph.D.</span> <!--$10,000 contribution -->
<BR>Grant Support: Lookout Foundation
<LI>Dan Goldowitz, Ph.D. <!--$30,000 contribution -->
@@ -134,7 +134,7 @@
<LI>Shirlean Goodwin, Ph.D. <!--All array processing-->
<BR>Grant Support: NIAAA INIA U01AA013515
-<LI><A HREF="http://www.bccn-berlin.de/ResearchGroups/Kempermann" target="_empty" class="normalsize">Gerd Kempermann, M.D.</A> <!--$30,000 contribution -->
+<LI><span HREF="http://www.bccn-berlin.de/ResearchGroups/Kempermann" class="broken_link normalsize">Gerd Kempermann, M.D.</span> <!--$30,000 contribution -->
<BR>Grant Support: The <A HREF="http://www.volkswagen-stiftung.de/" target="_empty" class="normalsize">Volkswagen Foundation</A> Grant on Permissive and Persistent Factors in Neurogenesis in the Adult Central Nervous System
<BR>Humboldt-Universitat Berlin
<BR>Universitatsklinikum Charite
@@ -174,10 +174,10 @@
</UL>
</P><br><br></td></tr>
<tr><td><span style="font-size:115%;font-weight:bold;">Experiment Type:</span></td></tr>
- <tr><td> <P>Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID <A HREF="http://www.ncbi.nlm.nih.gov/projects/geo/query/acc.cgi?acc=GPL1261" target="_empty" class="normalsize">GPL1261</A>), of which 201 passed quality control and error checking. This particular data set was processed using the <a href="http://odin.mdacc.tmc.edu/~zhangli/PerfectMatch/" target="_blank" class="normalsize">PDNN</a> protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units.
+ <tr><td> <P>Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID <A HREF="http://www.ncbi.nlm.nih.gov/projects/geo/query/acc.cgi?acc=GPL1261" target="_empty" class="normalsize">GPL1261</A>), of which 201 passed quality control and error checking. This particular data set was processed using the <span href="http://odin.mdacc.tmc.edu/~zhangli/PerfectMatch/" target="_blank" class="broken_link normalsize">PDNN</span> protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units.
<br><br></td></tr>
<tr><td><span style="font-size:115%;font-weight:bold;">Overall Design:</span></td></tr>
- <tr><td> <P>Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID <A HREF="http://www.ncbi.nlm.nih.gov/projects/geo/query/acc.cgi?acc=GPL1261" target="_empty" class="normalsize">GPL1261</A>), of which 201 passed quality control and error checking. This particular data set was processed using the <a href="http://odin.mdacc.tmc.edu/~zhangli/PerfectMatch/" target="_blank" class="normalsize">PDNN</a> protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units.
+ <tr><td> <P>Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID <A HREF="http://www.ncbi.nlm.nih.gov/projects/geo/query/acc.cgi?acc=GPL1261" target="_empty" class="normalsize">GPL1261</A>), of which 201 passed quality control and error checking. This particular data set was processed using the <span href="http://odin.mdacc.tmc.edu/~zhangli/PerfectMatch/" target="_blank" class="broken_link normalsize">PDNN</span> protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units.
<br><br></td></tr>
<tr><td><span style="font-size:115%;font-weight:bold;">Contributor:</span></td></tr>
<tr><td> <UL>
@@ -189,7 +189,7 @@
<LI>Lu Lu, M.D. <!--Tissue acquisition, RNA processing, experimental design-->
<BR>Grant Support: NIH U01AA13499, U24AA13513
-<LI><A HREF="http://www.salk.edu/faculty/faculty/details.php?id=23" target="_empty" class="normalsize">Fred H. Gage, Ph.D.</A> <!--$10,000 contribution -->
+<LI><span HREF="http://www.salk.edu/faculty/faculty/details.php?id=23" target="_empty" class="broken_link normalsize">Fred H. Gage, Ph.D.</span> <!--$10,000 contribution -->
<BR>Grant Support: Lookout Foundation
<LI>Dan Goldowitz, Ph.D. <!--$30,000 contribution -->
@@ -201,7 +201,7 @@
<LI>Shirlean Goodwin, Ph.D. <!--All array processing-->
<BR>Grant Support: NIAAA INIA U01AA013515
-<LI><A HREF="http://www.bccn-berlin.de/ResearchGroups/Kempermann" target="_empty" class="normalsize">Gerd Kempermann, M.D.</A> <!--$30,000 contribution -->
+<LI><span HREF="http://www.bccn-berlin.de/ResearchGroups/Kempermann" class="broken_link normalsize">Gerd Kempermann, M.D.</span> <!--$30,000 contribution -->
<BR>Grant Support: The <A HREF="http://www.volkswagen-stiftung.de/" target="_empty" class="normalsize">Volkswagen Foundation</A> Grant on Permissive and Persistent Factors in Neurogenesis in the Adult Central Nervous System
<BR>Humboldt-Universitat Berlin
<BR>Universitatsklinikum Charite
@@ -241,7 +241,7 @@
</UL><br><br></td></tr>
<tr><td><span style="font-size:115%;font-weight:bold;">Citation:</span></td></tr>
<tr><td>
-<P>Please cite: Overall RW, Kempermann G, Peirce J, Lu L, Goldowitz D, Gage FH, Goodwin S, Smit AB, Airey DC, Rosen GD, Schalkwyk LC, Sutter TR, Nowakowski RS, Whatley S, Williams RW (<a href="http://frontiersin.org/neurogenomics/paper/pending/0/815/" target="_blank" class="normalsize">2009</a>) Genetics of the hippocampal transcriptome in mice: a systematic survey and online neurogenomic resource. Front. Neurogen. 1:3 <A href="http://frontiersin.org/neurogenomics/paper/pending/0/815/" target="_blank" class="smallsize"><I>Full Text HTML</I></A> doi:10.3389/neuro.15.003.2009
+<P>Please cite: Overall RW, Kempermann G, Peirce J, Lu L, Goldowitz D, Gage FH, Goodwin S, Smit AB, Airey DC, Rosen GD, Schalkwyk LC, Sutter TR, Nowakowski RS, Whatley S, Williams RW (<span class="broken_link" href="http://frontiersin.org/neurogenomics/paper/pending/0/815/" target="_blank" class="normalsize">2009</span>) Genetics of the hippocampal transcriptome in mice: a systematic survey and online neurogenomic resource. Front. Neurogen. 1:3 <span href="http://frontiersin.org/neurogenomics/paper/pending/0/815/" target="_blank" class="broken_link smallsize"><I>Full Text HTML</I></A> doi:10.3389/neuro.15.003.2009
<br><br></td></tr>
<tr><td><span style="font-size:115%;font-weight:bold;">Submission Date:</span></td></tr>
diff --git a/wqflask/wqflask/templates/index_page.html b/wqflask/wqflask/templates/index_page.html
index 12c28e72..31846f87 100644
--- a/wqflask/wqflask/templates/index_page.html
+++ b/wqflask/wqflask/templates/index_page.html
@@ -203,14 +203,13 @@
</div>
<h3>Websites affiliated with GeneNetwork</h3>
<ul>
- <li><a href="http://ucscbrowser.genenetwork.org/">Genome
- browser</a> at UTHSC</li>
+ <li><span class="broken_link" href="http://ucscbrowser.genenetwork.org/">Genome Browser</span> at UTHSC</li>
<li><a href="http://galaxy.genenetwork.org/">Galaxy</a> at
UTHSC</li>
- <li>GeneNetwork 1 at <a href="http://ec2.genenetwork.org/">Amazon
- Cloud (EC2)</a></li>
+ <li>GeneNetwork 1 at <span class="broken_link" href="http://ec2.genenetwork.org/">Amazon
+ Cloud (EC2)</span></li>
<li>GeneNetwork 1 Source Code at <a href="http://sourceforge.net/projects/genenetwork/">SourceForge</a></li>
@@ -220,7 +219,7 @@
<ul>
<li><a href="http://gn1.genenetwork.org/">Main GN1 site at UTHSC</a> (main site)</li>
- <li><a href="http://genenetwork.helmholtz-hzi.de/">Germany at the HZI</a></li>
+ <li><span class="broken_link" href="http://genenetwork.helmholtz-hzi.de/">Germany at the HZI</span></li>
<li><a href="http://genenetwork.org/">Memphis at the U of M</a></li>
</ul>
</section>
diff --git a/wqflask/wqflask/templates/index_page_orig.html b/wqflask/wqflask/templates/index_page_orig.html
index 16caa30b..7f82b35c 100755
--- a/wqflask/wqflask/templates/index_page_orig.html
+++ b/wqflask/wqflask/templates/index_page_orig.html
@@ -193,7 +193,7 @@
<h1>Affiliates</h1>
<ul>
<li><b><a href="http://gn1.genenetwork.org">GeneNetwork 1</a> at UTHSC</b></li>
- <li><a href="http://ucscbrowser.genenetwork.org/">Genome Browser</a> at UTHSC</li>
+ <li><span class="broken_link" href="http://ucscbrowser.genenetwork.org/">Genome Browser</span> at UTHSC</li>
<li><a href="https://systems-genetics.org/">Systems Genetics</a> at EPFL</li>
<li><a href="http://bnw.genenetwork.org/">Bayesian Network Web Server</a> at UTHSC</li>
<li><a href="https://www.geneweaver.org/">GeneWeaver</a></li>
@@ -263,7 +263,7 @@
<h3>GeneNetwork v1:</h3>
<ul>
<li><a href="http://gn1.genenetwork.org/">Main website</a> at UTHSC</li>
- <li><a href="http://artemis.uthsc.edu/">Time Machine</a>: Full GN versions from 2009 to 2016 (mm9)</li>
+ <li><span class="broken_link" href="http://artemis.uthsc.edu/">Time Machine</span>: Full GN versions from 2009 to 2016 (mm9)</li>
Cloud (EC2)</a></li>
</ul>
<script type="text/javascript" src="//rf.revolvermaps.com/0/0/8.js?i=526mdlpknyd&amp;m=0&amp;c=ff0000&amp;cr1=ffffff&amp;f=arial&amp;l=33" async="async"></script>
diff --git a/wqflask/wqflask/templates/show_trait_calculate_correlations.html b/wqflask/wqflask/templates/show_trait_calculate_correlations.html
index cba977ac..50803978 100644
--- a/wqflask/wqflask/templates/show_trait_calculate_correlations.html
+++ b/wqflask/wqflask/templates/show_trait_calculate_correlations.html
@@ -135,8 +135,8 @@
The <a href="http://genenetwork.org/correlationAnnotation.html#literatureCorr">Literature Correlation</a>
(Lit r) between
this gene and all other genes is computed<br>
- using the <a href="https://grits.eecs.utk.edu/sgo/sgo.html">
- Semantic Gene Organizer</a>
+ using the <span class="broken_link" href="https://grits.eecs.utk.edu/sgo/sgo.html">
+ Semantic Gene Organizer</span>
and human, rat, and mouse data from PubMed.
Values are ranked by Lit r, but Sample r and Tissue r are also displayed.<br>
<a href="http://genenetwork.org/glossary.html#Literature">More on using Lit r</a>
diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html
index b61a93ba..c3575454 100755
--- a/wqflask/wqflask/templates/show_trait_mapping_tools.html
+++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html
@@ -346,7 +346,7 @@
<dd>Maps traits with correction for kinship among samples using a linear mixed model method, and also allows users to fit multiple covariates such as sex, age, treatment, and genetic markers (<a href="https://www.ncbi.nlm.nih.gov/pubmed/24531419">PMID: 2453419</a>, and <a href="https://github.com/genetics-statistics/GEMMA"> GitHub code</a>). GEMMA incorporates the Leave One Chromosome Out (LOCO) method to ensure that the correction for kinship does not remove useful genetic variance near each marker. Markers can be filtered to include only those with minor allele frequencies (MAF) above a threshold. The default MAF is 0.05.</dd>
{% elif mapping_method == "R/qtl" %}
<dt class="map-method-text">R/qtl (version 1.44.9</dt>
- <dd>The original R/qtl mapping package that supports classic experimental crosses including 4-parent F2 intercrosses (e.g., NIA ITP UM-HET3). R/qtl is ideal for populations that do not have complex kinship or admixture (<a href="https://www.ncbi.nlm.nih.gov/pubmed/12724300">PMID: 12724300</a>). Both R/qtl as implemented here, and R/qtl2 (<a href="https://www.ncbi.nlm.nih.gov/pubmed/30591514">PMID: 30591514</a>) are available as <a href="https://kbroman.org/pages/software.html">R suites</a>.</dd>
+ <dd>The original R/qtl mapping package that supports classic experimental crosses including 4-parent F2 intercrosses (e.g., NIA ITP UM-HET3). R/qtl is ideal for populations that do not have complex kinship or admixture (<a href="https://www.ncbi.nlm.nih.gov/pubmed/12724300">PMID: 12724300</a>). Both R/qtl as implemented here, and R/qtl2 (<a href="https://www.ncbi.nlm.nih.gov/pubmed/30591514">PMID: 30591514</a>) are available as <span class="broken-link" href="https://kbroman.org/pages/software.html">R suites</span>.</dd>
{% elif mapping_method == "QTLReaper" %}
<dt class="map-method-text">Haley-Knott Regression</dt>
<dd>Fast linear mapping method (<a href="https://www.ncbi.nlm.nih.gov/pubmed/16718932">PMID 16718932</a>) works well with F2 intercrosses and backcrosses, but that is not recommended for complex or admixed populations (e.g., GWAS or heterogeneous stock studies) or for advanced intercrosses, recombinant inbred families, or diallel crosses. Interactive plots in GeneNetwork have relied on the fast HK mapping for two decades and we still use this method for mapping omics data sets and computing genome-wide permutation threshold (<a href="https://github.com/pjotrp/QTLReaper">QTL Reaper code</a>).</dd>