Skip to content

Commit 52ecf40

Browse files
author
Dan-RAI
committed
Journal ref added to doc
1 parent eeb2cc3 commit 52ecf40

11 files changed

Lines changed: 11281 additions & 1608 deletions

File tree

docs/PascalX.html

Lines changed: 74 additions & 1346 deletions
Large diffs are not rendered by default.

docs/_sources/.ipynb_checkpoints/index-checkpoint.rst.txt

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
Welcome to PascalX's documentation!
77
===================================
88

9-
PascalX is a python3 library (`source <https://github.com/BergmannLab/PascalX>`_) for high precision gene and pathway scoring for GWAS summary statistics. Aggregation of SNP p-values to gene and pathway scores follows the `Pascal <https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004714>`_ methodology, which is based on :math:`\chi^2` statistics. The cummulative distribution function of the weighted :math:`\chi^2` distribution is calculated exactly via a multi-precision C++ implementation of Ruben's and Davies algorithm. This allows to apply the Pascal methodology to modern UK BioBank scale GWAS. In addition, PascalX offers a novel coherence test between two different GWAS on the level of genes, based on the product-normal distribution, as described `here <https://doi.org/10.1101/2021.05.16.21257289>`_.
9+
PascalX is a python3 library (`source <https://github.com/BergmannLab/PascalX>`_) for high precision gene and pathway scoring for GWAS summary statistics. Aggregation of SNP p-values to gene and pathway scores follows the `Pascal <https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004714>`_ methodology, which is based on :math:`\chi^2` statistics. The cumulative distribution function of the weighted :math:`\chi^2` distribution can be calculated approximately or exactly via a multi-precision C++ implementation of Ruben's and Davies algorithm. This allows to apply the Pascal methodology to modern UK BioBank scale GWAS. In addition, PascalX offers a novel coherence test between two different GWAS on the level of genes, based on the product-normal distribution, as described `here <https://doi.org/10.1101/2021.05.16.21257289>`_.
1010

1111
**Highlights:**
1212

13-
* Multi-precision weighted :math:`\chi^2` cdf calculation (up to 100 digits)
13+
* Multi-precision weighted :math:`\chi^2` cdf calculation (approximately or exactly up to 100 digits)
1414
* Parallelization over chromosomes and/or genes
1515
* GPU support for acceleration of linear algebra operations
1616
* Fast random access to reference panel genomic data via own indexed SNP database
@@ -23,14 +23,6 @@ PascalX is a python3 library (`source <https://github.com/BergmannLab/PascalX>`_
2323
PascalX is a research level tool. No warranty or guarantee whatsoever for its correct functionality is given. You should perform your own consistency checks on results PascalX implies.
2424

2525

26-
**Why PascalX:**
27-
28-
In order to illustrate the impact of approximating the cdf of the weighted :math:`\chi^2` distribution at very small p-values via matching only the first two moments, we calcuated for an uniform random sample of weights and arguments :math:`\log_{10}` transformed p-values at :math:`N=10`, :math:`N=100` and :math:`N=1000` degrees of freedom via Ruben's algorithm at 100 digits precision and the Satterthwaite-Welch approximation. The resulting p-values are ordered, :math:`-\log_{10}` transformed, and plotted against each other (QQ-plots), see top row of the following figure.
29-
30-
.. image:: SatterthwaiteVsRuben.png
31-
32-
In the second row, the ratio of p-values is plotted at various fixed arguments, sampled from different weights. The bullet point marks the mean and the error bar the range of values observed. We infer that the Satterthwaite-Welch approximation tends to overestimate the significance, in particular for small :math:`N`. Note that the error can go beyond several orders of magnitude.
33-
3426

3527

3628

@@ -55,17 +47,22 @@ License and citation policy
5547

5648
The PascalX package is an open-source package under AGPLv3.
5749

58-
If you make use of PascalX for your research, please cite PascalX via the doi: 10.5281/zenodo.4429922
50+
If you make use of PascalX for your research, please cite the PascalX publication:
51+
52+
53+
| *Krefl D., Brandulas Cammarata A., Bergmann S.*
54+
| *PascalX: a python library for GWAS gene and pathway enrichment tests*
55+
| *Bioinformatics, btad296*
56+
| *doi:10.1093/bioinformatics/btad296*
5957
60-
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4429922.svg
61-
:target: https://doi.org/10.5281/zenodo.4429922
6258

6359
If you make use of the X-scorer (gene-wise coherence test between GWAS), please cite the work:
6460

6561

6662
| *Krefl D., Bergmann S.*
67-
| *Covariance of Interdependent Samples with Application to GWAS*
68-
| *doi:10.1101/2021.05.16.21257289*
63+
| *Cross-GWAS coherence test at the gene and pathway level*
64+
| *PLOS Computational Biology 18(9): e1010517*
65+
| *doi:10.1371/journal.pcbi.1010517*
6966
7067

7168
Contact

docs/_sources/index.rst.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Welcome to PascalX's documentation!
77
===================================
88

9-
PascalX is a python3 library (`source <https://github.com/BergmannLab/PascalX>`_) for high precision gene and pathway scoring for GWAS summary statistics. Aggregation of SNP p-values to gene and pathway scores follows the `Pascal <https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004714>`_ methodology, which is based on :math:`\chi^2` statistics. The cummulative distribution function of the weighted :math:`\chi^2` distribution can be calculated approximately or exactly via a multi-precision C++ implementation of Ruben's and Davies algorithm. This allows to apply the Pascal methodology to modern UK BioBank scale GWAS. In addition, PascalX offers a novel coherence test between two different GWAS on the level of genes, based on the product-normal distribution, as described `here <https://doi.org/10.1101/2021.05.16.21257289>`_.
9+
PascalX is a python3 library (`source <https://github.com/BergmannLab/PascalX>`_) for high precision gene and pathway scoring for GWAS summary statistics. Aggregation of SNP p-values to gene and pathway scores follows the `Pascal <https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004714>`_ methodology, which is based on :math:`\chi^2` statistics. The cumulative distribution function of the weighted :math:`\chi^2` distribution can be calculated approximately or exactly via a multi-precision C++ implementation of Ruben's and Davies algorithm. This allows to apply the Pascal methodology to modern UK BioBank scale GWAS. In addition, PascalX offers a novel coherence test between two different GWAS on the level of genes, based on the product-normal distribution, as described `here <https://doi.org/10.1101/2021.05.16.21257289>`_.
1010

1111
**Highlights:**
1212

@@ -47,10 +47,14 @@ License and citation policy
4747

4848
The PascalX package is an open-source package under AGPLv3.
4949

50-
If you make use of PascalX for your research, please cite PascalX via the doi: 10.5281/zenodo.4429922
50+
If you make use of PascalX for your research, please cite the PascalX publication:
51+
52+
53+
| *Krefl D., Brandulas Cammarata A., Bergmann S.*
54+
| *PascalX: a python library for GWAS gene and pathway enrichment tests*
55+
| *Bioinformatics, btad296*
56+
| *doi:10.1093/bioinformatics/btad296*
5157
52-
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4429922.svg
53-
:target: https://doi.org/10.5281/zenodo.4429922
5458

5559
If you make use of the X-scorer (gene-wise coherence test between GWAS), please cite the work:
5660

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
/*
2+
* _sphinx_javascript_frameworks_compat.js
3+
* ~~~~~~~~~~
4+
*
5+
* Compatability shim for jQuery and underscores.js.
6+
*
7+
* WILL BE REMOVED IN Sphinx 6.0
8+
* xref RemovedInSphinx60Warning
9+
*
10+
*/
11+
12+
/**
13+
* select a different prefix for underscore
14+
*/
15+
$u = _.noConflict();
16+
17+
18+
/**
19+
* small helper function to urldecode strings
20+
*
21+
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
22+
*/
23+
jQuery.urldecode = function(x) {
24+
if (!x) {
25+
return x
26+
}
27+
return decodeURIComponent(x.replace(/\+/g, ' '));
28+
};
29+
30+
/**
31+
* small helper function to urlencode strings
32+
*/
33+
jQuery.urlencode = encodeURIComponent;
34+
35+
/**
36+
* This function returns the parsed url parameters of the
37+
* current request. Multiple values per key are supported,
38+
* it will always return arrays of strings for the value parts.
39+
*/
40+
jQuery.getQueryParameters = function(s) {
41+
if (typeof s === 'undefined')
42+
s = document.location.search;
43+
var parts = s.substr(s.indexOf('?') + 1).split('&');
44+
var result = {};
45+
for (var i = 0; i < parts.length; i++) {
46+
var tmp = parts[i].split('=', 2);
47+
var key = jQuery.urldecode(tmp[0]);
48+
var value = jQuery.urldecode(tmp[1]);
49+
if (key in result)
50+
result[key].push(value);
51+
else
52+
result[key] = [value];
53+
}
54+
return result;
55+
};
56+
57+
/**
58+
* highlight a given string on a jquery object by wrapping it in
59+
* span elements with the given class name.
60+
*/
61+
jQuery.fn.highlightText = function(text, className) {
62+
function highlight(node, addItems) {
63+
if (node.nodeType === 3) {
64+
var val = node.nodeValue;
65+
var pos = val.toLowerCase().indexOf(text);
66+
if (pos >= 0 &&
67+
!jQuery(node.parentNode).hasClass(className) &&
68+
!jQuery(node.parentNode).hasClass("nohighlight")) {
69+
var span;
70+
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
71+
if (isInSVG) {
72+
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
73+
} else {
74+
span = document.createElement("span");
75+
span.className = className;
76+
}
77+
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
78+
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
79+
document.createTextNode(val.substr(pos + text.length)),
80+
node.nextSibling));
81+
node.nodeValue = val.substr(0, pos);
82+
if (isInSVG) {
83+
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
84+
var bbox = node.parentElement.getBBox();
85+
rect.x.baseVal.value = bbox.x;
86+
rect.y.baseVal.value = bbox.y;
87+
rect.width.baseVal.value = bbox.width;
88+
rect.height.baseVal.value = bbox.height;
89+
rect.setAttribute('class', className);
90+
addItems.push({
91+
"parent": node.parentNode,
92+
"target": rect});
93+
}
94+
}
95+
}
96+
else if (!jQuery(node).is("button, select, textarea")) {
97+
jQuery.each(node.childNodes, function() {
98+
highlight(this, addItems);
99+
});
100+
}
101+
}
102+
var addItems = [];
103+
var result = this.each(function() {
104+
highlight(this, addItems);
105+
});
106+
for (var i = 0; i < addItems.length; ++i) {
107+
jQuery(addItems[i].parent).before(addItems[i].target);
108+
}
109+
return result;
110+
};
111+
112+
/*
113+
* backward compatibility for jQuery.browser
114+
* This will be supported until firefox bug is fixed.
115+
*/
116+
if (!jQuery.browser) {
117+
jQuery.uaMatch = function(ua) {
118+
ua = ua.toLowerCase();
119+
120+
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
121+
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
122+
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
123+
/(msie) ([\w.]+)/.exec(ua) ||
124+
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
125+
[];
126+
127+
return {
128+
browser: match[ 1 ] || "",
129+
version: match[ 2 ] || "0"
130+
};
131+
};
132+
jQuery.browser = {};
133+
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
134+
}

0 commit comments

Comments
 (0)