CINXE.COM

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-8D61GHC97X"></script> <script> var c = document.cookie.split('; ').filter(c => c.startsWith('mgi_user_consent='))[0] if (!c || c === "mgi_user_consent=analytics") { window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-8D61GHC97X'); console.log("GA4 ok") } else { console.log("GA4 blocked") } </script> <!-- Combo-handled YUI JS files: --> <script type="text/javascript" src="https://www.informatics.jax.org/webshare/js/yui-2.8.custom.min.js"></script> <!-- jQuery --> <script type="text/javascript" src="https://www.informatics.jax.org/webshare/js/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="https://www.informatics.jax.org/webshare/js/jquery-ui-1.11.4.js"></script> <!-- CSS --> <!-- YUI Reset --> <link rel="stylesheet" type="text/css" href="https://www.informatics.jax.org/webshare/css/yui-reset.css"> <!-- Combo-handled YUI CSS files: --> <link rel="stylesheet" type="text/css" href="https://www.informatics.jax.org/webshare/css/yui-2.8-combo.css"> <!-- MGI CSS files: --> <link href="https://www.informatics.jax.org/webshare/css/mgi_template01.css" rel="stylesheet" type="text/css"/> <!--===================== End Template Head ===========================--> <link rel="canonical" href="https://www.informatics.jax.org/vocab/gxd/anatomy/EMAPA:16039" /> <meta name="robots" content="NOODP" /> <meta name="robots" content="NOYDIR" /> <script type="text/javascript"> var fewiurl = "https://www.informatics.jax.org/"; </script> <SCRIPT TYPE="text/javascript" SRC='https://www.informatics.jax.org/webshare/js/hideshow.js'></SCRIPT> <script type="text/javascript" src='https://www.informatics.jax.org/assets/js/anatomy_detail.js'></script> <script language="Javascript"> </script> <style> td.bordered { border: 1px solid black } #termPaneDetails th { padding: 4px; } td.top { vertical-align: top } td.padded { padding: 4px } td.padTop { padding-top: 2px } .highlight { background-color: #EBCA6D } .bold { font-weight: bold } .ygtvlabel { background-color: white; color: black; } .ygtvlabel:link { background-color: white; color: black; } .ygtvlabel:visited { background-color: white; color: black; } .ygtvlabel:hover { background-color: white; color: blue; text-decoration: underline; } .ygtvfocus { background-color: white } .ygtv-highlight { background-color: white } .ygtv-highlight0 { background-color: white } .ygtv-highlight1 { background-color: white } .ygtv-highlight2 { background-color: white } .ui-autocomplete { max-height: 250px; overflow-y: auto; /* prevent horizontal scrollbar */ overflow-x: hidden; border: 1px solid gray; max-width: 400px; } .ui-menu { list-style-type: none; color: black; background-color: white; } .ui-menu .ui-menu-item a { padding: 0px; line-height: 1; color: black; list-style-type: none; } ul.ui-autocomplete { padding: 0px; list-style-type: none; color: black; } .ui-autocomplete li { list-style-type: none; list-style-position: inherit; margin-left: 5px; padding-bottom: 3px; } .ui-autocomplete li :hover { background-color: #426FD9; color: #FFFFFF; } </style> <!--===================== Body Start ===========================--> </head> <body id="body" class="yui-skin-sam"> <div id="headerContainer"> <div id="topBannerContainer"> <!--mini home tabs start--> <div id="tabs" class="navtabs"> <span id="navRight"> <ul> <li id="minitab_Home"> <a href="https://www.informatics.jax.org/" onmouseover="return overlib('MGI Home Page',ANCHOR, 'tab_home', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_home">Home</span></a> </li> <li id="genes.shtml"> <a href="https://www.informatics.jax.org/genes.shtml" onmouseover="return overlib('Genes, Genome Features &amp; Maps',ANCHOR, 'tab_gene', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_gene">Genes</span></a> </li> <li id="phenotypes.shtml"> <a href="https://www.informatics.jax.org/phenotypes.shtml" onmouseover="return overlib('Phenotypes, Alleles &amp; Disease Models',ANCHOR, 'tab_pheno', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_pheno">Phenotypes</span></a> </li> <li id="humanDisease.shtml"> <a href="https://www.informatics.jax.org/diseasePortal" onmouseover="return overlib('Human-Mouse: Disease Connection',ANCHOR, 'tab_humanDisease', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_humanDisease">Human Disease</span></a> </li> <li id="expression.shtml"> <a href="https://www.informatics.jax.org/expression.shtml" onmouseover="return overlib('Gene Expression Database \(GXD\)',ANCHOR, 'tab_exp', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_exp">Expression</span></a> </li> <li id="home_recombinase"> <a href="https://www.informatics.jax.org/home/recombinase" onmouseover="return overlib('Recombinase Tissue Specificity',ANCHOR, 'tab_cre', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_cre">Recombinases</span></a> </li> <li id="function.shtml"> <a href="https://www.informatics.jax.org/function.shtml" onmouseover="return overlib('Functional Annotations \(GO\)',ANCHOR, 'tab_func', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_func">Function</span></a> </li> <li id="home_strains_SNPs"> <a href="https://www.informatics.jax.org/home/strain" onmouseover="return overlib('Strains, SNPs &amp; Polymorphisms',ANCHOR, 'tab_snps', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_snps">Strains&nbsp;/&nbsp;SNPs</span></a> </li> <li id="homology.shtml"> <a href="https://www.informatics.jax.org/homology.shtml" onmouseover="return overlib('Vertebrate Homology',ANCHOR, 'tab_homo', ANCHORALIGN, 'UL', 'LL', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_homo">Homology</span></a> </li> <li id="minitab_Tumor"> <a href="http://tumor.informatics.jax.org/mtbwi/index.do" onmouseover="return overlib('Mouse Tumor Biology',ANCHOR, 'tab_tumors', ANCHORALIGN, 'UR', 'LR', CSSCLASS, TEXTFONTCLASS, 'tabTipFont', BGCLASS, 'tabTipBoxBG', FGCLASS, 'tabTipBoxFG');" onmouseout="nd();"> <span id="tab_tumors">Tumors</span></a> </li> </ul> </span> </div> <!-- mini home tabs end --> <div id="logoContainer" style="position:absolute; left:0; top:0;"> <div> <a href="https://www.informatics.jax.org/" style="background-color: transparent"> <img src="https://www.informatics.jax.org/webshare/images/mgi_logo.gif" border=0> </a> </div> <span class="logoFooterContainer"> &nbsp;&nbsp;<a class="logoFooterAnchor" href="https://www.informatics.jax.org/mgihome/projects/aboutmgi.shtml">About</a> &nbsp;&nbsp;<a class="logoFooterAnchor" href="https://www.informatics.jax.org/mgihome/homepages/help.shtml">Help</a> &nbsp;&nbsp;<a class="logoFooterAnchor" href="https://www.informatics.jax.org/faq/FAQ.shtml">FAQ</a> </span> </div> <div id="agr_logo" style="float: right; padding-top: 3px; padding-right: 5px;"> <a href="https://globalbiodata.org/" target="_blank"><img src="https://www.informatics.jax.org/webshare/images/gcbr_logo.png" style="height:65px;margin-right:10px;margin-left:10px;"></a> <a href="https://www.alliancegenome.org/" target="_blank"><img src="https://www.informatics.jax.org/webshare/images/agr_logo_smallest.png" style="height:70px"></a> </div> <div id="templateSearchTool" style="float:right; top:15px; margin-right: 5px;"> <style> .lightYellow { background-color: #ffd; } .lightGray { background-color: #dadada; } .italic { font-style: italic; } </style> <form action="https://www.informatics.jax.org/quicksearch/summary" method="get"> <table> <tr> <td> <a onClick="return false;" href="https://www.informatics.jax.org/userhelp/searchtool_help.shtml" onMouseOver="if (window.jQuery) { setTimeout(function () { $('td[valign=TOP]').css({'background-color' : '#efefef'}); }, 750); }; return overlib('You can:<ul class=\'searchToolHelp\'><li>Search for genome features by name, symbol, synonym, homolog, allele, or accession ID:</li> <ul><li>p53 protein cell cycle DNA damage</li><li>Notch1</li><li>NM_053172</li><li>AT3</li></ul><li>Search for genome features and vocabulary terms by keywords or accession ID. Use several keywords to find the most relevant results:</li><ul><li>GO:0004713</li><li>resistance to fatty liver development</li><li>vitamin D receptor</li><li>lymphocyte function antigen immunodeficiency</li> </ul><li>Search for genome features by mouse genome location. Use a chromosome, point coordinate, or coordinate range:</li><ul><li>Chr1</li><li>Chr1:194732198</li><li>Chr1:194732198-294732198</li></ul> <li>Use asterisks (*) for wildcards at the end of partial words or genomic symbols:</li><ul><li>Pax*</li><li>embr* development</li><li>hippocamp* pyramid* cell layer</li></ul><li>Use quotation marks (&quot;&nbsp;&quot;) to indicate phrases:</li> <ul><li>&quot;hair follicle&quot; development</li><li>&quot;amyotrophic lateral sclerosis&quot;</li></ul><li>Use angle brackets to indicate superscript:</li><ul><li>Pax6&lt;10Neu&gt; for Pax6<sup>10Neu</sup></li></ul><li>Mix IDs, symbols, and keywords in a list:</li><ul><li>Nmt2, NM_013627, Acbd7, hair follicle development</li></ul></ul>Advanced searches are listed under the Search menu.<BR/>See <a href=\'https://www.informatics.jax.org/userhelp/QUICK_SEARCH_help.shtml\'>Using the Quick Search Tool</a> for more information.', STICKY, CAPTION, 'Quick Search Tips', CENTER, BELOW, WIDTH, 450, DELAY, 600, CLOSECLICK, CLOSETEXT, 'Close X');" onMouseOut="nd();"> <img src="https://www.informatics.jax.org/webshare/images/help_small_transp.gif" border="0"> </a> </td> <td> <select id="queryTypeTop" name="queryType" class="lightGray"> <option value="exactPhrase" selected="">Keywords, Symbols, or IDs (exact phrase)</option> <option value="keywords">Keywords, Symbols, or IDs</option> <option value="mouseLocation">Mouse Location</option> <option value="humanLocation">Human Location</option> </select> </td> <td> <input name="query" id="searchToolTextArea" class="lightYellow italic" value=" Type your search here" onFocus="if(this.defaultValue==this.value) this.value=''; $('#searchToolTextArea').removeClass('italic');" size="30"> </td> <td> <input name="submit" type="submit" class="searchToolButton" value="Quick Search" onclick="return verifySearchToolParms();"> </td> </tr> </table> </form> </div> <div style="position:absolute; top:4px; left:150px;"> <iframe style="border:none" src="/webshare/html/notice.html" width="400" height="40"></iframe> </div> </div> <!-- Menu Bar Start --> <div id="navBarMenu" class="yuimenubar"> <div class="bd"> <ul class="first-of-type"> <!-- Searches Start --> <li class="yuimenubaritem first-of-type"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/allsearch.shtml">Search</a> <div id="navBarSearch" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/allsearch.shtml" title="">All Search Tools</a></li> <!-- Marker Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Genes</a> <div id="navBarGenes" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/marker/" onMouseOver="return overlib('Search for genes and genome features by symbol, name, location, gene ontology classification or phenotype.',ANCHOR, 'navBarGenes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Genes &amp; Markers Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/batch" onMouseOver="return overlib('Input a list of gene IDs or symbols and retrieve other database IDs and gene attributes (e.g. phenotypes, GO).',ANCHOR, 'navBarGenes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Batch Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="http://jbrowse.informatics.jax.org/?data=data/GRCm39" onMouseOver="return overlib('Create a graphical display of genome features from regions of the mouse genome.',ANCHOR, 'navBarGenes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> JBrowse Genome Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgv/" onMouseOver="return overlib('Compare genome features of de novo sequenced mouse strains.',ANCHOR, 'navBarGenes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Multiple Genome Viewer (MGV)</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/genes.shtml">More</a></li> </ul> </div> </div> </li> <!-- Pheno Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Phenotypes</a> <div id="navBarPhenotypes" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/allele/" onMouseOver="return overlib('Search for mutations or QTL based on phenotype, human disease, mutation type, gene, or genome location.',ANCHOR, 'navBarPhenotypes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Phenotypes, Alleles &amp; Diseases Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/mp_ontology" onMouseOver="return overlib('Search for a phenotype term to find relevant mutant genotypes.',ANCHOR, 'navBarPhenotypes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Mammalian Phenotype (MP) Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/disease" onMouseOver="return overlib('Browse for a human disease or condition term to find mouse models.',ANCHOR, 'navBarPhenotypes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Human Disease (DO) Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/hp_ontology" onMouseOver="return overlib('Search for a human phenotype ontology term to find relevant human diseases.',ANCHOR, 'navBarPhenotypes', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Human Phenotype (HPO) Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/phenotypes.shtml">More</a></li> </ul> </div> </div> </li> <!-- Human Mouse Disease Connection --> <li class="yuimenuitem"><a id="navBarHMDC" class="yuimenuitemlabel" href="https://www.informatics.jax.org/diseasePortal" onMouseOver="return overlib('Human-Mouse: Disease Connection', ANCHOR, 'navBarHMDC', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> Human Disease</a> </li> <!-- Expression Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Expression</a> <div id="navBarExpression" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/gxd/" onMouseOver="return overlib('Search for detailed gene expression assay results.',ANCHOR, 'navBarExpression', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Gene Expression Data Search</a></li> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/gxdlit" onMouseOver="return overlib('Search for references on gene expression during development.',ANCHOR, 'navBarExpression', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Gene Expression Literature Search</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/gxd/anatomy/EMAPA:16039" onMouseOver="return overlib('Search or browse for anatomical structures; includes links to associated expression results.',ANCHOR, 'navBarExpression', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Mouse Developmental Anatomy Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/gxd/htexp_index" onMouseOver="return overlib('Search for experiments using sample metadata annotations.',ANCHOR, 'navBarExpression', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> RNA-Seq and Microarray Experiment Search</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/expression.shtml">More</a></li> </ul> </div> </div> </li> <!-- Recombinase --> <li class="yuimenuitem"><a id="navBarCre" class="yuimenuitemlabel" href="https://www.informatics.jax.org/home/recombinase" onMouseOver="return overlib('Get recombinase (cre) activity data for knock-in and transgene alleles.',ANCHOR, 'navBarCre', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> Recombinase (cre)</a></li> <!-- GO Functional Annotations Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Function</a> <div id="navBarFunction" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/gene_ontology" onMouseOver="return overlib('Browse the Gene Ontology and mouse annotations in MGI.',ANCHOR, 'navBarFunction', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> GO Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/marker/" onMouseOver="return overlib('Search for genes and genome features by symbol, name, location, gene ontology classification or phenotype.',ANCHOR, 'navBarFunction', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Genes &amp; Markers Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/batch" onMouseOver="return overlib('Obtain sets of MGI IDs for use in GO tools.',ANCHOR, 'navBarFunction', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Batch Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/function.shtml">More</a></li> </ul> </div> </div> </li> <!-- Strains Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Strains / SNPs</a> <div id="navBarStrains" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/home/strain" onMouseOver="return overlib('Search for strains by name, synonyms, or attributes.',ANCHOR, 'navBarStrains', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();">Strain Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/snp" onMouseOver="return overlib('Search for SNPs by strain(s), SNP attributes, genomic position, or associated genes.',ANCHOR, 'navBarStrains', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> SNP Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgv/" onMouseOver="return overlib('Compare genome features of de novo sequenced mouse strains.',ANCHOR, 'navBarStrains', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Multiple Genome Viewer (MGV)</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/home/strain">More</a></li> </ul> </div> </div> </li> <!-- Homology Submenu --> <li class="yuimenuitem"><a id="navBarHomology" class="yuimenuitemlabel" href="https://www.informatics.jax.org/homology.shtml" onMouseOver="return overlib('Find out more about Homology relationships in MGI.',ANCHOR, 'navBarHomology', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> Homology</a></li> <!-- MTB --> <li class="yuimenuitem"><a id="navBarMTB" class="yuimenuitemlabel" href="https://tumor.informatics.jax.org/mtbwi/index.do" onMouseOver="return overlib('MTB provides information on the frequency, pathology, and genetics of spontaneous and induced tumors in mice.',ANCHOR, 'navBarMTB', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> Tumors</a></li> <!-- Sequence Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Sequence Searches</a> <div id="navBarSequences" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://blast.ncbi.nlm.nih.gov/Blast.cgi" onMouseOver="return overlib('Search for sequence similarity using BLAST at NCBI.',ANCHOR, 'navBarSequences', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> BLAST at NCBI</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="http://jbrowse.informatics.jax.org/?data=data/GRCm39" onMouseOver="return overlib('Create a graphical display of genome features from regions of the mouse genome.',ANCHOR, 'navBarSequences', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> JBrowse Genome Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/batch" onMouseOver="return overlib('Input a list of gene IDs or symbols and retrieve other database IDs and gene attributes (e.g. phenotypes, GO).',ANCHOR, 'navBarSequences', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Batch Query</a></li> </ul> </div> </div> </li> <!-- References Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">References</a> <div id="navBarReferences" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/reference" onMouseOver="return overlib('Search for references (with abstracts) by title, author, journal, year, or abstract.',ANCHOR, 'navBarReferences', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Reference Query</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/gxdlit" onMouseOver="return overlib('Search for references on gene expression during development.',ANCHOR, 'navBarReferences', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Gene Expression Literature Query</a></li> </ul> </div> </div> </li> <!-- Vocabularies Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Ontologies</a> <div id="navBarVocabularies" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/gene_ontology" onMouseOver="return overlib('Browse the Gene Ontology and mouse annotations in MGI.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> GO Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/disease" onMouseOver="return overlib('Browse for a human disease or condition term to find mouse models.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Human Disease (DO) Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/mp_ontology" onMouseOver="return overlib('Search for a phenotype term to find relevant mutant genotypes.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Mammalian Phenotype (MP) Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/gxd/anatomy/EMAPA:16039" onMouseOver="return overlib('Search or browse for anatomical structures; includes links to associated expression results.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Mouse Developmental Anatomy Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/gxd/ma_ontology" onMouseOver="return overlib('An extensive ontology of anatomical structures for the postnatal mouse.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Adult Mouse Anatomy Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/vocab/hp_ontology" onMouseOver="return overlib('Search for a human phenotype ontology term to find relevant human diseases.',ANCHOR, 'navBarVocabularies', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Human Phenotype (HPO) Browser</a></li> </ul> </div> </div> </li> <!-- Non-Drop-Downs --> <li class="yuimenuitem"><a id="navBarBatch" class="yuimenuitemlabel" href="https://www.informatics.jax.org/batch" onMouseOver="return overlib('Input a list of gene IDs or symbols and retrieve other database IDs and gene attributes (e.g. phenotypes, GO).',ANCHOR, 'navBarBatch', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> Batch Query</a></li> <li class="yuimenuitem"><a id="navBarMine" class="yuimenuitemlabel" href="https://www.mousemine.org" onMouseOver="return overlib('Access MGI data via InterMine.',ANCHOR, 'navBarMine', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> MouseMine</a></li> <!-- Vocabularies Submenu --> <li class="yuimenuitem"><a class="yuimenuitemlabel">Mouse Genome Browsers</a> <div id="navBarGenomeBrowsers" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem"><a id="navBarJBrowse" class="yuimenuitemlabel" href="http://jbrowse.informatics.jax.org/?data=data/GRCm39" onMouseOver="return overlib('Create a graphical display of genome features from regions of the mouse genome.',ANCHOR, 'navBarJBrowse', ANCHORALIGN, 1.0,0.5,0,0.5);" onMouseOut="nd();"> JBrowse Genome Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgv/" onMouseOver="return overlib('Compare genome features of de novo sequenced mouse strains.',ANCHOR, 'navBarJBrowse', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();"> Multiple Genome Viewer (MGV)</a></li> </ul> </div> </div> </li> </ul> </div> </div> </li> <!-- Searches Dropmenu End --> <!-- Download Dropmenu Start --> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html">Download</a> <div id="navBarDownload" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html">All MGI Reports</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/batch">Batch Query</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#marker">Genes &amp; Markers</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#seq">Sequence Data</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#homology">Vertebrate Homology</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#go">Gene Ontology Data</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#strain">Strains &amp; Polymorphisms</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#expression">Gene Expression</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#pheno">Phenotypic Data</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#cre">Recombinase (cre)</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#nomen">Nomenclature</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#refs">References</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#clonecoll">Clone Collections</a> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html#dnamap">DNA Mapping Panels</a> </li> </ul> </div> </div> </li> <!-- Download Dropmenu End --> <!-- Resources Dropmenu Start --> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/resources.shtml">More Resources</a> <div id="navBarResources" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/resources.shtml">More Resources Index</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/lists/lists.shtml">Research Community E-mail Lists</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/resources.shtml#res_books">Online Books</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/nomen/index.shtml">Nomenclature Home Page</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/glossary">MGI Glossary</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://phenome.jax.org">Mouse Phenome Database (MPD)</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="http://www.informatics.jax.org/knockout_mice/">Deltagen and Lexicon Knockout Mice</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.mousephenotype.org/" id="navBarKomp" onMouseOver="return overlib('Producing and phenotyping knockout mice from the IKMC mutant ES cell line resource.',ANCHOR, 'navBarKomp', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();">International Mouse Phenotyping Consortium (IMPC)</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.jax.org/mgi-coronavirus-info">Mouse Resources For COVID-19 Research</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/datasets/index.html">Contributed Data Sets</a></li> <li class="yuimenuitem"> <a class="yuimenuitemlabel">Community Links</a> <div id="navBarLinks" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/other/mouse_facts4.shtml">Mouse Resources & Model Organism Links</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/other/phenoallele_commun_resource.shtml">Phenotypes &amp; Mutants Community Resources</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.oxfordjournals.org/nar/database/a/" id="navBarNAR" onMouseOver="return overlib('An index of over 1500 biological databases compiled by the journal of Nucleic Acids Research. Includes links for other model organisms and species, diseases, DNA, RNA, and protein resources.',ANCHOR, 'navBarNAR', ANCHORALIGN, 'UR', 'UL');" onMouseOut="nd();">Nucleic Acids Research (Journal) Database Summary</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/other/mouse_facts1.shtml">Mouse Facts</a></li> </ul> </div> </div> </li> <li class="yuimenuitem"> <a class="yuimenuitemlabel" href="#">Software Developer Tools</a> <div id="navBarSoftware" class="yuimenu"> <div class="bd"> <ul class="first-of-type"> <li class="yuimenuitem first-of-type"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/mgihome/other/link_instructions.shtml">Creating Web Links to MGI</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.mousemine.org">MouseMine</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/software.shtml#sql">Direct SQL Account</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/schema_pg/">Database Schema Browser</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/downloads/reports/index.html">All MGI Reports</a></li> <li class="yuimenuitem"><a class="yuimenuitemlabel" href="https://www.informatics.jax.org/software.shtml">More</a></li> </ul> </div> </div> </li> </ul> </div> </div> </li> <!-- Resources Dropmenu End --> <!-- Direct Links --> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/submit.shtml">Submit Data</a></li> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.findmice.org/index.jsp" title="International Mouse Strain Resource (IMSR)">Find Mice (IMSR)</a></li> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/tools.shtml" title="Analysis Tools"><img src="https://www.informatics.jax.org/webshare/images/tools.gif" alt="Analysis Tools"> Analysis Tools</a></li> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/mgihome/support/mgi_inbox.shtml" title="Contact user support">Contact&nbsp;Us</a></li> <li class="yuimenubaritem"><a class="yuimenubaritemlabel" href="https://www.informatics.jax.org/mgihome/homepages/browser_compatibility.shtml" title="Browser compatibility">Browsers</a></li> </ul> </div> </div> <!-- Menu Bar End --> </div> <div id="templateBodyInsert"> <!-- wrapper around inserted page body --> <!-- header bar --> <div id="titleBarWrapperGxd" userdoc="VOCAB_mad_browser_help.shtml"> <a href="https://www.informatics.jax.org/expression.shtml"><img class="gxdLogo" src="https://www.informatics.jax.org/webshare/images/gxd_logo.png" height="75"></a> <span class="titleBarMainTitleGxd" style="display:inline-block; margin-top: 20px">Mouse Developmental Anatomy Browser</span> </div> <!-- 3-section table: search, term detail, tree view --> <div id="outerGxd" style="padding: 2px"> <table style="width: 100%; background-color: white; border:0"> <tr><td rowspan="2" class="bordered top padTop" style="width: 30%"> <div style='width: 100%;' id='searchContainer'> <div style='width: 100%; text-align: center; font-size:125%; font-weight: bold; clear:both; padding-bottom: 8px;' id='searchTitle'>Anatomy Search</div> <div id="searchPane" style="width:100%; overflow:auto; text-align:center;"> </div> </div> </td> <td class="bordered top padTop"> <div style='width: 100%' id='detailContainer'> <div style='width: 100%; text-align: center; font-size:125%; font-weight: bold' id='detailTitle'>Anatomical Term Detail<br></div> <div id="detail" style="width:100%; overflow: auto"> </div> </div> </td> </tr> <tr><td class="bordered top padTop"> <div style='width:100%' id='treeViewContainer'> <div style='width: 100%; text-align: center; font-size:125%; font-weight: bold' id="treeMainTitle">Anatomical Tree View</div> <div style="width: 100%; text-align: center" id='treeTitle'> All Theiler Stages </div> <div id="treeViewDiv" style="overflow:auto"></div> </div> </td></tr> </table> </div> <script type="text/javascript"> var crossRef = ""; var treeView = null; // global for the YUI tree itself var defaultPath = null; // list of IDs on path from root to selected node var waitForPath = true; // are we waiting for defaultPath to load? var pathCheck = null; // ID of interval-based check for defaultPath var selectedNodeID = null; // ID of the currently highlighted node var alreadyScrolled = false; // have we already scrolled for this term? var gxdResultCount = null; // count of GXD results for selectedNodeID var phenotypeAnnotationCount = null; // count of phenotype annotations for selectedNodeID var logging = false; // enable logging to browser console? function numberWithCommas(x) { var parts = x.toString().split("."); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); return parts.join("."); } function log(msg) { // log a message to the browser console if (logging == true) { console.log(msg); } } function fetchAndCall(url, callbackFn) { // get the contents at 'url' via ajax, then pass the contents to the given // callback function. The callback function should handle a null value // for cases where the fetch fails. var callback = { success : function(oResponse) { var oResults = null; // Try to evaluate it as a JSON string and convert it to // Javascript objects. If that fails, just pass along the // string itself. try { oResults = eval("(" + oResponse.responseText + ")"); } catch (err) { oResults = oResponse.responseText; } oResponse.argument.callbackFn(oResults); }, failure : function(oResponse) { oResponse.argument.callbackFn(null); }, argument: { 'url' : url, 'callbackFn' : callbackFn }, timeout: 10000 }; YAHOO.util.Connect.asyncRequest('GET', url, callback); } function setBrowserTitle(pageTitle) { document.title = pageTitle; } function setDetailDiv(s) { if (s === null) { log("Could not get term details; div cannot be refreshed"); return; } if (s) { var el = document.getElementById('detail'); if (el) { el.innerHTML = s; } var title = document.getElementById('pageTitle'); if (title) { setBrowserTitle(title.value); } resizePanes(); } return; } function fetchDetailDiv(selectedNodeID) { log('fetchDetailDiv(' + selectedNodeID + ')'); var sUrl = "https://www.informatics.jax.org/vocab/gxd/anatomy/termPane/" + selectedNodeID; fetchAndCall(sUrl, setDetailDiv); return; } function setPhenotypeAnnotationCount(s) { phenotypeAnnotationCount = s; highlightSelectedTerm(); return } function fetchPhenotypeAnnotationCount(selectedNodeID) { var sUrl = "https://www.informatics.jax.org/mp/annotations/count_by_anatomy/" + selectedNodeID; fetchAndCall(sUrl, setPhenotypeAnnotationCount); } function setGxdResultCount(s) { gxdResultCount = s; highlightSelectedTerm(); return } function fetchResultCount(selectedNodeID) { var sUrl = "https://www.informatics.jax.org/gxd/results/totalCount?structureID=" + selectedNodeID; fetchAndCall(sUrl, setGxdResultCount); } function setDefaultPath(path) { log('setDefaultPath(' + path + ')'); if (path === null) { log("Could not get default path; tree cannot be created"); return; } if (!defaultPath) { defaultPath = path; waitForPath = false; } fetchRootNode(defaultPath[0]); return; } function fetchDefaultPath(selectedNodeID) { log('fetchDefaultPath(' + selectedNodeID + ')'); var sUrl = "https://www.informatics.jax.org/vocab/gxd/anatomy/defaultPath/" + selectedNodeID; fetchAndCall(sUrl, setDefaultPath); return; } function addRootNode(node) { if (node === null) { log("Could not retrieve root node; tree cannot be created"); return; } // instantiate from the initial data set shipped with the page itself: var node = new YAHOO.widget.TextNode(node, treeView.getRoot()); path = defaultPath.slice(); path.reverse(); path.pop(); node.data.pathToOpen = path; node.expand(); treeView.setDynamicLoad(nodeLoader2); treeView.render(); } function fetchRootNode(rootID) { var sUrl = "https://www.informatics.jax.org/vocab/gxd/anatomy/node/" + rootID; fetchAndCall(sUrl, addRootNode); } function updateTreeTitle(emapID) { var treeTitleDiv = document.getElementById('treeTitle'); var treeTitle; if (treeTitleDiv) { if (emapID.indexOf('EMAPS') == 0) { treeTitle = 'Theiler Stage ' + Math.round( emapID.substring(emapID.length - 2, emapID.length) ); } else { treeTitle = 'All Theiler Stages'; } treeTitleDiv.innerHTML = treeTitle; } } function resetTree(snID, fullRebuild) { // if we've not yet instantiated the treeView, then // instantiate from the initial data set shipped with the page itself: log('resetTree(' + snID + ', ' + fullRebuild + ')'); selectedNodeID = snID; // setSelectedNode(snID); gxdResultCount = null; phenotypeAnnotationCount = null; if ((treeView === null) || (fullRebuild === true)) { log(' - in if'); treeView = new YAHOO.widget.TreeView("treeViewDiv"); loaded = false; defaultPath = null; waitForPath = true; alreadyScrolled = false; fetchDefaultPath(snID); updateTreeTitle(snID); } else { // otherwise, just update the existing tree: // 1. remove highlighting of previously selected term // 2. highlight the newly selected term // 3. add the expression result count and link // 4. expand the selected term to show its children log(' - in else'); $('#treeViewDiv span').removeClass('bold').removeClass('highlight'); highlightSelectedTerm(); } } // format and return a link for phenotype annotations, if the count is > 0 function phenotypeLink() { if ((phenotypeAnnotationCount === null) || (phenotypeAnnotationCount == '-1')) { return '' } var phenoText = 'phenotype annotation'; if (phenotypeAnnotationCount != '1') { phenoText = phenoText + 's'; // no need for link if count is zero if (phenotypeAnnotationCount == '0') { return '0 ' + phenoText; } } var url = 'https://www.informatics.jax.org/mp/annotations/by_anatomy/' + selectedNodeID; return '<a href="' + url + '"><span class="phenotypeAnnotationCount">' + numberWithCommas(phenotypeAnnotationCount) + '</span></a> ' + phenoText; } var lastHighlightedNodes = null; // set of nodes from last highlighting operation var originalTerms = {}; // map of ID -> original term (before highlighting) function highlightSelectedTerm () { // find and highlight all instances of the selected term (the one in the // term detail pane) in the YUI tree view log('highlightSelectedTerm'); // find instances of the selected node var selectedNodes = treeView.getNodesBy(function (node) { if (node.data.accID == selectedNodeID) { return true; } else { return false; } }); var countStr = null; var plural = true; var linked = true; if (gxdResultCount === null) { countStr = "show"; } else { countStr = numberWithCommas(gxdResultCount); if (gxdResultCount == '1') { plural = false; } else if (gxdResultCount == '0') { linked = false; } } var resultText = 'expression result'; if (plural) { resultText = resultText + 's'; } var url = 'https://www.informatics.jax.org/gxd/structure/' + selectedNodeID; // Note that we introduce a bogus '</a>' at the start of link to close off // the YUI-generated link for the cell contents itself. That means there // will probably be an extra '</a>' at the end of the cell itself. var spaces = '&nbsp;&nbsp;&nbsp;&nbsp;'; var phenoLink = phenotypeLink(); if (phenoLink != '') { phenoLink = '; ' + phenoLink; } var link = '</a>' + spaces + '(<a href="' + url + '"><span class="expressionResultCount">' + countStr + '</span></a> ' + resultText + phenoLink + ')'; if (!linked) { link = '</a>' + spaces + '(' + countStr + ' ' + resultText + phenoLink + ')'; } // remove highights from previously selected nodes if (lastHighlightedNodes != null) { var pNode = null; for (var j = 0; j < lastHighlightedNodes.length; j++) { pNode = lastHighlightedNodes[j]; pNode.data.highlighted = false; pNode.label = originalTerms[pNode.data.accID]; } } if (!selectedNodes) { return; } // walk through the nodes and highlight each one that's not already // highlighted var node = null; for (var i = 0; i < selectedNodes.length; i++) { node = selectedNodes[i]; if (!node.data.highlighted) { if (!(node.data.accID in originalTerms)) { originalTerms[node.data.accID] = node.label; } node.data.highlighted = true; node.label = '<span class="highlight bold">' + selectedNodes[i].label + '</span>' + link; node.expand(); } } lastHighlightedNodes = selectedNodes; treeView.render(); } var selectedNode = null; // global - node for selected term function setSelectedNode(node) { // remember the given node as being selected log('setSelectedNode(' + node + ')'); selectedNode = node; } // more globals: var checkNumber = null; // ID of scheduled check so we can cancel it once done var loaded = false; // has the selected node been loaded into tree view? function isLoaded() { // return true if the selected node has been populated dynamically and // has had its node constructed in the YUI tree view if ((selectedNode != null) && (selectedNode.getEl()) ) { loaded = true; clearInterval(checkNumber); // stop checking scrollTreeViewDiv(treeView); // we can scroll the tree now } return loaded; } function scrollOnceLoaded(selectedNode) { // once the selectedNode has been loaded into the YUI tree view, go ahead // and scroll the div down as needed to find it. Keep checking every // 100 ms until the node gets loaded. setSelectedNode(selectedNode); checkNumber = setInterval(isLoaded, 100); return; } function scrollTreeViewDiv (treeView) { // scroll the treeview object to show the selected node log('scrollTreeViewDiv(' + treeView + ') -> alreadyScrolled: ' + alreadyScrolled); if (alreadyScrolled) { return; } var selectedNodes = treeView.getNodesBy(function (node) { if (node.data.accID == selectedNodeID) { if (node.data.openByDefault) { return true; } } return false; }); if (!selectedNodes) { return; } var selectedNode = null; if (selectedNodes.length > 0) { selectedNode = selectedNodes.pop(); } // if the desired node hasn't been loaded yet, then we need to wait for // now and only do the scrolling once it's been loaded if (!loaded) { scrollOnceLoaded(selectedNode); } if (selectedNode) { var el = selectedNode.getEl(); if (el === null) { return; } var rect = selectedNode.getEl().getBoundingClientRect(); var treeViewDiv = document.getElementById('treeViewDiv'); var divRect = treeViewDiv.getBoundingClientRect(); // if even part of the selected term is out of the visible area, move // it up to be centered vertically in treeViewDiv if (rect.bottom > divRect.bottom) { treeViewDiv.scrollTop = rect.top - divRect.top - 0.5 * (divRect.bottom - divRect.top); } alreadyScrolled = true; } } function nodeLoader2(node, fnLoadComplete) { var nodeID = encodeURI(node.data.accID); var sUrl = "https://www.informatics.jax.org/vocab/gxd/anatomyChildren/" + nodeID; var defaultPath = node.data.pathToOpen; var toExpand = null; if (defaultPath) { toExpand = defaultPath.pop(); } log('node = ' + node); log('defaultPath = ' + defaultPath); log('nodeLoader2.toExpand = ' + toExpand); var callback = { success: function(oResponse) { var oResults = eval("(" + oResponse.responseText + ")"); var children = eval(oResults.children); var selectedTerm = null; log('oResults: ' + oResults); log('children.length: ' + children.length); // due to the oddities of asynchronous processing, we sometimes // end up trying to add duplicate nodes (presumably due to // duplicate requests/responses from retries). We only want to // instantiate nodes we don't already have. for (var i = 0; i < children.length; i++) { childID = children[i].accID; var skipIt = false; for (var j = 0; j < node.children.length; j++) { if (node.children[j].data.accID == childID) { skipIt = true; break; } } if (skipIt) { continue; } childNode = new YAHOO.widget.TextNode(children[i], node); log(' - loaded ' + childNode.data.accID); if ((childNode.data.accID == toExpand) || (childNode.data.accID == selectedNodeID)) { log(' - expanding ' + toExpand); childNode.data.pathToOpen = defaultPath; childNode.data.openByDefault = true; scrollTreeViewDiv(treeView); childNode.expand(); } } // end for loop highlightSelectedTerm(); oResponse.argument.fnLoadComplete(); }, failure: function(oResponse) { log("Failed to get children from " + sUrl); YAHOO.log("Failed to get children from " + sUrl, "info", "mgi"); oReponse.argument.fnLoadComplete(); }, argument: { "node" : node, "fnLoadComplete" : fnLoadComplete }, timeout: 10000 // ten seconds }; YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); } function fillSearchPane(contents) { if (contents === null) { log("Could not get search pane; div cannot be refreshed"); return; } if (contents) { var el = document.getElementById('searchPane'); if (el) { el.innerHTML = contents; makeStructureAC("searchTerm", "structureContainer"); var emapaID = contents.match(/EMAPA:[0-9]+/); if (emapaID != null) { resetPanes(emapaID, true); } } } return; } function refreshSearchPane(initialSearch) { // refresh the search pane var searchTerm = initialSearch; if ((searchTerm == null) || (searchTerm == undefined)) { searchTerm = ""; } var searchTermBox = document.getElementById("searchTerm"); if (searchTermBox) { searchTerm = searchTermBox.value; } var sUrl = "https://www.informatics.jax.org/vocab/gxd/anatomySearch?term=" + searchTerm; fetchAndCall (sUrl, fillSearchPane); } function resetSearch() { // reset button for the search form; clear the text and the search results document.getElementById("searchTerm").value = ""; refreshSearchPane(""); } function resetPanes(accID, rebuildTree) { // initialize the term detail and tree view panes to show the term with // the given accID // For some reason, the stageLinker select list remembers whatever option // is selected until the page is reloaded (regardless of whether you pick // a different option the next time). So, we reset the form to erase this // flawed memory. log('resetPanes(' + accID + ', ' + rebuildTree + ')'); var stageLinkerForm = null; stageLinkerForm = document.getElementById("stageLinkerForm"); if (stageLinkerForm) { stageLinkerForm.reset(); } selectedNode = null; selectedNodeID = accID; fetchResultCount(accID); fetchPhenotypeAnnotationCount(accID); fetchDetailDiv(accID); resetTree(accID, rebuildTree); setBrowserTitle(accID); try { window.history.replaceState('foo', 'title', 'https://www.informatics.jax.org/vocab/gxd/anatomy/' + accID); } catch (err) {} alreadyScrolled = false; scrollTreeViewDiv(treeView); } function resizePanes() { log('resizePanes()'); // look up the window's x, y dimensions in a cross-browser way var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], x = w.innerWidth || e.clientWidth || g.clientWidth, y = w.innerHeight|| e.clientHeight|| g.clientHeight; var detailContainer = d.getElementById("detailContainer"); var treeContainer = d.getElementById("treeViewContainer"); var searchContainer = d.getElementById("searchContainer"); var treeMainTitle = d.getElementById("treeMainTitle"); var treeSubTitle = d.getElementById("treeTitle"); var searchTitle = d.getElementById("searchTitle"); var detailTitle = d.getElementById("detailTitle"); var treeViewDiv = d.getElementById("treeViewDiv"); var searchPane = d.getElementById("searchPane"); var detail = d.getElementById("detail"); // left pane is for search and takes 1/3 of the width var leftPaneX = Math.round(x / 3); var rightPaneX = x - leftPaneX; // don't use the whole height, to allow for display of header and partial // footer var usableY = y - 225; // top right pane is for detail, max out at 1/3 of the height. // if detail requires less than 1/3 of height, shrink to what it needs. // bottom right pane is for tree view, takes remainder of height var detailContainerY = Math.round(usableY / 3); detail.style.height = "auto"; if (detail.scrollHeight + detailTitle.scrollHeight < detailContainerY) { detailContainerY = detail.scrollHeight + detailTitle.scrollHeight + 5; } var treeContainerY = usableY - detailContainerY; var treeDivY = treeContainerY - treeMainTitle.scrollHeight - treeSubTitle.scrollHeight; var searchDivY = usableY - searchTitle.scrollHeight; var detailDivY = detailContainerY - detailTitle.scrollHeight; detail.style.height = null; var divRect = detail.getBoundingClientRect(); detailContainer.style.width = (rightPaneX - 7) + 'px'; detailContainer.style.height = detailContainerY + 'px'; searchContainer.style.width = (leftPaneX - 30) + 'px'; searchContainer.style.height = (treeDivY + detailDivY) + 'px'; treeContainer.style.width = (rightPaneX - 7) + 'px'; treeContainer.style.height = treeContainerY + 'px'; treeViewDiv.style.height = treeDivY + 'px'; searchPane.style.height = searchDivY + 'px'; detail.style.height = detailDivY + 'px'; } resizePanes(); YAHOO.namespace("example.container"); YAHOO.util.Event.onDOMReady(function () { resetPanes("EMAPA:16039", true); refreshSearchPane(crossRef); resizePanes(); }); // IE8 does not support this addEventListener call, so just ignore the error try { window.addEventListener ('resize', function(event) { resizePanes(); }); } catch (e) {}; </script> </div> <!-- class="templateBodyInsert" --> <table style="font-size:12" border=0 width="99%"> <tr> <td colspan="3"><HR noshade="noshade"/ color="#d0e0f0" width="100%"> <center style="font-size:10px;"> <span style="float: left;">Contributing Projects:</span> <br> Mouse Genome Database&nbsp;(MGD), Gene Expression Database&nbsp;(GXD), Mouse Models of Human Cancer database (MMHCdb) (formerly Mouse Tumor Biology&nbsp;(MTB)), Gene&nbsp;Ontology&nbsp;(GO) </center> </td> </tr> <tr> <td width="33%" style="font-size:9px;"> <A HREF="https://www.informatics.jax.org/mgihome/other/citation.shtml"> Citing These Resources</A> <BR> <A HREF="https://www.informatics.jax.org/mgihome/other/mgi_funding.shtml"> Funding Information</A> <BR> <A HREF="https://www.informatics.jax.org/mgihome/other/copyright.shtml"> Warranty Disclaimer, Privacy Notice, Licensing, & Copyright</A> <BR> Send questions and comments to <A HREF="https://www.informatics.jax.org/mgihome/support/mgi_inbox.shtml"> User Support</A>. </td> <td WIDTH="34%" ALIGN=center style="font-size:9px;"> last database update<BR> 12/17/2024<BR> MGI 6.24 </td> <td WIDTH="33%" ALIGN=right style="font-size:9px;"> <A HREF="https://www.jax.org/" border=0 style="background-color: transparent"> <IMG SRC="https://www.informatics.jax.org/webshare/images/jax_logo_small.png" BORDER=0 ALT="The Jackson Laboratory"></A> </td> </tr> <tr> <td colspan="3"> <HR noshade="noshade"/ color="#d0e0f0" width="100%"> </td> </tr> </table> <!-- JavaScript --> <script type="text/javascript" src="https://www.informatics.jax.org/webshare/js/mgi_template01.js"></script> <script type="text/javascript" src="https://www.informatics.jax.org/webshare/js/mgi_ga.js"></script> <script> // For some pages (like HMDC Home) that don't have a templateBodyInsert element, we don't want to do this as it // presents an odd error popup. if (document.getElementById('templateBodyInsert') != null) { setTimeout(function() { overlib('Building initial tooltip...',ANCHOR, 'templateBodyInsert', ANCHORALIGN, 'UR', 'UL'); setTimeout(function() { nd(); }, 500); }, 500); } </script> <style><!-- needed for formatting of overlib popups on pages using bootstrap --> .overlibBGClass table tr td table:last-of-type { background-color: #EFEFEF; } </style> <style> .ccb-panel { overflow: hidden; font-family: Helvetica,Calibri,Arial,sans-serif; font-size: 16px; line-height: 1.5em; -webkit-transition: bottom 1s; transition: bottom 1s; position: fixed; bottom: -105px; right: 0; left: 0; z-index: 9999; } .ccb-panel.show { bottom: 0 !important; } .ccb-pannel.prop{ bottom: -80px; } .ccb-tag { margin-left: 5%; background: #002255; border-radius: 5px 5px 0 0; color: #fff; width: 32px; height: 14px; padding-left: 6px; padding-bottom: 2px; } .ccb-tag:hover { cursor: pointer; } .ccb-panel svg[name="uparrow"] { display: block; } .ccb-panel svg[name="downarrow"] { display: none; } .ccb-panel.show svg[name="uparrow"] { display: none; } .ccb-panel.show svg[name="downarrow"] { display: block; position: relative; top: -2px; } .ccb-body{ display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; background: #deeeff; color: #002255; padding: 1em 1.8em; box-shadow: 0 0px 16px rgba(0, 0, 0, .15); } .ccb-panel.show .ccb-body{ box-shadow: 0 0px 16px rgba(0, 0, 0, .15); } .ccb-body > .message{ height: 72px; max-width: 50%; overflow: scroll; } .ccb-panel .checkbox-inline{ position: relative; display: inline-block; padding-right: 20px; margin-bottom: 0; font-weight: 400; vertical-align: middle; cursor: pointer; } .ccb-panel .checkbox-inline:last-child{ padding-right: 0; } .ccb-panel .checkbox-inline.disabled, fieldset[disabled] { cursor: not-allowed; } .ccb-panel .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } .ccb-options { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -ms-flex-line-pack: justify; align-content: space-between } .ccb-button { margin: 0 10px 0 0; -webkit-transition: all 100ms ease-in-out; transition: all 100ms ease-in-out; } .ccb-button:last-child { margin: 0; } .ccb-button:hover { cursor: pointer; } .ccb-button.allow{ background: #002255; color: #fff; padding: 10px 20px; border-radius: 3px; } .ccb-button.allow:hover{ background: green; } @media print { .ccb-panel { display: none } } </style> <div id="ccBanner" class="ccb-panel" > <div class="ccb-tag"> <!-- up arrow --> <svg name="uparrow" mlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#fff"><path d="m256-424-56-56 280-280 280 280-56 56-224-223-224 223Z"/></svg> <!-- down arrow --> <svg name="downarrow" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#fff"><path d="M480-345 240-585l56-56 184 183 184-183 56 56-240 240Z"/></svg> </div> <div class="ccb-body" role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent"> <!--googleoff: all--> <div class="message"> This site uses cookies. Some cookies are essential for site operations and others help us analyze use and utility of our web site. Please refer to our <a class="cc-link" href="/mgihome/other/copyright.shtml" role="button" tabindex="0" rel="noopener noreferrer nofollow" target="_blank">privacy policy</a> for more information. </div> <form> <label class="checkbox-inline"> <input type="checkbox" name="essential" value="essential" checked="" disabled="">Essential</label> <label class="checkbox-inline"> <input id="Analytics" type="checkbox" name="analytics" value="analytics" checked="">Analytics</label> </form> <div class="ccb-options"> <a class="ccb-button deny" aria-label="deny cookies" role="button" tabindex="0">Close</a> <a class="ccb-button allow " aria-label="allow cookies" role="button" tabindex="0">Save preferences</a> </div> <!--googleon: all--> </div> </div> <script> (function () { const cookieName = "mgi_user_consent" const banner = document.getElementById('ccBanner') const tag = banner.querySelector('.ccb-tag') const closeButton = banner.querySelector('.ccb-button.deny') const saveButton = banner.querySelector('.ccb-button.allow') const cbEssential = banner.querySelector('input[name="essential"]') const cbAnalytics = banner.querySelector('input[name="analytics"]') function showBanner () { initCookieBannerCheckboxes() banner.classList.add('show'); } function hideBanner () { banner.classList.remove('show'); } function toggleBanner () { if (banner.classList.contains('show')){ hideBanner() } else { showBanner() } } function parseCookies () { const c = document.cookie const cs = c.split(';').map(x => x.trim()).filter(x=>x).reduce((a,v) => { cc = v.split('=') a[cc[0]] = cc[1] return a }, {}) return cs } function getPrefs() { return parseCookies()[cookieName] } function savePrefs() { const val = cbAnalytics.checked ? cbAnalytics.value : cbEssential.value; const sixMonthsInMs = 183 * 24 * 60 * 60 * 1000 const expires = new Date(Date.now() + sixMonthsInMs) const expiresUtc = expires.toUTCString() const prefsCookie = cookieName + "=" + val + ';expires=' + expiresUtc + ';path=/'; document.cookie = prefsCookie } function initCookieBannerCheckboxes() { cbEssential.checked = true cbAnalytics.checked = (!getPrefs() || getPrefs() === "analytics") } function saveAndClose () { savePrefs() hideBanner() } tag.addEventListener('click', toggleBanner) closeButton.addEventListener('click', hideBanner) saveButton.addEventListener('click', saveAndClose) if (! getPrefs()) { showBanner() } }()); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10