A fast and covariate-adaptive method for multiple hypothesis testing
Project description
AdaFDR
A fast and covariate-adaptive method for multiple hypothesis testing.
Software accompanying the paper "AdaFDR: a Fast, Powerful and Covariate-Adaptive Approach to Multiple Hypothesis Testing", 2018.
Requirement
- AdaFDR runs on python 3.
Installation
pip install adafdr
Usage
Import package
adafdr.method
contains all methods while adafdr.data_loader
contains the data.
They can be imported as
import adafdr.method as md
import adafdr.data_loader as dl
Other ways of importing are usually compatible. For example, one can import the package with import adafdr
and call method xxx
in the method module via adafdr.method.xxx()
Input format
For a set of N hypotheses, the input data includes the p-values p
and the d-dimensional covariate x
,
with the following format:
p
: (N,) numpy.ndarray.x
: (N,d) numpy.ndarray.
When d=1, x
is allowed to be either (N,) numpy.ndarray
or (N,1) numpy.ndarray.
Covariate visualization
The covariate visualization method adafdr_explore
can be used as
adafdr.method.adafdr_explore(p, x, output_folder=None)
If the output_folder
is not None
, the covariate visualization figures will be
saved in output_folder
. Otherwise, they will show up in the console.
Multiple testing
The multiple hypothesis testing method adafdr_test
can be used as
- fast version (default):
res = adafdr.method.adafdr_test(p, x, alpha=0.1)
- regular version:
res = adafdr.method.adafdr_test(p, x, alpha=0.1, fast_mode=False)
- regular version with multi-core:
res = adafdr.method.adafdr_test(p, x, alpha=0.1, fast_mode=False, single_core=False)
res
is a dictionary containing the results, including:
res['decision']
: a (N,) boolean vector, decision for each hypothesis with value 1 meaning rejection.
res['threshold']
: a (N,) float vector, threshold for each hypothesis.
If output_folder
is a folder path, log files will be saved in the folder.
Example on airway RNA-seq data
The following is an example on the airway RNA-seq data used in the paper.
Import package and load data
Here we load the airway data used in the paper. See vignettes for other data accompanied with the package.
import adafdr.method as md
import adafdr.data_loader as dl
p,x = dl.data_airway()
Covariate visualization using adafdr_explore
md.adafdr_explore(p, x, output_folder=None)
Here, the left is a scatter plot of each hypothesis with p-values (y-axis) plotted against the covariate (x-axis). The right panel shows the estimated null hypothesis distribution (blue) and the estimated alternative hypothesis distribution (orange) with respect to the covariate. Here we can conclude that a hypothesis is more likely to be significant if the covariate (gene expression) value is higher.
Multiple hypothesis testing using adafdr_test
res = md.adafdr_test(p, x, fast_mode=True, output_folder=None)
Here, the learned threshold res['threshold']
looks as follows.
Each orange dot corresponds to the threhsold to one hypothesis. The discrepancy at the right is due to the difference between the thresholds learned by the two folds.
Quick Test
Here is a quick test. First check if the package can be successfully imported:
import adafdr.method as md
import adafdr.data_loader as dl
Next, run a small example which should take a few seconds:
import numpy as np
p,x,h,_,_ = dl.load_1d_bump_slope()
res = md.adafdr_test(p, x, alpha=0.1)
t = res['threshold']
D = np.sum(p<=t)
FD = np.sum((p<=t)&(~h))
print('# AdaFDR successfully finished!')
print('# D=%d, FD=%d, FDP=%0.3f'%(D, FD, FD/D))
It runs AdaFDR-fast on a 1d simulated data. If the package is successfully imported, the result should look like:
# AdaFDR successfully finished!
# D=840, FD=80, FDP=0.095
Citation information
Coming soon.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file adafdr-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: adafdr-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1226076f29d7e246e6b2fb32a58037907c25acd66f51ffb277ce64ed80b2bc1b |
|
MD5 | f7fa1fd4307e96d832503552543fa71f |
|
BLAKE2b-256 | d72e84c62231a0c53b543b18173968d12933c0057a24097c03043da708e13342 |