useDynLib(VariantFiltering)

import(methods)
import(BiocGenerics)
import(S4Vectors)
import(shiny)
import(GenomicScores)

importClassesFrom(Biobase, AssayData)
importClassesFrom(AnnotationDbi, AnnotationDb)
importClassesFrom(graph, graphNEL)
importClassesFrom(VariantAnnotation, VariantType, SpliceSiteVariants,
                  PromoterVariants, FiveUTRVariants, ThreeUTRVariants,
                  IntergenicVariants, PolyPhenDb)
importClassesFrom(Seqinfo, Seqinfo, GenomeDescription)
importClassesFrom(GenomicRanges, GRanges, GRangesList, GPos)
importClassesFrom(Biostrings, DNAStringSet, DNAStringSetList)
importClassesFrom(Rsamtools, TabixFile, TabixFileList, BamViews)

importMethodsFrom(graph, numNodes,
                         edgemode,
                         nodes,
                         edges,
                         inEdges,
                         subGraph,
                         nodeDataDefaults,
                         "nodeDataDefaults<-",
                         nodeData,
                         "nodeData<-")
importMethodsFrom(BSgenome, snpcount,
                            snplocs,
                            snpsByOverlaps,
                            referenceGenome)
importMethodsFrom(Seqinfo, "seqinfo<-",
                           seqlevels,
                           "seqlevels<-",
                           "isCircular",
                           "isCircular<-",
                           genome,
                           "genome<-",
                           provider,
                           providerVersion,
                           commonName,
                           releaseDate)
importMethodsFrom(GenomeInfoDb, seqlevelsStyle,
                                "seqlevelsStyle<-")
importMethodsFrom(VariantAnnotation, fixed,
                                     readVcf,
                                     scanVcfHeader,
                                     ScanVcfParam,
                                     samples,
                                     sampleNames,
                                     "sampleNames<-",
                                     softFilterMatrix,
                                     "softFilterMatrix<-",
                                     info,
                                     "info<-",
                                     header,
                                     "header<-",
                                     geno,
                                     upstream,
                                     "upstream<-",
                                     downstream,
                                     "downstream<-",
                                     predictCoding,
                                     locateVariants,
                                     isSNV,
                                     isInsertion,
                                     isDeletion,
                                     isSubstitution,
                                     isDelins,
                                     alt,
                                     ref,
                                     altDepth,
                                     refDepth,
                                     totalDepth)
importMethodsFrom(Rsamtools, headerTabix,
                             scanBamHeader,
                             scanBam)
importMethodsFrom(IRanges, elementNROWS,
                           start,
                           width,
                           flank,
                           nchar,
                           unlist,
                           which,
                           order,
                           togroup,
                           findOverlaps,
                           as.vector,
                           coverage,
                           Views,
                           viewMeans)
importMethodsFrom(GenomicFeatures, exonsBy,
                                   mapToTranscripts)
importMethodsFrom(GenomicRanges, resize,
                                 pintersect,
                                 "ranges<-",
                                 ranges,
                                 show)
importMethodsFrom(Biostrings, getSeq,
                              subseq,
                              unlist,
                              complement,
                              reverseComplement,
                              replaceAt)
importMethodsFrom(AnnotationDbi, get,
                                 select,
                                 keytypes,
                                 columns,
                                 keys)

importFrom(utils, capture.output,
                  combn,
                  installed.packages,
                  read.delim,
                  read.table,
                  sessionInfo,
                  write.csv,
                  write.table)

importFrom(stats, setNames)

importFrom(RBGL, tsort,
                 dijkstra.sp)
importFrom(Rsamtools, TabixFile,
                      TabixFileList,
                      indexTabix,
                      BamViews,
                      bamPaths,
                      bamSamples,
                      ScanBamParam,
                      scanBamFlag,
                      scanBamHeader,
                      bgzip)
importFrom(Seqinfo, seqnames,
                    seqlengths,
                    seqinfo,
                    Seqinfo,
                    restoreSeqlevels,
                    GenomeDescription)
importFrom(GenomeInfoDb, keepStandardChromosomes,
                         keepSeqlevels,
                         extractSeqlevelsByGroup)
importFrom(BSgenome, snpcount,
                     snplocs)
importFrom(SummarizedExperiment, rowRanges)
importFrom(GenomicRanges, GRanges,
                          GRangesList)
importFrom(BiocParallel, bpparam,
                         bpvec,
                         bplapply)
importFrom(IRanges, IRanges,
                    IRangesList,
                    RleList,
                    IntegerList,
                    CharacterList,
                    PartitioningByWidth)
importFrom(Biostrings, DNAStringSet,
                       AAStringSet, 
                       DNAStringSetList,
                       getGeneticCode)
importFrom(VariantAnnotation, AllVariants,
                              CodingVariants,
                              IntronVariants,
                              PromoterVariants,
                              FiveUTRVariants,
                              ThreeUTRVariants,
                              IntergenicVariants,
                              VRanges,
                              VRangesList,
                              softFilter,
                              vcfWhich)
importFrom(Gviz, GenomeAxisTrack,
                 GeneRegionTrack,
                 AnnotationTrack,
                 SequenceTrack,
                 AlignmentsTrack,
                 plotTracks)

importFrom(shinythemes, shinytheme)

importFrom(shinyjs, hide,
                    hidden,
                    onevent,
                    enable,
                    disable,
                    disabled,
                    useShinyjs,
                    alert)

importFrom(DT, dataTableProxy,
               selectPage,
               datatable)

importFrom(shinyTree, shinyTree,
               get_selected,
               renderTree)

exportClasses(FiveSpliceSiteVariants, ThreeSpliceSiteVariants,
              GenePhylostrataDb,
              VariantFilteringParam, VariantFilteringResults,
              WeightMatrix,
              CutoffsList)

exportMethods(summary,
              width,
              conservedPositions,
              wmName,
              wmScore,
              wmFilename,
              wmLocations,
              "wmLocations<-",
              wmStrictLocations,
              "wmStrictLocations<-",
              show,
              xLinked,
              autosomalRecessiveHomozygous,
              autosomalDominant,
              deNovo,
              autosomalRecessiveHeterozygous,
              unrelatedIndividuals,
              filters,
              "filters<-",
              filtersMetadata,
              cutoffs,
              "cutoffs<-",
              "change<-",
              sortings,
              "sortings<-",

              ## for FiveSpliceSiteVariants and ThreeSpliceSiteVariants
              minIntronLength, "minIntronLength<-",
              upstream, "upstream<-",
              downstream, "downstream<-",

              ## specific for VariantFilteringResults
              length,
              softFilterMatrix,
              "softFilterMatrix<-",
              samples, "samples<-",
              resetSamples,
              bamFiles, "bamFiles<-",
              inheritanceModel,
              param,
              allVariants,
              filteredVariants,
              sog,
              annoGroups,

              ## being deprecated
              dbSNPpresent, "dbSNPpresent<-",
              OMIMpresent, "OMIMpresent<-",
              variantType, "variantType<-",
              variantLocation, "variantLocation<-",
              variantConsequence, "variantConsequence<-",
              aaChangeType, "aaChangeType<-",
              MAFpop, "MAFpop<-",
              naMAF, "naMAF<-",
              maxMAF, "maxMAF<-",
              minPhastCons, "minPhastCons<-",
              minPhylostratum, "minPhylostratum<-",
              minScore5ss, "minScore5ss<-",
              minScore3ss, "minScore3ss<-",
              minCUFC, "minCUFC<-",

              ## for the GenePhylostrataDb class
              genePhylostratum,
              genePhylostrata
             )

export(VariantFilteringParam,
       spliceSiteMatricesHuman,
       reportVariants,
       variantLocations,
       readWm,
       readAAradicalChangeMatrix,

       ## for the FiveSpliceSiteVariants and ThreeSpliceSiteVariants
       FiveSpliceSiteVariants, ThreeSpliceSiteVariants,

       ## for the GenePhylostrata class
       GenePhylostrataDb,

       browseVariants
      )
