useDynLib(pRoloc)

## Depends
import(MSnbase)
import(methods)
import(Rcpp)
importFrom(BiocParallel, bplapply)

importFrom("grDevices", "blues9", "colorRampPalette", "dev.new",
           "rgb", "chull")
importFrom("graphics", "abline", "axis", "grid", "legend", "matlines",
           "lines", "matplot", "points", "segments", "smoothScatter",
           "text", "par", "mtext", "barplot")
importFrom("stats", "as.formula", "cmdscale", "cov", "dist", "kmeans",
           "mahalanobis", "median", "prcomp", "qchisq", "quantile",
           "update", "var", "rmultinom", "na.omit", "hclust",
           "as.dendrogram")
importFrom("utils", "combn", "head", "menu", "packageDescription",
           "packageVersion", "read.csv", "setTxtProgressBar",
           "txtProgressBar")

importFrom("dendextend", "set")

importMethodsFrom(MLInterfaces, MLearn,
                  predScore, predScores,
                  predictions)
importFrom(MLInterfaces,
           naiveBayesI,
           randomForestI,
           svmI, knnI, ksvmI,
           nnetI, plsdaI)
## import(MLInterfaces)

importClassesFrom(biomaRt, Mart)
importFrom(biomaRt, getBM,
           useMart,
           listAttributes)

importFrom(ggplot2, ggplot, geom_point, theme, scale_size_continuous,
           xlab, ylab, scale_y_discrete, geom_text, aes,
           scale_color_manual, element_text, scale_x_discrete)

## Importing to avoid 'no visible global function definition for' NOTES
import(Biobase)

import(lattice)
import(BiocGenerics)
import(mclust)
import(MASS)
import(kernlab) ## previously only imported ksvm
import(knitr)

importFrom(class, knn)
importFrom(FNN, get.knn, get.knnx)
importFrom(RColorBrewer, brewer.pal)
## importFrom(stats4, plot)
importFrom(mvtnorm, rmvnorm)
importFrom(proxy, simil)
importFrom(scales, col2hcl) ##, alpha)
importFrom(caret, createFolds, confusionMatrix, plsda)
importFrom(sampling, strata)
importFrom(e1071, svm, naiveBayes, cmeans)
importFrom(nnet, nnet)
importFrom(randomForest, randomForest)
importFrom(gtools, permutations)
importFrom(plyr, colwise, catcolwise, ddply)

exportClasses(GenRegRes,
              ThetaRegRes,
              AnnotationParams,
              SpatProtVis,
              ClustDist,
	      ClustDistList,
              QSep)
              ## ClustRegRes)

exportMethods(chi2,
              show,
              ## machine learning
              MLearn,
              getWarnings,
              getSeed,
              getF1Scores,
              f1Count,
              levelPlot,
              plot,
              plot3D,
              ## clustering
              ## kmeansClustering,
              ## kmeansOptimisation, kmeansOptimization,
              ## distances
              nndist)

export(## MSnSet manipulation
    markerMSnSet, unknownMSnSet,
    sampleMSnSet, testMSnSet,
    getPredictions,
    getMarkers,
    getMarkerClasses,
    minClassScore,
    testMarkers,
    minMarkers,
    addMarkers,
    pRolocmarkers,
    empPvalues,
    getStockcol, getStockpch,
    setStockcol, setStockpch,
    getLisacol, setLisacol,
    getOldcol, setOldcol,
    getUnknowncol, getUnknownpch,
    setUnknowncol, setUnknownpch,
    zerosInBinMSnSet,
    filterBinMSnSet,
    filterZeroCols, filterZeroRows,
    fDataToUnknown,
    ## -- plotting
    plot2D,
    plot2Dmethods,
    plot2Ds, data1, data2, col1, col2,
    move2Ds,
    addLegend,
    plotDist,
    mrkHClust,
    highlightOnPlot,
    highlightOnPlot3D,
    SpatProtVis,
    orgQuants,
    ## -- data checks
    checkFvarOverlap,
    checkFeatureNamesOverlap,
    ## -- machine learning
    classWeights,
    plsdaRegularisation, plsdaOptimisation, plsdaOptimization,
    plsdaPrediction, plsdaClassification,
    svmRegularisation, svmOptimisation, svmOptimization,
    svmPrediction, svmClassification,
    ksvmRegularisation, ksvmOptimisation, ksvmOptimization,
    ksvmPrediction, ksvmClassification,
    knnRegularisation, knnOptimisation, knnOptimization,
    knnPrediction, knnClassification,
    nbRegularisation, nbOptimisation, nbOptimization,
    nbPrediction, nbClassification,
    nnetRegularisation, nnetOptimisation, nnetOptimization,
    nnetPrediction, nnetClassification,
    perTurboOptimisation, perTurboOptimization, perTurboClassification,
    getParams,
    getRegularisedParams, getRegularizedParams,
    rfRegularisation, rfOptimisation, rfOptimization,
    rfPrediction, rfClassification,
    phenoDisco,
    ## -- tl
    favourPrimary,
    ## plotThetas,
    combineThetaRegRes,
    knntlOptimisation,
    knntlClassification,
    thetas,
    ## -- pipelines
    lopims, lopims1, lopims2, lopims3, lopims4, lopims5,
    ## -- annotation
    goIdToTerm, goTermToId,
    flipGoTermId, prettyGoTermId,
    showGOEvidenceCodes,
    getGOEvidenceCodes,
    setAnnotationParams,
    getAnnotationParams,
    getGOFromFeatures,
    makeGoSet,
    ## -- markers
    mrkVecToMat, mrkMatToVec,
    mrkMatAndVec, showMrkMat,
    isMrkMat, isMrkVec,
    ## -- gomarkers
    addGoAnnotations,
    filterMinMarkers,
    filterMaxMarkers,
    subsetMarkers,
    orderGoAnnotations,
    ## -- clustdist
    clustDist,
    ClustDistList,    
    getNormDist,
    ## -- QSep
    QSep,
    qsep)
