Version: | 1.6.1 |
Date: | 2019-05-28 |
Title: | A Method to Search for Differentially Expressed Genes and to Detect Recurrent Chromosomal Copy Number Aberrations |
Author: | Doulaye Dembele |
Maintainer: | Doulaye Dembele <doulaye@igbmc.fr> |
Depends: | R (≥ 3.1.0) |
Description: | A fold change rank based method is presented to search for genes with changing expression and to detect recurrent chromosomal copy number aberrations. This method may be useful for high-throughput biological data (micro-array, sequencing, ...). Probabilities are associated with genes or probes in the data set and there is no problem of multiple tests when using this method. For array-based comparative genomic hybridization data, segmentation results are obtained by merging the significant probes detected. |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
NeedsCompilation: | yes |
Packaged: | 2019-05-31 12:25:38 UTC; doulaye |
Repository: | CRAN |
Date/Publication: | 2019-05-31 12:40:07 UTC |
A Method to Search for Differentially Expressed Genes and to Detect Recurrent Chromosomal Copy Number Aberrations
Description
Implementation of a method based on fold change rank ordering statistics to search for differentially expressed genes or to detect recurrent chromosomal copy number aberrations. This package can be used for two biological conditions high-throughput dataset (microarray, RNA-seq, ...), for expression profiling dataset over time without replicates or for cytogenetics dataset (aCGH, Sequencing).
Details
Package: | fcros |
Type: | Package |
Version: | 1.6.1 |
Date: | 2019-05-28 |
License: | GPL (>= 2) |
Package fcros has the following functions:
fcros(): | The function to use with a dataset from two biological condition samples. The |
dataset should be in a single table. The function fcros() performs a pairwise | |
conparison of samples to obtain a matrix of fold changes. The fold changes | |
are sorted and their rank values are used to associate statistic with genes/probes. | |
fcros2(): | The function to use with datasets from two biological biological conditions. The |
datasets should be in two separate tables as inputs. The | |
function fcros2() performs a pairwise comparison of samples from each table | |
to obtain fold changes. The fold changes are sorted, their rank values are | |
combined and then used to associate statistic with genes/probes. | |
pfco(): | The function to use with a dataset from two biological condition samples. The |
dataset should be in a single table. The function pfco() performs a pairwise | |
conparison of samples to obtain a matrix of fold changes. The fold changes | |
are sorted and their rank values are used to associate statistic with genes/probes | |
using a singular value decomposition. | |
fcrosMod(): | This function uses fold changes or ratios matrix as input to associate statistic |
with genes/probes. | |
pfcoMod(): | This function uses fold changes or ratios matrix as input to associate statistic |
with genes/probes using a singular value decomposition. | |
fcrosFCmat(): | This function allows to compute a matrix of fold changes using |
pairwise comparisons of the two biological condition samples in a dataset. | |
fcrosTtest(): | This function allows to use the Student t-test to calculate p-values |
for the genes in a dataset. | |
fcrosRead(): | This function allows to read a tab delimited text file to be use as an |
input for the function fcros(), fcros2() or fcrosMod(). | |
fcrosWrite(): | This function allows to save the results obtained using the function fcros(), |
fcros2() or fcrosMod() in a tab delimited text file. | |
fcrosTopN(): | This function allows to search for the top N down- and/or up-regulated genes |
from the results obtained using the function fcros(), fcros2(), pfco(), | |
fcrosMod() or pfcoMod(). | |
fvalTopN(): | This function allows to search for the top N down- and/or up-regulated genes |
from the results obtained using the function fcros(), fcros2(), pfco(), | |
fcrosMod() or pfcoMod(). | |
pvalTopN(): | This function allows to search for the top N down- and/or up-regulated genes |
from the results obtained using the function fcros(), fcros2(), pfco(), | |
fcrosMod() or pfcoMod(). | |
histoPlot(): | This function plots on the screen the histogram of the FCROS statistics |
obtained using the results of the function fcros(), fcros2(), pfco(), | |
fcrosMod() or pfcoMod() | |
fvalVolcanoPlot(): | This function performs a volcano plot of the results obtained |
using the function fcros(), fcros2(), pfco(), fcrosMod() or pfcomod() | |
pvalVolcanoPlot(): | This function performs a volcano plot of the results obtained |
using the function fcros(), fcros2(), pfco(), fcrosMod() or pfcoMod() | |
chrSummary(): | This function summarizes detection results by chromosome |
chrSegment(): | This function segments a chromosome data |
chrPlot(): | This function performs a plot of the chromosome probes data |
chrPlot2(): | This function performs a plot of the chromosome segmentation results |
voomReads(): | This function performs a transformation of the read counts |
tcnReads(): | This function performs a total count normalization of reads |
rankReads(): | The function to use with a dataset from two biological condition samples. The |
dataset should be in a single table. The function rankReads() performs a | |
pairwise conparison of samples to obtain a matrix of fold changes. Small uniform | |
values are added to read counts. This is repeated nrun time. The fold changes | |
are sorted and their rank values are used to associate statistic with genes/probes. | |
scoreThr(): | Using the log10 transformed score values obtained with the rankReads(), this function |
computes numerically the inflection point value given lower and upper bound | |
values for the slope region. |
Author(s)
Doulaye Dembele Maintainer: Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed
genes, BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics:
a new method for detecting differentially expressed
genes, BMC Bioinformatics, 2016, 17:462
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt, trim.opt);
# perform Volcano plot
fvalVolcanoPlot(af, thr = 0.01)
# save fcros values in a file
fcrosWrite(af, file = "test2delete_values.txt");
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(c(0,11), ncol = 1);
id.up <- matrix(c(rep(0,11)), ncol = 1);
n <- length(af$FC);
f.value <- af$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown+1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup+1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1,2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t, data.down[i,2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Example of sequencing data to test the rankReads function.
Description
This is a subset of data taken from the Bottomly dataset see http://bowtie-bio.sourceforge.net/recount/. The complete dataset has 36,536 rows or ENSEMBL identifiers (genes) and 21 columns (samples). For the "bott" data, the first 5,000 rows, first 3 and last 3 samples were used.
Usage
data(bott)
Format
A data frame with 5,000 rows and 7 columns.
gene
:ENSEMBL ID
SRX033480
:sequencing values for the first B6 mouse
SRX033488
:sequencing values for the second B6 mouse
SRX033481
:sequencing values for the third B6 mouse
SRX033493
:sequencing values for the first D2 mouse
SRX033486
:sequencing values for the second D2 mouse
SRX033494
:sequencing values for the third B6 mouse
Details
"bott" is a subset of a complet dataset obtained using a single RNA-seq reads from C57BL/6J (B6) and DBA/J2 (D2) mice.
References
Bottomly et al. Evaluating Gene Expression in C57BL/6J and DBA/J2 Mouse Striatum Using RNA-seq and Microarrays, PLoS One, 6(3)e17820, 2011
Examples
data(bott)
summary(bott)
Calculation of the sorted rank matrix from the dataset
Description
This is an internal function used to calculate the sorted rank matrix. It is used in the functions: fcros() and pfco().
Usage
calcSRmat(xdata, cont, test, log2.opt=0, trim.opt=0.25)
Arguments
xdata |
A matrix or a table containing two biological conditions
dataset to process for detecting differentially expressed
genes: |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
data in the matrix "xdata" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values of each gene are not
used for computing its statistics "ri", i.e. the interquartile range
rank values are averaged: |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kaster P, Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC bioinformatics, 2014, 15:14
Examples
# data(fdata);
Calculation of the sorted rank matrix from the dataset
Description
This is an internal function used to calculate the sorted rank matrix. It is used in the functions: fcrosMod() and pfcoMod().
Usage
calcSRmatMod(xdata, samp, log2.opt=0, trim.opt=0.25)
Arguments
xdata |
A matrix containing fold changes or ratios from a biological
dataset to process for searching differentially expressed
genes or for detecting recurrent copy number aberrations
regions: |
samp |
A vector of sample label names which should appear in the columns
of the matrix fcMat: |
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
values in the matrix "fcMat" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values for each gene
are not used for computing the statistic "ri", i.e. the
interquartile range rank values are averaged:
|
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kaster P, Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC bioinformatics, 2014, 15:14
Examples
# data(fdata);
Example of aCGH "data file" for the fcros package.
Description
This dataset is part of the study performed and published by Sircoulomb et al. 2010, BMC Cancer, 10:539. For our illustration, we used the first 10 patients' data and for only 3 chromosomes: 7, 8 and 9. The complete data are available from the Gene Expression Omnibus website under the accession number GSE17907.
Usage
data(cghData)
Format
A data frame with 33,3613 observations for 10 samples.
Probes
:a text for the unique probe ID
GSM447252
:a numeric vector with log2 change values
GSM447253
:a numeric vector with log2 change values
GSM447254
:a numeric vector with log2 change values
GSM447255
:a numeric vector with log2 change values
GSM447256
:a numeric vector with log2 change values
GSM447257
:a numeric vector with log2 change values
GSM447258
:a numeric vector with log2 change values
GSM447259
:a numeric vector with log2 change values
GSM447260
:a numeric vector with log2 change values
GSM447261
:a numeric vector with log2 change values
Details
This is a subset of a complete dataset obtained using array Comparative Genomic Hybridization technology. Agilent 244K design arrays have been used to monitor breast cancer patients.
References
F Sircoulomb, I Bekhouche, P Finetti, J Adelaide, AB Hamida, J Bonansea, S Raynaud, C Innocenti, E Charafe-Jauffret, C Tarpin, FB Ayed, P Viens, J Jacquemier, F Bertucci, D Birnbaum and M Chaffanet; Genome profiling of ERBB2-amplifief breast cancers. BMC Cancer, 2010, 10:539
Examples
data(cghData)
summary(cghData)
# perform boxplot of data sample values
boxplot(cghData[,2:11])
Example of aCGH "info file" for the fcros package.
Description
This dataset is part of the Agilent 244K design array probes description file which is used in the publicatin of Sircoulomb et al. 2010, BMC Cancer, 10:539. For our illustration, we used only 3 chromosomes (7, 8 and 9) data. The complete data are available in the file "GPL9158-3352.txt", see the Gene Expression Omnibus website and accession number GSE17907.
Usage
data(cghInfo)
Format
A data frame with 33,3613 rows for 7 columns with information on probes.
Index
:a numeric used for the probe
ProbeName
:a text for the unique probe ID
GeneSymbol
:a text with the gene symbol associated with the probe
Chromosome
:a text with the chromosome index associated with the probe
Start
:a start position value for the sequence associated with the probe
End
:an end position value for the sequence associated with the probe
Cytoband
:a text for the cytoband associated with the probe
Details
This is a part of information obtained from the Agilent 244K design array probes description file.
References
F Sircoulomb, I Bekhouche, P Finetti, J Adelaide, AB Hamida, J Bonansea, S Raynaud, C Innocenti, E Charafe-Jauffret, C Tarpin, FB Ayed, P Viens, J Jacquemier, F Bertucci, D Birnbaum and M Chaffanet; Genome profiling of ERBB2-amplifief breast cancers. BMC Cancer, 2010, 10:539
Examples
data(cghInfo)
summary(cghInfo)
Using a C code for merging chromosome segments
Description
This is an internal function for using a C code while merging chromosome segments in the segmentation step.
Usage
chrMerge(nbSeg, idStart, idEnd, lBound, uBound, segVal, segProba,
fcall, L2R, nd, dm, sigma)
Arguments
nbSeg |
Number of current segments |
idStart |
Position indexes of the first probes for segments |
idEnd |
Positions indexes of the last probes for segments |
lBound |
Lower bound position for segments |
uBound |
Upper position for segments |
segVal |
Change values associated with segments |
segProba |
Probabilities associated with segments |
fcall |
Detection status associated with probes |
L2R |
Change values associated with probes |
nd |
Number of acceptable non-detection between two significant of a segment |
dm |
Average distance between two consecutive probes of the chromosome |
sigma |
Standard deviation of the residual observations, see reference |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# data(fdata);
Plot a chromosome data
Description
This function generates a picture using a chromosome data.
Usage
chrPlot(chrData, thr = 0.05, deb = 100, fin = 1e10)
Arguments
chrData |
A chromosome data obtained from an output of the function
dataSummary(): |
thr |
The probability threshold leading to the selection of the significant probes:
|
deb |
This parameter allows to specify the start position of the chromosome region
for plotting. It can be used for zooming. Negative value will lead to the plot
of all chromosome data. |
fin |
This parameter allows to specify the end position of the chromosome region for
plot. It can be used for zooming. Negative value will lead to the plot of all
chromosome data. |
Value
This function generates a picture on the screen
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# load CGH data and info files
data(cghData)
rownames(cghData) <- cghData[,1];
data(cghInfo)
noms <- colnames(cghData)
m <- length(noms)
samp <- noms[2:m]
# associate statistics with probes
af <- fcrosMod(cghData, samp, log2.opt = 0, trim.opt = 0.25)
chromosomes = c(7:9)
alpha <- 0.05
# summarize results for each chromosome
xinfo2 <- dataSummary(af, cghInfo, chromosomes, alpha)
# focused on chromosome 7 data
idx <- which(xinfo2$xinfo.s$Chromosome == "7")
chrData <- xinfo2$xinfo.s[idx, ]
# Plot chromosome 7 data
chrPlot(chrData, thr = alpha)
Plot a chromosome segmentation results
Description
This function generates a picture. It uses a chromosome data and the output results of the segmentation function chrSegment().
Usage
chrPlot2(chrData, chrSeg, deb = 100, fin = 1e10)
Arguments
chrData |
A chromosome data obtained from an output of the function
dataSummary(): |
chrSeg |
An output object of the function chrSegment():
|
deb |
This parameter allows to specify the start position of the chromosome region
for plotting. It can be used for zooming. Negative value will lead to the plot
of all chromosome data. |
fin |
This parameter allows to specify the end position of the chromosome region for
plot. It can be used for zooming. Negative value will lead to the plot of all
chromosome data. |
Value
This function generates a picture on the screen
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# load CGH data and info files
data(cghData)
rownames(cghData) <- cghData[,1];
data(cghInfo)
noms <- colnames(cghData)
m <- length(noms)
samp <- noms[2:m]
# associate statistics with probes in the dataset
af <- pfcoMod(cghData, samp, log2.opt = 0, trim.opt = 0.25)
chromosomes <- c(7:9)
alpha <- 0.05
# summarize results for each chromosome
xinfo2 <- dataSummary(af, cghInfo, chromosomes, alpha)
# focused on chromosome 7 data
idx <- which(xinfo2$xinfo.s$Chromosome == "7")
chrData <- xinfo2$xinfo.s[idx, ]
# segment chromosome 7 data
chrSeg <- chrSegment(chrData, nd = 15)
# plot chromosome 7 results
op <- par(mfrow = c(2,1))
chrPlot(chrData, thr = alpha, deb =-1, fin = 3.5e7)
chrPlot2(chrData, chrSeg, -1, fin = 3.5e7)
par(op)
Segmentation of a chromosome data
Description
This function allows to segment a chromosome data
Usage
chrSegment(chrData, nd = 10)
Arguments
chrData |
A chromosome data obtained from an output of the function
dataSummary(): |
nd |
The acceptable number of non-detected probes which can separate two
significant probes in a segment. Default setting value is 10: |
Value
This function returns a data frame containing 6 information for each segment
idStart |
The start position indexes associated with segments |
idEnd |
The End position indexes associated with segments |
lBounds |
The lower bound positions associated with segments |
uBounds |
The upper bound positions associated with segments |
segL2R |
The change values associated with segments |
segProba |
The probabilities associated with segments |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# load CGH data and info files
data(cghData)
rownames(cghData) <- cghData[,1]
data(cghInfo)
noms <- colnames(cghData)
m <- length(noms)
samp <- noms[2:m]
# associate statistics with probes in the dataset
af <- pfcoMod(cghData, samp, log2.opt = 0, trim.opt = 0.25)
chromosomes = c(7:9)
alpha <- 0.05
# summarize results for each chromosome
xinfo2 <- dataSummary(af, cghInfo, chromosomes, alpha)
# focused on chromosome 7 data
idx <- which(xinfo2$xinfo.s$Chromosome == "7")
chrData <- xinfo2$xinfo.s[idx, ]
# segment chromosome 7 data
chrSeg <- chrSegment(chrData, nd = 15)
# show first 10 segment results
chrSeg[1:10,]
Summarization of the detection results for a list of chromosomes
Description
From an outpout object of the function fcrosMod() or pfcoMod(), the chromosomes information object, the list of chromosomes and a threshold, this function creates two objects containing ordered chromosome data and summary results.
Usage
dataSummary(af, xinfo, chromosomes = c(1:22,"X","Y"), alpha = 0.05)
Arguments
af |
An output object of the function fcrosMod() or pfcoMod(): |
xinfo |
A data frame containing chromosomes information (probe name, gene symbol, chromosome index, start position, end position and the cytoband). These information should appear with the labels ProbeName, GeneSymbol, Chromosome, Start, End, Cytoband. Additional information may be used. Only labels Chromosome, Start and End are mandotory. |
chromosomes |
A list of chromosomes. Default setting is a list with all
chromosomes: |
alpha |
A threshold allowing to select significant probes based on probabilities.
Default setting is 0.05 (5% of error) |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# load CGH data and info files
data(cghData)
rownames(cghData) <- cghData[,1]
data(cghInfo)
noms <- colnames(cghData)
m <- length(noms)
samp <- noms[2:m]
# associate statistics with probes in the dataset
af <- pfcoMod(cghData, samp, log2.opt = 0, trim.opt = 0.25)
chromosomes = c(7:9)
alpha <- 0.05
# summarize results for each chromosome
xinfo2 <- dataSummary(af, cghInfo, chromosomes, alpha)
# display the number of significant probes for each chromosome
xinfo2$chrSumm
Calculation of fold change using pairwise comparison values
Description
This is an internal function for using a C code to calculate fold changes using pairwise comparison of samples.
Usage
fc2Calc(rvect, n, m, idx, m2)
Arguments
rvect |
Vector containing the full or reduced matrix with the pairwise comparison of samples results |
n |
Number of genes or probes in the dataset |
m |
Number of columns of the full or reduced matrix of pairwise comparison of samples results |
idx |
Indexes of the columns to keep in the pairwise comparison of samples |
m2 |
Number of columns in the full or reduced matrix of comparison of samples |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# data(fdata);
Search for differentially expressed genes/probes
Description
Implementation of a method based on fold change rank ordering statistics for detecting differentially expressed genes in a dataset. This function should be used with two biological conditions dataset (microarray or RNA-seq, ...). Using pairwise combinations of samples from the two biological conditions, fold changes (FC) are calculated. For each combination, the FC obtained are sorted in increasing order and corresponding rank values are associated with genes. Then, a statistic is assigned to the robust average ordered rank values for each gene/probe.
Usage
fcros(xdata, cont, test, log2.opt = 0, trim.opt = 0.25)
Arguments
xdata |
A matrix or a table containing two biological conditions dataset to process for detecting differentially expressed genes. The rownames of xdata are used for the output idnames. |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
data in the matrix "xdata" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values of each gene are not
used for computing its statistics "ri", i.e. the interquartile range
rank values are averaged: |
Details
Label names appearing in the parameters "cont" and "test" should match with some label names in the columns of the data matrix "xdata". It is not necessary to use all label names appearing in the columns of the dataset matrix.
Value
This function returns a data frame containing 9 components
idnames |
A vector containing the list of IDs or symbols associated with genes |
ri |
The average of rank values associated with genes. These values are rank values statistics leading to f-values and p-values. |
FC |
The fold changes for genes in the dataset. These fold changes are calculated as a ratio of averages from the test and the control samples. Non log scale values are used in the calculation. |
FC2 |
The robust fold changes for genes. These fold changes are calculated as a trimmed mean of the fold changes or ratios obtained from the dataset samples. Non log scale values are used in the calculation. |
f.value |
The f-values are probabilities associated with genes using the "mean" and the "standard deviation" ("sd") of the statistics "ri". The "mean" and "sd" are used as a normal distribution parameters. |
p.value |
The p-values associated with genes. These values are obtained from the fold change rank values and one sample t-test. |
bounds |
Two values, which are the lower and the upper bounds or the minimum and the maximum values of the non standardized "ri". |
params |
Three values, which are the estimates for the parameters "delta" (average difference between consecutive ordered average of rank values) "mean" (mean value of "ri") and the standard deviation ("sd") of "ri". |
params_t |
Three values which are theoretical levels for parameters "delta", "mean" and "sd". |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed
genes, BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt, trim.opt);
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(0, 1);
id.up <- matrix(0, 1);
n <- length(af$FC);
f.value <- af$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown + 1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup + 1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1,2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t,data.down[i,2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Search for differentially expressed genes/probes
Description
Implementation of a method based on fold change or ratio rank ordering statistics for detecting differentially expressed genes. This function should be used with dataset in two separate tables and from two biological conditions datasets (microarray, RNA-seq, ...). Pairwise combinations of samples from the two biological conditions are used to obtain a matrix of fold changes. For each combination, the FCs obtained are sorted in an increasing order and the corresponding rank values are associated with genes/probes. Then, a statistic is associated with each gene/probe.
Usage
fcros2(xdata1, xdata2, cont, test, log2.opt = 0, trim.opt = 0.25)
Arguments
xdata1 |
A matrix or a table containing two biological conditions dataset to process for detecting differentially expressed genes. The rownames of xdata1 are used for the output idnames. |
xdata2 |
A matrix or a table containing two biological conditions
dataset to process fordetecting differentially expressed
genes: |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
data in the tables "xdata1" and "xdata2" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values for a gene
are not used for computing the statistics "ri", i.e. the
interquartile range
rank values are averaged: |
Details
The label names appearing in the parameters "cont" and "test" should match some label names in the columns of the data matrices "xdata1" and "xdata2". It is not necessary to use all column label names appearing in matrices "xdata1" and "xdata2". However, it is assumed that the same genes (same IDs or symbol) are used in xdata1 and xdata2.
Value
This function returns a data frame containing 9 components
idnames |
A vector containing the list of the IDs or symbols associated with genes |
ri |
The average of rank values associated with genes in the datasets. These values are rank statistics leading to f-values and p-values. |
FC |
The fold changes for genes. These fold changes are calculated as a ratio of averages from the test and control samples. Non log scale values are used in the calculation. |
FC2 |
The robust fold changes for genes. These fold changes are calculated as a trimmed mean of the fold changes or ratios obtained from the dataset samples using the pairwise comparisons. Non log scale values are used in the calculation. |
f.value |
The f-values are probabilities associated with genes. These values are obtained using the "mean" and the "standard deviation" ("sd") of the statistics "ri". The "mean" and "sd" are used as a normal distribution parameters. |
p.value |
The p-values associated with genes. These values are obtained from the f-values. |
bounds |
Two values which are the lower and the upper bound or the minimum and the maximum values of non standardized "ri". |
params |
Three values, which are the estimates for the parameters "delta" (average difference between consecutive ordered average of rank) "mean" (mean value of variable "ri") and the standard deviation ("sd") of variable "ri". |
params_t |
Three values, which are the theoretical levels for parameters "delta", "mean" and "sd". |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont02", "cont03", "cont04", "cont05",
"cont06", "cont07", "cont08", "cont09", "cont10");
test <- c("test01", "test02", "test03", "test04", "test05",
"test06", "test07", "test08", "test09", "test10");
log2.opt <- 0;
trim.opt <- 0.25;
# perform fcros2()
xdata1 <- fdata[,c(2:5, 12:17)];
xdata2 <- fdata[,c(6:11, 18:21)];
rownames(xdata1) <- fdata[,1];
rownames(xdata2) <- fdata[,1];
af2 <- fcros2(xdata1, xdata2, cont, test, log2.opt, trim.opt);
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af2, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(0,1);
id.up <- matrix(0,1);
n <- length(af2$FC);
f.value <- af2$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown + 1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup + 1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1,2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t,data.down[i,2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Calculation of a matrix of fold changes using pairwise comparisons
Description
This function is used internally by fcros2() to compute a matrix of fold changes using pairwise comparisons of a two biological conditions dataset.
Usage
fcrosFCmat(xdata, cont, test, log2.opt=0, trim.opt=0.25)
Arguments
xdata |
A table containing a two biological conditions dataset to process for obtaining a matrix of fold changes that results from pairwise comparisons of samples. The rownames of xdata are used for the output idnames. |
cont |
A vector containing label names of the control samples:
|
test |
A vector containing label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
the data values in matrix "xdata" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values of each gene
are not used for computing the statistic "ri" or "u1", i.e. the
interquartile rank values are averaged:
|
Details
The label names appearing in the parameters "cont" and "test" should match some label names of the columns in the table "xdata". The dataset "xdata" can contain other label names not used.
Value
This function returns a data frame containing 3 components
idnames |
A vector containing the list of IDs or symbols associated with genes |
fcMat |
A matrix of fold changes associated with genes. This matrix is obtained using pairwise comparisons of samples in the dataset "xdata". |
FC |
The fold changes for genes in the dataset "xdata". These fold changes are calculated as a ratio of averages from the test and the control samples. Non log scale values are used in this calculation. |
FC2 |
The robust fold changes for genes in the dataset "xdata". These fold changes are calculated as a trimmed mean of the fold changes obtained using pairs of samples. Non log scale values are used in this calculation. |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed
genes, BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcrosFCmat()
fc <- fcrosFCmat(fdata, cont, test, log2.opt);
# plot histogram of the fold change (log2 scale) in dataset
hist(log2(fc$FC),nclass = 50);
Search for differentially expressed genes or to detect recurrent copy number aberration probes
Description
Implementation of a method based on fold change rank ordering statistics to search for differentially expressed genes or to detect chromosomal recurrent copy number aberration probes. This function should be used with a matrix of fold changes or ratios from biological dataset (microarray, RNA-seq, ...). The function fcrosMod() is an extention of the function fcros() to a dataset which does not contain replicate samples or to a dataset with one biological condition dataset. Statistics are associated with genes/probes to characterize their change levels.
Usage
fcrosMod(fcMat, samp, log2.opt = 0, trim.opt = 0.25)
Arguments
fcMat |
A matrix containing fold changes or ratios from a biological dataset to process for searching differentially expressed genes or for detecting recurrent copy number aberrations regions. The rownames of fcMat are used for the output idnames. |
samp |
A vector of sample label names which should appear in the columns
of the matrix fcMat: |
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
values in the matrix "fcMat" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values for each gene
are not used for computing the statistic "ri", i.e. the
interquartile range rank values are averaged:
|
Details
The label names appearing in the parameter "samp" should match some label names of the columns in the data matrix "xdata". It is not necessary to use all label names appearing in the columns of the dataset matrix.
Value
This function returns a data frame containing 8 components
idnames |
A vector containing the list of IDs or symbols associated with genes |
ri |
The average of ordered rank values associated with genes in the dataset. These values are rank statistics leading to the f-values and the p-values. |
FC2 |
The robust fold changes for genes in matrix "fcMat". These fold changes are calculated as a trimed mean of the values in "fcMat". Non log scale values are used in this calculation. |
f.value |
The f-values are probabilities associated with genes using the "mean" and the "standard deviation" ("sd") of values in "ri". The "mean" and "sd" are used as a normal distribution parameters. |
p.value |
The p-values associated with genes. The p-values are obtained using a one sample t-test on the fold change rank values. |
bounds |
Two values, which are the lower and the upper bounds or the minimum and the maximum values of the non standardized "ri". |
params |
Three values, which are the estimates for the parameters "delta" (average difference between consecutive ordered average of rank) "mean" (mean value of the "ri") and the standard deviation ("sd") of the "ri". |
params_t |
Three values, which are theoretical levels for the parameters "delta", "mean" and "sd". |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
# perform fcrosMod()
fc <- fcrosFCmat(fdata, cont, test, log2.opt, trim.opt);
m <- ncol(fc$fcMat)
samp <- paste("Col",as.character(1:m), sep = "");
fc.val <- cbind(data.frame(fc$fcMat))
colnames(fc.val) <- samp
rownames(fc.val) <- fdata[,1]
af <- fcrosMod(fc.val, samp, log2.opt, trim.opt);
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(0,1);
id.up <- matrix(0,1);
n <- length(af$FC);
f.value <- af$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown + 1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup + 1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1, 2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t,data.down[i, 2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Read a tab delimited text file
Description
This function can be used to read a tab delimited text file to be used as input for the functions fcros(), fcros2(), fcrosMod() pfco() or pfcoMod(). You may also use other functions (read.csv(), read.csv2(), read.delim() or read.delim2()) to read your dataset.
Usage
fcrosRead(filename)
Arguments
filename |
"filename" is a tab delimited text file to read. The first line of this file should contain labels. |
Value
Output is a matrix or a table containing data.
Author(s)
Doulaye Dembele, doulaye@igbmc.fr
Examples
# generate random dataset of size 100 x 5
xdata <- matrix(c(rep(0,600)), ncol = 6);
xdata[,2:6] <- matrix(rnorm(500,0,1), ncol = 5);
x0 <- matrix(NA, 100, 0);
for (i in 1:100) {
x0[i] <- paste("Obs_",i, sep = "");
}
# set column names
colnames(xdata) <- c("Index", "Col_1", "Col_2", "Col_3", "Col_4", "Col_5");
# save data in a text file
write.table(xdata, file = "test2delete.txt", quote = FALSE, sep = "\t",
eol = "\n", col.names = TRUE, row.names = FALSE);
# now used fcros.read() to open the file
mydata <- fcrosRead(file = "test2delete.txt");
summary(mydata)
Search for the top N changed genes or probes
Description
This function allows to seach for the top N differentially expressed genes or changed probes. It uses the output results obtained using one of the following functions fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod().
Usage
fcrosTopN(af, topN)
Arguments
af |
This is an output object obtained using the functions fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod(). |
topN |
The expected number of the top DE genes in the dataset used. |
Value
This function returns a data frame containing 2 components
alpha |
Two threshold values for the down- and the up-regulated allowing to have the top N DE genes |
index |
The indexes of the top N DE genes |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2014, 15:14
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt);
# now select top 10 down and/or up regulated genes
top10 <- fcrosTopN(af, 10);
# display thresholds
top10$alpha
# display index of top10 genes
fdata[top10$index, 1]
# display fvalue of the top10 genes
(af$f.value)[top10$index]
Student t-test for detecting differentially expressed genes
Description
The function uses the basic R t.test() function to perform the Student t-test. It should be used for two biological conditions dataset (microarray, or RNA-seq). The Fold changes, statistics and p-values are returned for each gene in the dataset.
Usage
fcrosTtest(xdata, cont, test, log2.opt = 0)
Arguments
xdata |
A table containing a two biological conditions dataset to process for detecting differentially expressed genes. The rownames of xdata are used for the output idnames. |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
data in the matrix "xdata" are expressed in a log2 scale: |
Details
Label names appearing in the parameters "cont" and "test" should match column label names of the data matrix "xdata". It is not necessary to use all column label names of the dataset "xdata".
Value
idnames |
A vector containing the list of IDs or symbols associated with genes |
FC |
The fold changes for the genes in the dataset. |
stat |
The Student t-test statistics associated with genes. |
p.value |
The Student t-test p-values associated with genes. |
Author(s)
Doulaye Dembele
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcrosTtest()
at <- fcrosTtest(fdata, cont, test, log2.opt);
# now select some differentially expressed genes
id.de <- matrix(0, 1);
n <- length(at$FC);
for (i in 1:n) {
if ((at$p.value)[i] <= 0.0005) { id.de <- rbind(id.de, i); }
}
data.de <- fdata[id.de, ];
nde <- nrow(data.de);
# now plot the DE genes
t <- 1:20;
plot(t, data.de[1, 2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Down- and up-regulated genes");
for (i in 2:nde) {
lines(t, data.de[i,2:21], type = "l", col = "blue")
}
Writing the fcros() or pfco() results in a tab delimited text file
Description
This function creates a tab-delimited text file with the results of the function fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod(). The results are the values associated with the parameters "idnames", "ri", "FC", "FC2", "f.value" and "p.value".
Usage
fcrosWrite(af, file = "fcrosResults.txt", thr = 1)
Arguments
af |
An output object of the functions fcros(), fcros2(), fcrosMod(),
pfco() |
file |
The output file name:
|
thr |
A threshold allowing to filter data based on p-values. Default
setting is 1 (no filtering) |
Value
This function creates and saves a tab-delimited text file on the disk.
Author(s)
Doulaye Dembele doulaye@igbmc.fr
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
af <- fcros(fdata, cont, test, log2.opt, trim.opt);
af2 <- pfco(fdata, cont, test, log2.opt, trim.opt);
fcrosWrite(af, file = "test2delete_values.txt");
fcrosWrite(af2, file = "test2delete2_values.txt");
Example of dataset for the fcros package.
Description
This is a synthetic dataset generated using the "madsim" R package (available from the CRAN web site). Two biological conditions data matrix using 10,000 genes and 20 samples (10 control and 10 test samples) were simulated. 108 and 102 genes of this dataset are down- and up-regulated, respectively.
Usage
data(fdata)
Format
A data frame with 10,000 observations on the following 22 variables.
index
:a text for the genes, unique ID
cont01
:a numeric vector with log2 intensities for control sample 01
cont02
:a numeric vector with log2 intensities for control sample 02
cont03
:a numeric vector with log2 intensities for control sample 03
cont04
:a numeric vector with log2 intensities for control sample 04
cont05
:a numeric vector with log2 intensities for control sample 05
cont06
:a numeric vector with log2 intensities for control sample 06
cont07
:a numeric vector with log2 intensities for control sample 07
cont08
:a numeric vector with log2 intensities for control sample 08
cont09
:a numeric vector with log2 intensities for control sample 09
cont10
:a numeric vector with log2 intensities for control sample 10
test01
:a numeric vector with log2 intensities for test sample 01
test02
:a numeric vector with log2 intensities for test sample 02
test03
:a numeric vector with log2 intensities for test sample 03
test04
:a numeric vector with log2 intensities for test sample 04
test05
:a numeric vector with log2 intensities for test sample 05
test06
:a numeric vector with log2 intensities for test sample 06
test07
:a numeric vector with log2 intensities for test sample 07
test08
:a numeric vector with log2 intensities for test sample 08
test09
:a numeric vector with log2 intensities for test sample 09
test10
:a numeric vector with log2 intensities for test sample 10
DE_status
:a numeric vector with values -1, 0 and 1. Value 0 is used for no change genes, while -1 and 1 are used for down- and up-regulated genes, respectively.
Details
This dataset is obtained using the microarray data simulation model implemented in the package "madsim". A real microarray data, "madsim_test", was used as seed and the number of the control and the test samples were set to 10. The parameter "sdn" was set to 0.3 and all the other parameters in the madsim package were set to their default settings.
References
Dembele D, A flexible microarray data simulation model. Microarrays, 2013, v.2, n.2, pp.115-130
Examples
data(fdata)
rownames(fdata) <- fdata[,1];
op <- par(mfrow = c(2,1));
# perform MA plot using samples "cont01" and "cont05"
A1 <- 0.5*(fdata$cont01 + fdata$cont05);
M1 <- fdata$cont05 - fdata$cont01;
plot(A1, M1, col="red", xlim=c(2,18), ylim=c(-5,5),
main="MA plot with two control samples");
lines(x = c(2,18), y = c(0,0), col = "blue")
lines(x = c(2,18), y = c(-1,-1), col = "blue")
lines(x = c(2,18), y = c(1,1), col = "blue")
# perform MA plot using samples "cont01" and "test05"
A2 <- 0.5*(fdata$cont01 + fdata$test05);
M2 <- fdata$test05 - fdata$cont01;
plot(A2, M2, col="red", xlim=c(2,18), ylim=c(-5,5),
main="MA plot with one control and one test samples");
lines(x = c(2,18), y = c(0,0), col = "blue")
lines(x = c(2,18), y = c(-1,-1), col = "blue")
lines(x = c(2,18), y = c(1,1), col = "blue")
par(op)
Search for the top N changed genes or probes using f-values
Description
This function allows to seach for the top N differentially expressed genes or changed probes. It uses the f-values obtained using one of the following functions fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod().
Usage
fvalTopN(fval, topN)
Arguments
fval |
This is a f-values vector obtained using the functions fcros(),
fcros2(), fcrosMod(), pfco() or pfcoMod(): |
topN |
The expected number of the top DE genes/probes in the dataset used. |
Value
This function returns a data frame containing 2 components
alpha |
Two threshold values for the down- and the up-regulated allowing to have the top N DE genes |
index |
The indexes of the top N DE genes / probes |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform pfco()
af <- pfco(fdata, cont, test, log2.opt);
# now select top 10 down and/or up regulated genes
top10 <- fvalTopN(af$f.value, 10);
# display thresholds
top10$alpha
# display index of top10 genes
fdata[top10$index, 1]
# display fvalue of the top10 genes
(af$f.value)[top10$index]
Performs a volcano plot of the FCROS/PFCO statistics
Description
This function allows to have a volcano like plot using the output results of the function fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod(): p-values versus robust fold changes (FC2). The p-value are transformed using -log10(), while FC2 are transformed using log2().
Usage
fvalVolcanoPlot(af, thr = 0.05)
Arguments
af |
This is an object obtained using the functions fcros(),
fcros2(), fcrosMod(), pfco() or pfcoMod():
|
thr |
The threshold to obtain the DE genes in the dataset (red plots):
|
Value
This function displays on the screen a volcano like plot using the f-values and the robust fold changes (FC2).
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt);
# Volcano plot
fvalVolcanoPlot(af, thr = 0.01);
Histogram plot function of the fcros package results
Description
This function allows to have a histogram plot. It uses the statistics "ri" or "u1" obtained using one of the following functions: fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod().
Usage
histoPlot(af, nbins = 50)
Arguments
af |
This is an object obtained using the function fcros(), fcros2(), fcrosMod(), pfco() or pfcoMod() |
nbins |
This parameter is used for the number of bins in
the histogram. Default setting is 50: |
Value
This function plots a histogram on the screen.
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcros() and pfco()
af <- fcros(fdata, cont, test, log2.opt);
af2 <- pfco(fdata, cont, test, log2.opt);
# Histogram plots
op <- par(mfrow = c(1,2))
histoPlot(af);
histoPlot(af2);
par(op);
Calculation of the mean and the standard deviation of the full or reduced matrix of sorted ranks
Description
This is an internal function for using a C code in the calculation of the mean and the standard deviation of the full or reduced matrix with sorted rank values. The calculations are performed for each row.
Usage
moyStdCalc(rvect, n, m)
Arguments
rvect |
Vector containing the full or reduced matrix with sorted rank values |
n |
Number of genes or probes in the dataset |
m |
Number of columns of the full or reduced matrix of sorted rank values |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# data(fdata);
Searching for differentially expressed genes/probes using an approach based on the Perron-Frobenius theorem
Description
Implementation of a method based on fold change and the Perron theorem for detecting differentially expressed genes in a dataset. This function should be used with two biological conditions dataset (microarray or RNA-seq, ...). Using pairwise combinations of samples from the two biological conditions, fold changes (FC) are calculated. For each combination, the FC obtained are sorted in increasing order and corresponding rank values are associated with genes. Then, a statistic is assigned to the robust average ordered rank values for each gene/probe.
Usage
pfco(xdata, cont, test, log2.opt = 0, trim.opt = 0.25)
Arguments
xdata |
A matrix or a table containing two biological conditions dataset to process for detecting differentially expressed genes. The rownames of xdata are used for the output idnames. |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
data in the matrix "xdata" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values of each gene are not
used for computing its statistics "ri", i.e. the interquartile range
rank values are averaged: |
Details
Label names appearing in the parameter "samp" should match with some label names in the columns of the data matrix "xdata". It is not necessary to use all label names appearing in the columns of the dataset matrix.
Value
This function returns a data frame containing 9 components
idnames |
A vector containing the list of IDs or symbols associated with genes |
ri |
The average of rank values associated with genes. These values are rank values statistics leading to f-values and p-values. |
FC |
The fold changes for genes in the dataset. These fold changes are calculated as a ratio of averages from the test and the control samples. Non log scale values are used in the calculation. |
FC2 |
The robust fold changes for genes. These fold changes are calculated as a trimmed mean of the fold changes or ratios obtained from the dataset samples. Non log scale values are used in the calculation. |
f.value |
The f-values are probabilities associated with genes using the "mean" and the "standard deviation" ("sd") of the statistics "ri". The "mean" and "sd" are used as a normal distribution parameters. |
p.value |
The p-values associated with genes. These values are obtained using a one sample Student t-test on the fold change rank values. |
comp |
Singular values. |
comp.w |
Singular values weights. |
comp.wcum |
Cumulative sum of the singular values weights. |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
# perform pfco()
af <- pfco(fdata, cont, test, log2.opt, trim.opt);
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(0, 1);
id.up <- matrix(0, 1);
n <- length(af$FC);
f.value <- af$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown + 1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup + 1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1,2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t,data.down[i,2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Searching for differentially expressed genes or detecting recurrent copy number aberration probes using an approach based on the Perron-Frobenius theorem
Description
Implementation of a method based on fold change rank and the Perron theorem to search for differentially expressed genes or to detect chromosomal recurrent copy number aberration probes. This function should be used with a matrix of fold changes or ratios from biological dataset (microarray, RNA-seq, ...). The function pfcoMod() is an extention of the function pfco() to a dataset which does not contain replicate samples or to a dataset with one biological condition dataset. Statistics are associated with genes/probes to characterize their change levels.
Usage
pfcoMod(fcMat, samp, log2.opt = 0, trim.opt = 0.25)
Arguments
fcMat |
A matrix containing fold changes or ratios from a biological dataset to process for searching differentially expressed genes or for detecting recurrent copy number aberrations regions. The rownames of fcMat are used for the output idnames. |
samp |
A vector of sample label names which should appear in the columns
of the matrix fcMat: |
log2.opt |
A scalar equals to 0 or 1. The value 0 (default) means that
values in the matrix "fcMat" are expressed in a log2 scale:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values for each gene
are not used for computing the statistic "ri", i.e. the
interquartile range rank values are averaged:
|
Details
The label names appearing in the parameter "samp" should match some label names of the columns in the data matrix "xdata". It is not necessary to use all label names appearing in the columns of the dataset matrix.
Value
This function returns a data frame containing 8 components
idnames |
A vector containing the list of IDs or symbols associated with genes |
ri |
The average of ordered rank values associated with genes in the dataset. These values are rank statistics leading to the f-values and the p-values. |
FC2 |
The robust fold changes for genes in matrix "fcMat". These fold changes are calculated as a trimed mean of the values in "fcMat". Non log scale values are used in this calculation. |
f.value |
The f-values are probabilities associated with genes using the "mean" and the "standard deviation" ("sd") of values in "ri". The "mean" and "sd" are used as a normal distribution parameters. |
p.value |
The p-values associated with genes. The p-values are obtained from the fold change ranks using a one sample t-test. |
comp |
Singular values. |
comp.w |
Singular values weights. |
comp.wcum |
Cumulative sum of the singular values weights. |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
data(fdata);
rownames(fdata) <- fdata[,1];
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
trim.opt <- 0.25;
# perform pfcoMod()
fc <- fcrosFCmat(fdata, cont, test, log2.opt, trim.opt);
m <- ncol(fc$fcMat)
samp <- paste("Col",as.character(1:m), sep = "");
fc.val <- cbind(data.frame(fc$fcMat))
colnames(fc.val) <- samp
rownames(fc.val) <- fdata[,1]
af <- pfcoMod(fc.val, samp, log2.opt, trim.opt);
# now select top 20 down and/or up regulated genes
top20 <- fcrosTopN(af, 20);
alpha1 <- top20$alpha[1];
alpha2 <- top20$alpha[2];
id.down <- matrix(0,1);
id.up <- matrix(0,1);
n <- length(af$FC);
f.value <- af$f.value;
idown <- 1;
iup <- 1;
for (i in 1:n) {
if (f.value[i] <= alpha1) { id.down[idown] <- i; idown <- idown + 1; }
if (f.value[i] >= alpha2) { id.up[iup] <- i; iup <- iup + 1; }
}
data.down <- fdata[id.down[1:(idown-1)], ];
ndown <- nrow(data.down);
data.up <- fdata[id.up[1:(iup-1)], ];
nup <- nrow(data.up);
# now plot down regulated genes
t <- 1:20;
op = par(mfrow = c(2,1));
plot(t, data.down[1, 2:21], type = "l", col = "blue", xlim = c(1,20),
ylim = c(0,18), main = "Top down-regulated genes");
for (i in 2:ndown) {
lines(t,data.down[i, 2:21], type = "l", col = "blue")
}
# now plot down and up regulated genes
plot(t, data.up[1,2:21], type = "l", col = "red", xlim = c(1,20),
ylim = c(0,18), main = "Top up-regulated genes");
for (i in 2:nup) {
lines(t, data.up[i,2:21], type = "l", col = "red")
}
par(op)
Search for the top N changed genes or probes using p-values
Description
This function allows to seach for the top N differentially expressed genes or changed probes. It uses the p-value. These p-values can be obtained using one of the following functions fcros(), fcros2(), fcrosMod(), pfco(), pfcoMod() or another statistical method.
Usage
pvalTopN(pval, topN)
Arguments
pval |
This is vector with p-values obtained using the functions fcros(),
fcros2(), fcrosMod(), pfco(), pfcoMod() or another statistical method:
|
topN |
The expected number of the top DE genes/probes in the dataset used:
|
Value
This function returns a data frame containing 2 components
alpha |
Two threshold values for the down- and the up-regulated allowing to have the top N DE genes |
index |
The indexes of the top N DE genes |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC Bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1]
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt);
# now select top 10 down and/or up regulated genes
top10 <- pvalTopN(af$p.value, 12);
# display thresholds
top10$alpha
# display index of top10 genes
fdata[top10$index, 1]
# display fvalue of the top10 genes
(af$f.value)[top10$index]
Performs a volcano plot of the FCROS/PFCO statistics
Description
This function allows to have a volcano like plot using the output results of the function fcros(), fcros2(), fcrosMod(), pfco() or pfcomod(): p-values versus robust fold changes (FC2). The p-value are transformed using -log10(), while FC2 are transformed using log2().
Usage
pvalVolcanoPlot(af, thr = 0.05)
Arguments
af |
This is an object obtained using the functions fcros(),
fcros2(), fcrosMod(), pfco() or pfcoMod():
|
thr |
The threshold to obtain the DE genes in the dataset (red plots):
|
Value
This function displays on the screen a volcano like plot using the p-values and the robust fold changes (FC2).
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kastner P, Fold change rank ordering statistics:
a new method for detecting differentially expressed genes,
BMC bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
data(fdata);
rownames(fdata) <- fdata[,1]
cont <- c("cont01", "cont07", "cont03", "cont04", "cont08");
test <- c("test01", "test02", "test08", "test09", "test05");
log2.opt <- 0;
# perform fcros()
af <- fcros(fdata, cont, test, log2.opt);
# Volcano plot
pvalVolcanoPlot(af, thr = 1e-6);
This function computes a score to assess the significance of sequencing values
Description
Implementation of two methods based (1) on the coefficient of variation or (2) on the fold change rank ordering statistics for detecting genes with significant sequencing values (gwssv). A score is obtained for each gene and a threshold allows to select the number of gwssv.
Usage
rankReads(xdata, cont, test, meth=0, Ttimes=10, err=0.1, trim.opt=0,
rseed=60)
Arguments
xdata |
A matrix or a table containing sequencing dataset. The rownames of xdata is used for the output idnames. |
cont |
A vector containing the label names of the control samples:
|
test |
A vector containing the label names of the test samples:
|
meth |
This parameter allows to specify the approach to use. The value
0 (defaul) means the coefficient of variation is used. When
non-zero value is given, the fcros method used: |
Ttimes |
The number of perturbed data to use.
The value 10 (default) means that the dataset is used 20 times
and small uniform values are added at each time:
|
err |
This is the amount of the uniform values to add to count values.
The value 0.1 (default) is used:
|
trim.opt |
A scalar between 0 and 0.5. The value 0.25 (default) means
that 25% of the lower and the upper rank values of each gene are not
used for computing its statistics "ri", i.e. the inter-quartile range
rank values are averaged: |
rseed |
This value allow to set the computer random generation seed
value in order to be able to have the same results for runs
performed at different times: |
Details
Label names appearing in the parameters "cont" and "test" should match with some label names in the columns of the data matrix "xdata". It is not necessary to use all label names appearing in the columns of the dataset matrix. For a general purpose dataset, one of these parametere can be empty.
Value
This function returns a data frame containing 10 components when meth=1 and 3 components when meth=0
idnames |
A vector containing the list of IDs or symbols associated with genes |
score |
coefficient of variation (meth=0) or Fisher-Snedecor test p-value (meth=1). Smaller (higher) values are associated with genes with significant (non significant) sequencing values. |
moy |
trimmed means associated with genes (when meth=0). |
ri |
The average of rank values associated with genes when meth=1. These values are rank values statistics leading to f-values and p-values (when meth=1). |
FC |
The fold changes for genes in the dataset. These fold changes are calculated as a ratio of averages from the test and the control samples. Non log scale values are used in the calculation (when meth=1). |
FC2 |
The robust fold changes for genes. These fold changes are calculated as a trimmed mean of the fold changes or ratios obtained from the dataset samples. Non log scale values are used in the calculation (when meth=1). |
f.value |
The f-values are probabilities associated with genes using the "mean" and the "standard deviation" ("sd") of the statistics "ri". The "mean" and "sd" are used as a normal distribution parameters (when meth=1). |
p.value |
The p-values associated with genes. These values are obtained from the fold change rank values and one sample t-test (when meth=1). |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, manuscript under preparation
Examples
data(bott);
cont <- c("SRX033480", "SRX033488", "SRX033481");
test <- c("SRX033493", "SRX033486", "SRX033494");
n <- nrow(bott);
x2 <- tcnReads(bott[,c(cont,test)])
idx.ok <- (apply(x2, 1, sum) != 0)
xdata <- x2[,c(cont,test)]
rownames(xdata) <- bott[,1]
idx.ok <- (apply(x2, 1, sum) != 0)
tt2 <- sum(idx.ok)
raf10.cv <- rankReads(xdata, cont, test, meth=0)
raf10.pv <- rankReads(xdata, cont, test, meth=1)
score.cv <- -log10(sort(raf10.cv$score))
score.pv <- -log10(sort(raf10.pv$score))
tmp <- scoreThr(score.cv, 2500, 3500)
tmp
tmp <- scoreThr(score.pv, 2500, 3500)
tmp
op <- par(mfrow = c(1,2))
plot(score.cv, xlab = "index of genes",
ylab = "-log10(sorted(score)", main = "rs.cv", type = "l",
col = "blue", panel.first = grid())
plot(score.pv, xlab = "index of genes",
ylab = "-log10(sorted(score)", main = "rs.pv", type = "l",
col = "blue", panel.first = grid())
par(op)
Calculation of the FC matrix using pairwise comparisons
Description
This is an internal function for using a C code to calculate a vector form of the matrix of fold changes using pairwise comparison of data samples.
Usage
rmatCalc(fvect, n, m1, m2)
Arguments
fvect |
Two biological conditions dataset matrix |
n |
Number of genes or probes in the dataset |
m1 |
Number of samples in the first biological condition |
m2 |
Number of samples in the second biological condition |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D and Kaster P, Fold change rank ordering statistics:
a new method for detecting differentially expressed
genes, BMC bioinformatics, 2014, 15:14
Dembele D and Kastner P, Comment on: Fold change rank ordering statistics: a new method for detecting differentially expressed genes, BMC Bioinformatics, 2016, 17:462
Examples
# data(fdata);
Calculation of the reduced matrix containing sorted rank values
Description
This is an internal function for using a C code for calculating the reduced matrix of sorted rank values.
Usage
rmatTrim(rvect, n, m, idx, m2)
Arguments
rvect |
Vector containing the full matrix with sorted rank values |
n |
Number of genes or probes in the dataset |
m |
Number of columns of the full matrix of sorted rank values |
idx |
Indexes of the columns to keep in the reduced matrix |
m2 |
Number of columns of the reduced matrix |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# data(fdata);
Determine numerically a threshold for the ranking score
Description
Given a log 10 transformed of the sorted ranking score values (dscore), this function determines numerically a threshold (inflection point) for significance of sequencing value level. User should specify the lower and the upper bounds of the slope region containing the inflection point.
Usage
scoreThr(dscore, deb, fin)
Arguments
dscore |
transformed score values obtained using the function rankReads() |
deb |
integer for lower bound of the slope region containing the inflection point. User should perfom a plot to determine this value |
fin |
integer for upper bound of the slope region containing the inflection point. User should perfom a plot to determine this value |
Value
This function returns two values: “pos” and “thr” which are the index or the number of genes with significant values and the score (-log10(score)) threshold
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, manuscript under preparation
Examples
# data(fdata);
Performs a total count normalization of reads
Description
Given a data table x with count reads, one column for each sample, this function adjust values in such a way they become comparable between samples. User can specify the maximum value for total count reads to be used for each sample.
Usage
tcnReads(x, maxVal=0)
Arguments
x |
Data table with count reads, one column for one sample |
maxVal |
Target total number reads for each sample. The value 0
(default) means that the median total of samples is
used: |
Value
This function returns a data table of the same size as input
x2 |
Data table of the same size as x |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank
values, Stat Methods Med Res, accepted for publication, 2018
Dembele D, manuscript under preparation
Examples
# data(fdata);
Calculation of the Student one sample test probabilities
Description
This is an internal function for using a C code to perform a Student one sample test for each row of the full or reduced matrix with sorted rank values.
Usage
tprobaCalc(moy, std, n, dl, em)
Arguments
moy |
Vector containing average of rank values for rows |
std |
Vector containing standard deviation of rank values for rows |
n |
Number of genes or probes in the dataset |
dl |
Degree of freedom in the test. This is equal to the number of the columns in the full or reduced matrix of sorted rank values minus one |
em |
Expected average rank values for each row |
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, Analysis of high biological data using their rank values, Stat Methods Med Res, accepted for publication, 2018
Examples
# data(fdata);
Compute variance of a beta distribution from data
Description
This is an internal function. Given a vector with values between 0 and 1 and assumed to come from a beta distribution, this function return the variance of the distribution. A trim parameter allow to have a robust value
Usage
varBeta(x, trim.opt)
Arguments
x |
vector with components between 0 and 1 |
trim.opt |
value between 0 and 0.5 used as trim parameter |
Value
This function returns one value equalt to the variance of the best beta distribution of entry x
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Dembele D, manuscript under preparation
Examples
# data(fdata);
Transformation of read count values
Description
This function allows to transform the count values associated with Sequencing reads. The purpose of this transformation is to allow applying normal-based microarray-like statistical methods to RNA-seq read counts. Log2 values are returned.
Usage
voomReads(x, Rm=1e+06)
Arguments
x |
This is a read counts matrix |
Rm |
A constant used in the transformation |
Value
This function returns a data matrix of the same size as input matrix x. The values of this matrix are expressed in log2 scale.
Author(s)
Doulaye Dembele doulaye@igbmc.fr
References
Charity W Law, Yunshun Chen, Wei Shi and Gordon K Smyth, voom: precision weights unlock linear model analysis tools for RNA-seq read counts,Genome Biology, 2014, 15R29
Examples
# data(fdata);