CHANGES IN VERSION 2.14
-----------------------

USER VISIBLE CHANGES

    o Added argument marginalization argument to qpPathWeight().

BUG FIXES

    o Bugfix in the 'rUGgmm()' function when called with an undirected graph defined by numeric (integer) vertices, to respect the numeric ordering of those vertex lables, i.e., avoid simulating a graph with ordered vertices "1", "10", "11", etc., and get instead "1", "2", "3", etc.

CHANGES IN VERSION 2.12
-----------------------

USER VISIBLE CHANGES

    o Updated citation data to include the published work in Castelo and Roverato (2017) on path weights.

CHANGES IN VERSION 2.10
-----------------------

BUG FIXES

    o Bugfix in the calculation of the p-values of qpPCC() when missing observations are present in the input data.

CHANGES IN VERSION 2.8
----------------------

USER VISIBLE CHANGES

    o Updated documentation about qpPathWeight().

CHANGES IN VERSION 2.6
----------------------

USER VISIBLE CHANGES

    o Added a first version of the function qpPathWeight() implementing the path weight calculations described in Roverato and Castelo, J. R. Soc. Ser.-C Appl. Stat., accepted.

CHANGES IN VERSION 2.4
----------------------

BUG FIXES

    o Bugfix on qpPrecisionRecall() when argument 'refGraph' is a graphBAM object.

CHANGES IN VERSION 2.2
----------------------

USER VISIBLE CHANGES

    o Updated the vignette "Estimate eQTL networks using qpgraph". It includes more detailed simulations illustrating the steps involved in the estimation of eQTL networks with qpgraph.

BUG FIXES

    o Bugfix on the display of eQTL networks with hive plots

CHANGES IN VERSION 2.0
----------------------

USER VISIBLE CHANGES

    o Function qpGraph() has been replaced by a class of objects called qpGraph whose constructor implements the functionality that the qpGraph() function was providing. However, a couple of arguments have changed and it returns an object of the new defined class qpGraph. Please consult its manual page for more information.

    o Removed methods qpCItest() and qpEdgeNrr() taking an 'smlSet' object as input.

    o Added a new (first version) vignette showing the new functionality to estimate eQTL networks from genetical genomics data.

NEW FEATURES

    o New functions, eQTLnetworkEstimate(), object classes, eQTLnetwork, and corresponding methods to ease the estimation of eQTL networks from genetical genomics data using higher-order conditional independence as described in the recent paper by Tur, Roverato and Castelo (2014).

BUG FIXES

    o Bugfix in qpEdgeNrr() when using arguments restrict.Q and fix.Q and input was 'data.frame' or 'ExpressionSet'.

    o Bugfix in the calculation of marginal covariances with missing observations.

    o Bugfix in qpAnyGraph()

CHANGES IN VERSION 1.20
-----------------------

USER VISIBLE CHANGES

    o Functions qpRndHMGM() and qpSampleFromHMGM() which were defunct in the previous release, are now removed from the package.

    o The execution of function qpGetCliques() can be now interrupted with CTRL+C and should allow to process GUI events.

    o Function qpBoundary() with argument logscale.bdsize=TRUE now handles plotting of boundaries of size 0 by setting them to 1 (=log(1)=0) for plotting purposes only.

NEW FEATURES

    o Function qpCItest() when assuming a mixed GMM returns the fraction of variance explained (partial eta-squared) as estimate. See manual page for further details.

BUG FIXES

    o Several bugfixes related to the simulation of mixed GMMs and eQTL networks.

CHANGES IN VERSION 1.18
-----------------------

USER VISIBLE CHANGES

    o Updated the formatting of the vignettes to adhere to the Bioconductor style

    o Functions qpRndHMGM() and qpSampleFromHMGM() which were deprecated in the previous release, are now defunct.

NEW FEATURES

    o qpCItest() takes now also R/qtl cross objects as input, i.e., the user can test for conditional independence directly on R/qtl cross objects

    o added functions addGenes(), addeQTL(), and addGeneAssociation() to incrementally build and simulate eQTL networks

BUG FIXES

    o Real or integer valued levels in discrete variables now prompt an error when they are not positive integers

    o qpFunctionalCoherence() handles regulatory modules with just one target without giving an error

    o reQTLcross() can now simulate an initial eQTL model with no genes

    o fixed plotting for HMgmm objects

CHANGES IN VERSION 1.16
-----------------------

NEW FEATURES

    o new procedures to simulate homogenous mixed graphical Markov models with a desired linear additive effect on the mixed linear associations.

    o new object classes 'UGgmm', 'HMgmm' and methods 'rUGgmm()', 'rHMgmm()', 'plot', etc. to create and simulate undirected Gaussian and homogeneous mixed graphical Markov models and data from them.

    o new object class 'eQTLcross' and methods 'reQTLcross()', etc. to create and simulate expression quantitative trait loci (eQTL) models in experimental crosses and data from them in combination with the 'qtl' package.

    o 'qpNrr()' now also takes a qtl/cross object as input.

USER VISIBLE CHANGES

    o 'qpRndHMGM()' and 'qpSampleFromHMGM()' have been deprecated in favor of the newer S4 classes and methods for simulation.

    o new vignette on simulating molecular regulatory networks using qpgraph that illustrates the new collection of S4 object classes and methods to simulate data from graphical Markov models and from expression quantitative loci (eQTL) models in experimental crosses.

BUG FIXES

    o correct calculation of SSD matrices and conditional independence tests when more than one discrete variable was involved in the test containing missing values using complete observations.


CHANGES IN VERSION 1.14
-----------------------

NEW FEATURES

    o new qpPlotMap() function to show associations between genetic markers and gene expression profiles using their positions along the genome.

    o conditional independence tests and non-rejection rate estimation with missing data via complete-case analysis and the EM algorithm

    o new qpAllCItests() function to perform multiple conditional independence tests with a fixed conditioning set.

    o new arguments fix.Q and restrict.Q for functions estimating the non-rejection rate in order to restrict and fix variables in the conditioning subsets of the independence tests.

CHANGES IN VERSION 1.12
-----------------------

NEW FEATURES

    o results of conditional independence tests with qpCItest() are now returned using the R standard htest class

    o qpCItest() allows one to test mixed interactions involving phenotypic data variables and expression profiles in ExpressionSet objects, and phenotypic/genetic variables and expression profiles in smlSet objects

    o qpEdgeNrr() estimates the non-rejection rate involving phenotypic data variables and expression profiles in ExpressionSet objects, and phenotypic/genetic variables and expression profiles in smlSet objects

CHANGES IN VERSION 1.10
----------------------

NEW FEATURES

    o estimation of mixed interactions for genetical genomics data via mixed graphical model theory.

    o qpBoundary() to explore sparsity in graphs estimated from non-rejection rates.

    o MLE of covariance matrices via the Hastie-Tibshirani-Friedman (HTF) algorithm (Hastie, Tibshirani and Friedman, 2009, pg. 634), which enables a much faster simulation of these matrices via qpG2Sigma() than with the previous version based on the IPF algorithm, and much faster MLE of partial correlations via qpPAC().

    o uniform sampling of d-regular graphs in qpRndGraph() with the algorithm of Steger and Wormald (1990)

BUG FIXES

    o proper handling of master node identification with snow so that parallel computations work again with snow versions > 0.3-3


CHANGES IN VERSION 1.8
----------------------

USER VISIBLE CHANGES

    o progress is reported now through the standardized 'txtProgressBar()' function from the 'utils' package

CHANGES IN VERSION 1.6
----------------------

USER VISIBLE CHANGES

    o updated the functions that work with covariance, correlations, adjacency and non-rejection rate matrices to employ more efficient matrix classes from the Matrix package

    o handling of covariance matrices as 'dspMatrix' objects via the recommended 'Matrix' package

    o qpFunctionalCoherence() now takes an input list of transcriptional regulator modules

NEW FEATURES

    o estimation of completion time for calculations via the 'estimateTime' argument

    o progress reporting to the functions using parallel support

    o a new function qpCov() and its man page to calculate sample covariance matrices returning them as 'dspMatrix' objects. Fixed some NAMESPACE and dependence issues

    o network reporting through qpPlotNetwork()

    o network reporting through qpTopPairs

    o calculation of the generalized non-rejection rate through the function qpGenNrr()

    o parallel computation of average non-rejection rates in qpAvgNrr() via snow and rlecuyer

    o parallel computation of non-rejection rates in qpNrr() via snow and rlecuyer

    o qpUpdateCliquesRemoving() to update a clique list after an edge removal

    o qpUnifRndAssociation() to generate correlations between -1 and +1 uniformly at random

    o parallel computation of gene ontology enrichment calculations in qpFunctionalCoherence()

BUG FIXES

    o fixed some buggy bits of the interaction with the Matrix package

    o removed unnecessary calls to INTEGER() and REAL() within long loops in the C code in order to speed it up

    o binary adjacency matrices (and not only logical ones) are now also handled by qpFunctionalCoherence()

CHANGES IN VERSION 1.4
----------------------

USER VISIBLE CHANGES

    o added a NEWS file

	  o fixed help page of qpCliqueNumber

	  o implemented the C code of the clique number lower bound.

	  o fixed the handling of user interruption during long calculations

	  o updated some help pages

	  o re-organization of the functions to sample synthetic data from
	  multivariate normal distributions

BUG FIXES

    o added ifnotfound=NA in mget call within .qpFilterByGO to avoid
    errors when Entrez Gene IDs are given that do not exist as keys

    o fixes on the documentation

    o added R_CheckUserInterrupt() to the C code of the IPF algorithm


CHANGES IN VERSION 1.2
----------------------

USER VISIBLE CHANGES

    o updated few details on the main package help page

    o added R_CheckUserInterrupt() to the heavy computations in C

    o changed default value of identicalQs parameters to TRUE

    o documentation mismatches fixed on some function arguments

NEW FEATURES

    o the new calculation of NRR with identical Q subsets

BUG FIXES
    o fixed a minor bug on reporting progress of calculations

    o fixed a minor bug on identifying variable names on matrices


CHANGES IN VERSION 1.0
-----------------------

USER VISIBLE CHANGES

    o fixed package name in the CITATION file

    o the qpTxRegNet vignette has been modified in order to reduce memory
    requirements

    o add an import line to the DESCRIPTION file

    o remove quotes from the import calls in the NAMESPACE file

    o add a zzz.R file with a GOenv function to load variables GOTERM and
    GOBPPARENTS

    o modify qpFunctionalCoherence to properly load variables GOTERM and
    GOBPPARENTS in order to sort out their notes of "no visible binding"

    o remove braces from references in EcoliOxygen.Rd

    o changed LaTeX package mathptm to mathptmx in the qpTxRegNet vignette

    o turn the first letter of the package title into a capital letter

    o replace 'qp' by 'qpgraph' in the main package help file

    o name of the package changed from 'qp' to 'qpgraph'

    o the corresponding manual pages for these generic methods have been
    modified to comply with the S4 methods documentation guidelines.

    o added the possibility of passing an ExpressionSet, a data frame or a
    matrix of observations to the qpEdgeNrr function using S4 generics
    and qpEdgeNrr

    o added the possibility of passing an ExpressionSet, a data frame or a
    matrix of observations to the qpCItest function using S4 generics

    o introduction of S4 generics for qpNrr, qpAvgNrr, qpPAC, qpPCC, qpCItest

    o qpDscale is now exported to the user and a manual page has been created

    o malloc calls in C code have turned into R_malloc and the corresponding
    free calls have been removed

NEW FEATURES

    o functions qpNrr, qpAvgNrr and qpGraph admit now parameters 'pairup.i' and
    'pairup.j' that allow to restrict the pairs of variables on which we
    estimate the non-rejection rate (qpNrr and qpAvgNrr) or from which we derive
    a qp-graph given a threshold

    o a new function qpAnyGraph has been added in order to obtain an undirected
    graph by thresholding any matrix of pairwise measurements in an analogous
    way to the functionality of the function qpGraph

    o a new function qpFunctionalCoherence has been added to estimate
    functional coherence of the qpgraphs with respect to available GO
    annotations. This includes also a new private function .qpFilterbyGO

    o seeds for random number generations have been specified in a couple of
    places within the vignette qpTxRegNet in order to enforce reproducing exactly
    the same numbers under the random sampling schemes used in the estimation of
    non-rejection rates and when drawing random correlations for the random
    method

BUG FIXES

    o calloc and realloc calls in C code have turned into Calloc and Realloc
    and the corresponding free calls have been turned into Free calls

(start date: 20 October, 2008)
