useDynLib(SynExtend)

import(methods)
import(IRanges)
import(Biostrings)
import(DECIPHER)
import(S4Vectors)
import(DBI)
import(RSQLite)

importFrom("utils", "setTxtProgressBar", "txtProgressBar", "data", "object.size", 
"getS3method", "read.table", "read.delim")
importFrom("stats", "predict", "runif", "setNames", "rnorm", "optim", "kmeans", "density", "nls",
"ppois", "pt", "pnorm", "as.dist", "fisher.test", "is.leaf", "pchisq", "rbinom", "as.dendrogram",
".checkMFClasses", ".getXlevels", "delete.response", "is.empty.model", "model.frame", 
"model.matrix", "model.response", "model.weights", "na.pass", "offset", "terms", "glm", "lm")
importFrom("parallel", "mclapply", "detectCores")
importFrom("graphics", "hist", "points", "abline", "axis", "layout", "lines", "par", "text")
importFrom("grDevices", "topo.colors", "colorRampPalette")

export(NucleotideOverlap)
export(gffToDataFrame)
export(PairSummaries)
export(FindSets)
export(DisjointSet)
export(ExtractBy)
export(SequenceSimilarity)
export(SubSetPairs)
export(EstimRearrScen)
export(BlockExpansion)
export(BlockReconciliation)
export(BlastSeqs)
export(MakeBlastDb)
export(SelectByK)
export(SuperTree)
export(DPhyloStatistic)
export(PhyloDistance)
export(MoranI)
export(dendrapply)
export(FastQFromSRR)
export(FitchParsimony)
export(ExoLabel)
export(EstimateExoLabel)
export(PrepareSeqs)
export(SummarizePairs)
export(ClusterByK)
export(ExpandDiagonal)
export(CompetePairs)
export(AAHitScoping)
export(ApproximateBackground)
export(BlockByRank)
export(CheckAgainstReport)
export(HitConsensus)
export(NormVec)
export(OneSite)
export(RejectionBy)
export(WithinSetCompetition)

S3method(subset, 'dendrogram')

S3method(`[`, "LinkedPairs")
S3method(print, "LinkedPairs")

S3method(print, 'GenRearr')

export(EvoWeaver)
export(SpeciesTree)
S3method(show, 'EvoWeaver')
S3method(print, 'EvoWeaver')
S3method(`[`, 'EvoWeaver')
S3method(SpeciesTree, 'EvoWeaver')
S3method(predict, 'EvoWeaver')
S3method(PAProfiles, 'EvoWeaver')
S3method(CophProfiles, 'EvoWeaver')
S3method(RandCophProfiles, 'EvoWeaver')
#S3method(Ensemble, 'EvoWeaver')

S3method(ExtantJaccard, 'EvoWeaver')
S3method(Hamming, 'EvoWeaver')
S3method(GLMI, 'EvoWeaver')
S3method(GLDistance, 'EvoWeaver')
S3method(CorrGL, 'EvoWeaver')
S3method(ProfileDCA, 'EvoWeaver')
S3method(Behdenna, 'EvoWeaver')
S3method(PAPV, 'EvoWeaver')
S3method(PAJaccard, 'EvoWeaver')
S3method(PAOverlap, 'EvoWeaver')

S3method(RPMirrorTree, 'EvoWeaver')
S3method(RPContextTree, 'EvoWeaver')
S3method(TreeDistance, 'EvoWeaver')

S3method(GeneDistance, 'EvoWeaver')
S3method(MoransI, 'EvoWeaver')
S3method(OrientationMI, 'EvoWeaver')

S3method(GeneVector, 'EvoWeaver')
S3method(Ancestral, 'EvoWeaver')
S3method(SequenceInfo, 'EvoWeaver')

S3method(plot, 'EvoWeb')
S3method(summary, 'EvoWeb')
S3method(show, 'EvoWeb')
S3method(print, 'EvoWeb')
S3method(as.data.frame, 'EvoWeb')
S3method(as.matrix, 'EvoWeb')

export(simMat)
export(as.simMat)
export(Diag)
export(`Diag<-`)
S3method(as.simMat, 'default')
S3method(show, 'simMat')
S3method(as.simMat, 'vector')
S3method(as.simMat, 'matrix')
S3method(print, 'simMat')
S3method(as.matrix, 'simMat')
S3method(`[`, 'simMat')
S3method(`[<-`, 'simMat')
S3method(Diag, 'simMat')
S3method(`Diag<-`, 'simMat')
S3method(names, 'simMat')
S3method(`names<-`, 'simMat')
S3method(as.data.frame, 'simMat')

S3method(show, "DecisionTree")
S3method(show, "RandForest")
S3method(print, "RandForest")
S3method(print, "DecisionTree")
S3method(predict, "RandForest")
S3method(as.dendrogram, "DecisionTree")
S3method(plot, "DecisionTree")
export(RandForest)
