<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="pandoc" /> <title>Nonnegative loadings with non-diagonal V</title> <script src="site_libs/jquery-1.11.3/jquery.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="site_libs/bootstrap-3.3.5/css/cosmo.min.css" rel="stylesheet" /> <script src="site_libs/bootstrap-3.3.5/js/bootstrap.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/respond.min.js"></script> <script src="site_libs/jqueryui-1.11.4/jquery-ui.min.js"></script> <link href="site_libs/tocify-1.9.1/jquery.tocify.css" rel="stylesheet" /> <script src="site_libs/tocify-1.9.1/jquery.tocify.js"></script> <script src="site_libs/navigation-1.1/tabsets.js"></script> <script src="site_libs/navigation-1.1/codefolding.js"></script> <link href="site_libs/highlightjs-9.12.0/textmate.css" rel="stylesheet" /> <script src="site_libs/highlightjs-9.12.0/highlight.js"></script> <link href="site_libs/font-awesome-4.5.0/css/font-awesome.min.css" rel="stylesheet" /> <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> pre:not([class]) { background-color: white; } </style> <script type="text/javascript"> if (window.hljs) { hljs.configure({languages: []}); hljs.initHighlightingOnLoad(); if (document.readyState && document.readyState === "complete") { window.setTimeout(function() { hljs.initHighlighting(); }, 0); } } </script> <style type="text/css"> h1 { font-size: 34px; } h1.title { font-size: 38px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 16px; } h6 { font-size: 12px; } .table th:not([align]) { text-align: left; } </style> </head> <body> <style type = "text/css"> .main-container { max-width: 940px; margin-left: auto; margin-right: auto; } code { color: inherit; background-color: rgba(0, 0, 0, 0.04); } img { max-width:100%; height: auto; } .tabbed-pane { padding-top: 12px; } button.code-folding-btn:focus { outline: none; } </style> <style type="text/css"> /* padding for bootstrap navbar */ body { padding-top: 51px; padding-bottom: 40px; } /* offset scroll position for anchor links (for fixed navbar) */ .section h1 { padding-top: 56px; margin-top: -56px; } .section h2 { padding-top: 56px; margin-top: -56px; } .section h3 { padding-top: 56px; margin-top: -56px; } .section h4 { padding-top: 56px; margin-top: -56px; } .section h5 { padding-top: 56px; margin-top: -56px; } .section h6 { padding-top: 56px; margin-top: -56px; } </style> <script> // manage active state of menu based on current page $(document).ready(function () { // active menu anchor href = window.location.pathname href = href.substr(href.lastIndexOf('/') + 1) if (href === "") href = "index.html"; var menuAnchor = $('a[href="' + href + '"]'); // mark it active menuAnchor.parent().addClass('active'); // if it's got a parent navbar menu mark it active as well menuAnchor.closest('li.dropdown').addClass('active'); }); </script> <div class="container-fluid main-container"> <!-- tabsets --> <script> $(document).ready(function () { window.buildTabsets("TOC"); }); </script> <!-- code folding --> <style type="text/css"> .code-folding-btn { margin-bottom: 4px; } </style> <script> $(document).ready(function () { window.initializeCodeFolding("hide" === "show"); }); </script> <script> $(document).ready(function () { // move toc-ignore selectors from section div to header $('div.section.toc-ignore') .removeClass('toc-ignore') .children('h1,h2,h3,h4,h5').addClass('toc-ignore'); // establish options var options = { selectors: "h1,h2,h3", theme: "bootstrap3", context: '.toc-content', hashGenerator: function (text) { return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_').toLowerCase(); }, ignoreSelector: ".toc-ignore", scrollTo: 0 }; options.showAndHide = true; options.smoothScroll = true; // tocify var toc = $("#TOC").tocify(options).data("toc-tocify"); }); </script> <style type="text/css"> #TOC { margin: 25px 0px 20px 0px; } @media (max-width: 768px) { #TOC { position: relative; width: 100%; } } .toc-content { padding-left: 30px; padding-right: 40px; } div.main-container { max-width: 1200px; } div.tocify { width: 20%; max-width: 260px; max-height: 85%; } @media (min-width: 768px) and (max-width: 991px) { div.tocify { width: 25%; } } @media (max-width: 767px) { div.tocify { width: 100%; max-width: none; } } .tocify ul, .tocify li { line-height: 20px; } .tocify-subheader .tocify-item { font-size: 0.90em; padding-left: 25px; text-indent: 0; } .tocify .list-group-item { border-radius: 0px; } </style> <!-- setup 3col/9col grid for toc_float and main content --> <div class="row-fluid"> <div class="col-xs-12 col-sm-4 col-md-3"> <div id="TOC" class="tocify"> </div> </div> <div class="toc-content col-xs-12 col-sm-8 col-md-9"> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.html">MASHvFLASH</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li> <a href="index.html">Home</a> </li> <li> <a href="about.html">About</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li> <a href="https://github.com/willwerscheid/MASHvFLASH"> <span class="fa fa-github"></span> </a> </li> </ul> </div><!--/.nav-collapse --> </div><!--/.container --> </div><!--/.navbar --> <!-- Add a small amount of space between sections. --> <style type="text/css"> div.section { padding-top: 12px; } </style> <div class="fluid-row" id="header"> <div class="btn-group pull-right"> <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span>Code</span> <span class="caret"></span></button> <ul class="dropdown-menu" style="min-width: 50px;"> <li><a id="rmd-show-all-code" href="#">Show All Code</a></li> <li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li> </ul> </div> <h1 class="title toc-ignore">Nonnegative loadings with non-diagonal V</h1> </div> <p><strong>Last updated:</strong> 2018-09-05</p> <strong>workflowr checks:</strong> <small>(Click a bullet for more information)</small> <ul> <li> <p><details> <summary> <strong style="color:blue;">✔</strong> <strong>R Markdown file:</strong> up-to-date </summary></p> <p>Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.</p> </details> </li> <li> <p><details> <summary> <strong style="color:blue;">✔</strong> <strong>Environment:</strong> empty </summary></p> <p>Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.</p> </details> </li> <li> <p><details> <summary> <strong style="color:blue;">✔</strong> <strong>Seed:</strong> <code>set.seed(20180609)</code> </summary></p> <p>The command <code>set.seed(20180609)</code> was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.</p> </details> </li> <li> <p><details> <summary> <strong style="color:blue;">✔</strong> <strong>Session information:</strong> recorded </summary></p> <p>Great job! Recording the operating system, R version, and package versions is critical for reproducibility.</p> </details> </li> <li> <p><details> <summary> <strong style="color:blue;">✔</strong> <strong>Repository version:</strong> <a href="https://github.com/willwerscheid/MASHvFLASH/tree/d17ac04750b0ac9cb6b5fac83209e31e33b85cc9" target="_blank">d17ac04</a> </summary></p> Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility. The version displayed above was the version of the Git repository at the time these results were generated. <br><br> Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use <code>wflow_publish</code> or <code>wflow_git_commit</code>). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated: <pre><code> Ignored files: Ignored: .DS_Store Ignored: .Rhistory Ignored: .Rproj.user/ Ignored: data/ Ignored: docs/.DS_Store Ignored: docs/images/.DS_Store Ignored: docs/images/.Rapp.history Ignored: output/.DS_Store Ignored: output/.Rapp.history Ignored: output/MASHvFLASHgtex/.DS_Store Ignored: output/MASHvFLASHsims/.DS_Store Ignored: output/MASHvFLASHsims/backfit/.DS_Store Ignored: output/MASHvFLASHsims/backfit/.Rapp.history Untracked files: Untracked: code/MASHvFLASHnn2.R Untracked: code/MASHvFLASHnnrefine.R Untracked: output/MASHvFLASHnn2/ </code></pre> Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes. </details> </li> </ul> <details> <summary> <small><strong>Expand here to see past versions:</strong></small> </summary> <ul> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> File </th> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> <th style="text-align:left;"> Message </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Rmd </td> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/d17ac04750b0ac9cb6b5fac83209e31e33b85cc9/analysis/MASHvFLASHnondiagonalV.Rmd" target="_blank">d17ac04</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-09-05 </td> <td style="text-align:left;"> wflow_publish(“analysis/MASHvFLASHnondiagonalV.Rmd”) </td> </tr> <tr> <td style="text-align:left;"> html </td> <td style="text-align:left;"> <a href="https://cdn.rawgit.com/willwerscheid/MASHvFLASH/603daf19146a4358b6434f546727555bc380e45b/docs/MASHvFLASHnondiagonalV.html" target="_blank">603daf1</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> Build site. </td> </tr> <tr> <td style="text-align:left;"> Rmd </td> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/4ca600bc704d14a77bc010aa2ba2a09040bbe575/analysis/MASHvFLASHnondiagonalV.Rmd" target="_blank">4ca600b</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> wflow_publish(c(“analysis/MASHvFLASHnondiagonalV.Rmd”, </td> </tr> <tr> <td style="text-align:left;"> html </td> <td style="text-align:left;"> <a href="https://cdn.rawgit.com/willwerscheid/MASHvFLASH/fb53e9211f46f0347710e7a0bb7f0d3b6904d22a/docs/MASHvFLASHnondiagonalV.html" target="_blank">fb53e92</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> Build site. </td> </tr> <tr> <td style="text-align:left;"> Rmd </td> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/861ba076ee8c29f2344fb3f6ed7e105dbc1712da/analysis/MASHvFLASHnondiagonalV.Rmd" target="_blank">861ba07</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> wflow_publish(“analysis/MASHvFLASHnondiagonalV.Rmd”) </td> </tr> <tr> <td style="text-align:left;"> html </td> <td style="text-align:left;"> <a href="https://cdn.rawgit.com/willwerscheid/MASHvFLASH/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/MASHvFLASHnondiagonalV.html" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> Build site. </td> </tr> <tr> <td style="text-align:left;"> Rmd </td> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/fad7859708bb7f76abb3d682da170d2b1d063c50/analysis/MASHvFLASHnondiagonalV.Rmd" target="_blank">fad7859</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> <td style="text-align:left;"> wflow_publish(“analysis/MASHvFLASHnondiagonalV.Rmd”) </td> </tr> </tbody> </table> </ul> <p></details></p> <hr /> <div id="introduction" class="section level2"> <h2>Introduction</h2> <p>Here I again fit nonnegative loadings to the “strong” GTEx dataset, but I now use the trick discussed <a href="https://willwerscheid.github.io/FLASHvestigations/arbitraryV.html">here</a> to fit a non-diagonal error covariance matrix <span class="math inline">\(V\)</span>.</p> <p>I pre-run the code <a href="#code">below</a> and load the results from file.</p> </div> <div id="comparison-with-previous-results" class="section level2"> <h2>Comparison with previous results</h2> <p>Whereas my <a href="MASHvFLASHnn.html">earlier analysis</a> (which implicitly assumed that <span class="math inline">\(V = I\)</span>) found 39 data-driven loadings, here I was only able to obtain 26.</p> <div id="similar-loadings" class="section level3"> <h3>Similar loadings</h3> <p>I first plot the new loadings side by side with the previous loadings to which they most closely correspond. Note that, in general, the previous loadings tend to be sparser than these new loadings. Further, this new approach finds two unique effects (caudate basal ganglia and nucleus accumbens basal ganglia) where the previous approach very plausibly found correlations among three types of basal ganglia (loading 25). However, the adipose tissue effects (loading 11) do not get tangled up with the tibial nerve tissue effect (as they did in the previous approach), and there is a single loading describing correlations among skin tissues (loading 3) rather than two largely overlapping loadings.</p> <pre class="r"><code>nondiag <- readRDS("./output/MASHvFLASHnondiagonalV/2dRepeat3.rds") diag <- readRDS("./output/MASHvFLASHnn/fl.rds") nondiag_order <- c(44:46, 46:54, 54:nondiag$nfactors) diag_order <- c(1, 3, 6, 31, 10, 4, 9, 7, 15, 5, 13, 8, 23, 20, 21, 12, 14, 16, 17, 18, 19, 2, 24, 25, 34, 32, 25, 28) diag_not_nondiag <- setdiff(c(1:29, 32:40), diag_order) tissue_names <- rownames(diag$EL) missing.tissues <- c(7, 8, 19, 20, 24, 25, 31, 34, 37) gtex.colors <- read.table("https://github.com/stephenslab/gtexresults/blob/master/data/GTExColors.txt?raw=TRUE", sep = '\t', comment.char = '')[-missing.tissues, 2] gtex.colors <- as.character(gtex.colors) par(mfrow=c(2,2)) display_names <- strtrim(tissue_names, 20) for(i in 1:length(nondiag_order)) { plot_names <- display_names next_nondiag <- nondiag$fit$EL[, nondiag_order[i]] plot_names[next_nondiag < 0.25 * max(next_nondiag)] <- "" barplot(next_nondiag, main=paste0('Nondiagonal V, loading ', nondiag_order[i] - 43), las=2, cex.names=0.4, yaxt='n', col=gtex.colors, names=plot_names) barplot(diag$EL[, diag_order[i]], main=paste0('Diagonal V, loading ', diag_order[i]), las=2, cex.names=0.4, yaxt='n', col=gtex.colors, names=plot_names) }</code></pre> <p><img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-1.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-1.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-1.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-2.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-2.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-2.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-3.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-3.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-3.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-4.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-4.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-4.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-5.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-5.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-5.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-6.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-6.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-6.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-7.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-7.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-7.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-8.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-8.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-8.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-9.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-9.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-9.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-10.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-10.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-10.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-11.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-11.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-11.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-12.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-12.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-12.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-13.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-13.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-13.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/shared-14.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of shared-14.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/shared-14.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details></p> </div> <div id="differences" class="section level3"> <h3>Differences</h3> <p>Next, I plot previous loadings that do not correspond to any of the new loadings. One of these (loading 11) may indeed be an artefactual loading that corresponds to covariance in errors rather than biological reality. However, one of the others (loading 22) describes a plausible correlation among ovarian, uterine, and vaginal tissues. The remaining are unique effects.</p> <pre class="r"><code>par(mfrow=c(2,2)) for (i in 1:length(diag_not_nondiag)) { plot_names <- display_names next_diag <- diag$EL[, diag_not_nondiag[i]] plot_names[next_diag < 0.25 * max(next_diag)] <- "" barplot(next_diag, main=paste0('Diagonal, loading ', diag_not_nondiag[i]), las=2, cex.names=0.4, yaxt='n', col=gtex.colors, names=plot_names) }</code></pre> <p><img src="figure/MASHvFLASHnondiagonalV.Rmd/extra-1.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of extra-1.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/extra-1.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/extra-2.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of extra-2.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/extra-2.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details> <img src="figure/MASHvFLASHnondiagonalV.Rmd/extra-3.png" width="672" style="display: block; margin: auto;" /></p> <details> <summary><em>Expand here to see past versions of extra-3.png:</em></summary> <table style="border-collapse:separate; border-spacing:5px;"> <thead> <tr> <th style="text-align:left;"> Version </th> <th style="text-align:left;"> Author </th> <th style="text-align:left;"> Date </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <a href="https://github.com/willwerscheid/MASHvFLASH/blob/273efe5f8f42f540d1ef3d048fbaf2b6312c25e4/docs/figure/MASHvFLASHnondiagonalV.Rmd/extra-3.png" target="_blank">273efe5</a> </td> <td style="text-align:left;"> Jason Willwerscheid </td> <td style="text-align:left;"> 2018-08-30 </td> </tr> </tbody> </table> <p></details></p> </div> </div> <div id="code" class="section level2"> <h2>Code</h2> <p>Click “Code” to view the code used to obtain the above results.</p> <pre class="r"><code>devtools::load_all("/Users/willwerscheid/GitHub/flashr/") devtools::load_all("/Users/willwerscheid/GitHub/ebnm/") library(mashr) gtex <- readRDS(gzcon(url("https://github.com/stephenslab/gtexresults/blob/master/data/MatrixEQTLSumStats.Portable.Z.rds?raw=TRUE"))) strong <- gtex$strong.z random <- gtex$random.z # Step 1. Estimate correlation structure using MASH. m_random <- mash_set_data(random, Shat = 1) Vhat <- estimate_null_correlation(m_random) # Step 2. Estimate data-driven loadings using FLASH. # Step 2a. Fit Vhat. n <- nrow(Vhat) lambda.min <- min(eigen(Vhat, symmetric=TRUE, only.values=TRUE)$values) data <- flash_set_data(Y, S = sqrt(lambda.min)) W.eigen <- eigen(Vhat - diag(rep(lambda.min, n)), symmetric=TRUE) # The rank of W is at most n - 1, so we can drop the last eigenval/vec: W.eigen$values <- W.eigen$values[-n] W.eigen$vectors <- W.eigen$vectors[, -n, drop=FALSE] fl <- flash_add_fixed_loadings(data, LL=W.eigen$vectors, init_fn="udv_svd", backfit=FALSE) ebnm_param_f <- lapply(as.list(W.eigen$values), function(eigenval) { list(g = list(a=1/eigenval, pi0=0), fixg = TRUE) }) ebnm_param_l <- lapply(vector("list", n - 1), function(k) {list()}) fl <- flash_backfit(data, fl, var_type="zero", ebnm_fn="ebnm_pn", ebnm_param=(list(f = ebnm_param_f, l = ebnm_param_l)), nullcheck=FALSE) # Step 2b. Add nonnegative factors. ebnm_fn = list(f = "ebnm_pn", l = "ebnm_ash") ebnm_param = list(f = list(warmstart = TRUE), l = list(mixcompdist="+uniform")) fl <- flash_add_greedy(data, Kmax=50, f_init=fl, var_type="zero", init_fn="udv_svd", ebnm_fn=ebnm_fn, ebnm_param=ebnm_param) saveRDS(fl, "./output/MASHvFLASHVhat/2bGreedy.rds") # Step 2c (optional). Backfit factors from step 2b. fl <- flash_backfit(data, fl, kset=n:fl$nfactors, var_type="zero", ebnm_fn=ebnm_fn, ebnm_param=ebnm_param, nullcheck=FALSE) saveRDS(fl, "./output/MASHvFLASHVhat/2cBackfit.rds") # Step 2d (optional). Repeat steps 2b and 2c as desired. fl <- flash_add_greedy(data, Kmax=50, f_init=fl, var_type="zero", init_fn="udv_svd", ebnm_fn=ebnm_fn, ebnm_param=ebnm_param) fl <- flash_backfit(data, fl, kset=n:fl$nfactors, var_type="zero", ebnm_fn=ebnm_fn, ebnm_param=ebnm_param, nullcheck=FALSE) saveRDS(fl, "./output/MASHvFLASHVhat/2dRepeat3.rds")</code></pre> </div> <div id="session-information" class="section level2"> <h2>Session information</h2> <pre class="r"><code>sessionInfo()</code></pre> <pre><code>R version 3.4.3 (2017-11-30) Platform: x86_64-apple-darwin15.6.0 (64-bit) Running under: macOS High Sierra 10.13.6 Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] workflowr_1.0.1 Rcpp_0.12.17 digest_0.6.15 [4] rprojroot_1.3-2 R.methodsS3_1.7.1 backports_1.1.2 [7] git2r_0.21.0 magrittr_1.5 evaluate_0.10.1 [10] stringi_1.1.6 whisker_0.3-2 R.oo_1.21.0 [13] R.utils_2.6.0 rmarkdown_1.8 tools_3.4.3 [16] stringr_1.3.0 yaml_2.1.17 compiler_3.4.3 [19] htmltools_0.3.6 knitr_1.20 </code></pre> </div> <!-- Adjust MathJax settings so that all math formulae are shown using TeX fonts only; see http://docs.mathjax.org/en/latest/configuration.html. This will make the presentation more consistent at the cost of the webpage sometimes taking slightly longer to load. Note that this only works because the footer is added to webpages before the MathJax javascript. --> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ "HTML-CSS": { availableFonts: ["TeX"] } }); </script> <hr> <p> This reproducible <a href="http://rmarkdown.rstudio.com">R Markdown</a> analysis was created with <a href="https://github.com/jdblischak/workflowr">workflowr</a> 1.0.1 </p> <hr> </div> </div> </div> <script> // add bootstrap table styles to pandoc tables function bootstrapStylePandocTables() { $('tr.header').parent('thead').parent('table').addClass('table table-condensed'); } $(document).ready(function () { bootstrapStylePandocTables(); }); </script> <!-- dynamically load mathjax for compatibility with self-contained --> <script> (function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; document.getElementsByTagName("head")[0].appendChild(script); })(); </script> </body> </html>