useDynLib(pRoloc)

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

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)

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

import(lattice)
import(ggplot2)
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(stats, rmultinom)
## importFrom(stats4, plot)
importFrom(mvtnorm, rmvnorm)
importFrom(proxy, simil)
importFrom(scales, col2hcl) ##, alpha)
importFrom(caret, createFolds, confusionMatrix, plsda, predict.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)
              ## ClustRegRes)

exportMethods(chi2,
              show,
              ## machine learning
              MLearn,
              getWarnings,
              getSeed,
              getF1Scores,
              f1Count,
              levelPlot,
              plot,
              ## 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,
    getUnknowncol, getUnknownpch,
    setUnknowncol, setUnknownpch,
    filterBinMSnSet,
    filterZeroCols, filterZeroRows,
    ## -- plotting
    plot2D,
    addLegend,
    plotDist,
    highlightOnPlot,
    ## -- data checks
    checkFvarOverlap,
    checkFeatureNamesOverlap,
    ## -- machine learning
    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,
    makeNaData, makeNaData2, whichNA,
    ## -- tl
    favourPrimary,
    ## plotThetas,
    combineThetaRegRes,
    knntlOptimisation, 
    knntlClassification,
    thetas, 
    ## -- pipelines
    lopims, lopims1, lopims2, lopims3, lopims4, lopims5,
    ## -- annotation
    showGOEvidenceCodes,
    getGOEvidenceCodes,
    setAnnotationParams,
    getAnnotationParams,
    getGOFromFeatures,
    makeGoSet)





