useDynLib(Biostrings)

import(methods)
importFrom(graphics, "axis", "legend", "lines", "par", "plot.new",
           "plot.window", "title")
importFrom(stats, "chisq.test", "complete.cases", "diffinv",
           "pchisq")
importFrom(utils, "data")
import(IRanges)
importFrom(Biobase, "addVigs2WinMenu")


### ==========================================================================
### BASIC CONTAINERS
### --------------------------------------------------------------------------
###   IUPAC_CODE_MAP.R
###   AMINO_ACID_CODE.R
###   GENETIC_CODE.R
###   XStringCodec-class.R
###   xsbasetype.R
###   XString-class.R
###   XStringSet-class.R
###   XStringViews-class.R
###   XStringViews-constructors.R
###   MaskedXString-class.R
###   XStringSetList-class.R
###   XKeySortedData-class.R
###   XKeySortedDataList-class.R
###   WCP-class.R
###   xscat.R

exportClasses(
    file, connection,
    XString, BString, DNAString, RNAString, AAString,
    XStringSet, BStringSet, DNAStringSet, RNAStringSet, AAStringSet,
    XStringViews,
    MaskedXString, MaskedBString, MaskedDNAString, MaskedRNAString, MaskedAAString,
    XStringSetList, BStringSetList, DNAStringSetList, RNAStringSetList, AAStringSetList,
    XKeySortedData, BKeySortedData, DNAKeySortedData,
    RNAKeySortedData, AAKeySortedData,
    XKeySortedDataList, BKeySortedDataList, DNAKeySortedDataList,
    RNAKeySortedDataList, AAKeySortedDataList,
    WCP, B_WCP, DNA_WCP, RNA_WCP, AA_WCP
)

export(
    ## IUPAC_CODE_MAP.R + AMINO_ACID_CODE.R + GENETIC_CODE.R:
    IUPAC_CODE_MAP, mergeIUPACLetters,
    AMINO_ACID_CODE, GENETIC_CODE,
    RNA_GENETIC_CODE,

    ## XStringCodec-class.R:
    DNA_BASES, RNA_BASES, DNA_ALPHABET, RNA_ALPHABET, AA_ALPHABET,

    ## xsbasetype.R:
    xsbasetype, "xsbasetype<-", alphabet,

    ## XString-class.R:
    BString, DNAString, RNAString, AAString,

    ## XStringSet-class.R:
    compact, BStringSet, DNAStringSet, RNAStringSet, AAStringSet,
    unsplit.list.of.XStringSet,

    ## XStringViews-constructors.R:
    adjacentViews, XStringViews,

    ## MaskedXString-class.R:
    unmasked,

    ## XStringSetList-class.R:
    partitioning,

    ## XKeySortedData-class.R:
    BKeySortedData, DNAKeySortedData, RNAKeySortedData,
    AAKeySortedData, dataKey, dataTable,

    ## XKeySortedDataList-class.R:
    BKeySortedDataList, DNAKeySortedDataList, RNAKeySortedDataList,
    AAKeySortedDataList,

    ## xscat.R:
    xscat,

    ## Old stuff (Defunct or Deprecated):
    BStringViews
)

exportMethods(
    length,
    nchar, width,
    xsbasetype, "xsbasetype<-",
    updateObject,
    compact,
    names, "names<-", "[", "[[", "[[<-", rep, append,
    union, intersect, setdiff, setequal,
    "%in%", match,
    show,
    "==", "!=", duplicated, unique, is.unsorted, order, sort, rank,
    coerce, as.character, unlist, as.matrix, as.list, toString, toComplex,
    narrow, subseq, threebands, "subseq<-", collapse, gaps,
    Views, XStringViews,
    unmasked, maskedwidth, maskedratio, masks, "masks<-",
    partitioning
)


### ==========================================================================
### UTILITIES
### --------------------------------------------------------------------------
###   readFASTA.R
###   XStringSet-io.R
###   letter.R
###   subXString.R
###   letterFrequency.R
###   dinucleotideFrequencyTest.R
###   chartr.R
###   reverse.R
###   translate.R
###   toComplex.R
###   replaceLetterAt.R
###   injectHardMask.R
###   misc.R

export(
    ## readFASTA.R:
    readFASTA, writeFASTA,

    ## XStringSet-io.R:
    read.BStringSet, read.DNAStringSet, read.RNAStringSet, read.AAStringSet,
    fasta.info, fastq.geometry,
    write.XStringSet,
    save.XStringSet,
    read.XStringViews, write.XStringViews,
    FASTArecordsToCharacter, CharacterToFASTArecords,
    FASTArecordsToXStringViews, XStringSetToFASTArecords,

    ## letter.R:
    letter,

    ## letterFrequency.R:
    letterFrequencyInSlidingView,
    alphabetFrequency, hasOnlyBaseLetters, uniqueLetters,
    consensusMatrix, consensusString,
    mkAllStrings,
    oligonucleotideFrequency,
    dinucleotideFrequency, trinucleotideFrequency,
    nucleotideFrequencyAt,
    oligonucleotideTransitions,

    ## dinucleotideFrequencyTest.R
    dinucleotideFrequencyTest,

    ## reverse.R:
    complement, reverseComplement,
    strrev,

    ## translate.R:
    transcribe, cDNA, dna2rna, rna2dna,
    codons, translate,

    ## extractTranscripts.R:
    transcriptWidths, extractTranscripts, transcriptLocs2refLocs,

    ## toComplex.R:
    toComplex,

    ## replaceLetterAt.R:
    replaceLetterAt, .inplaceReplaceLetterAt,

    ## injectHardMask.R:
    injectHardMask,

    ## misc.R:
    N50,

    ## Old stuff (Defunct or Deprecated):
    FASTArecordsToBStringViews, read.BStringViews, write.BStringViews,
    subXString, subBString,
    consmat,
    replaceLetterAtLoc
)

exportMethods(
    length, names, "[", "[[", rep,
    show,
    "==", "!=", duplicated, unique, is.unsorted, order, sort, rank,
    coerce, as.character, as.matrix, as.list, toString, toComplex,
    letter,
    substr, substring,
    letterFrequencyInSlidingView,
    alphabetFrequency, hasOnlyBaseLetters, uniqueLetters,
    consensusMatrix, consensusString,
    oligonucleotideFrequency,
    nucleotideFrequencyAt,
    dinucleotideFrequencyTest,
    chartr,
    reverse, complement, reverseComplement,
    codons, translate,
    replaceLetterAt,
    maskMotif,
    injectHardMask,

    ## Old stuff (Defunct or Deprecated):
    as.complex,
    consmat
)


### ==========================================================================
### STRING MATCHING
### --------------------------------------------------------------------------
###   SparseList-class.R
###   MIndex-class.R
###   lowlevel-matching.R
###   match-utils.R
###   matchPattern.R
###   matchPattern.BOC.R
###   matchPattern.BOC2.R
###   matchLRPatterns.R
###   trimLRPatterns.R
###   matchProbePair.R
###   matchPWM.R
###   matchWCP.R
###   findPalindromes.R
###   PDict-class.R
###   matchPDict.R

exportClasses(
    #SparseList,
    MIndex, ByPos_MIndex,
    BOC_SubjectString, BOC2_SubjectString,
    PreprocessedTB, Twobit, ACtree2,
    PDict3Parts,
    PDict, TB_PDict, MTB_PDict, Expanded_TB_PDict
)

export(
    ## MIndex-class.R
    width0, startIndex, endIndex, countIndex,
    extractAllMatches,

    ## lowlevel-matching.R
    neditStartingAt, neditEndingAt, neditAt,
    isMatchingStartingAt, isMatchingEndingAt, isMatchingAt,
    which.isMatchingStartingAt, which.isMatchingEndingAt, which.isMatchingAt,
    hasLetterAt,

    ## match-utils.R
    mismatch, nmatch, nmismatch,

    ## matchPattern.R
    gregexpr2, matchPattern, countPattern, vmatchPattern, vcountPattern,

    ## maskMotif.R
    maskMotif, mask,

    ## matchLRPatterns.R
    matchLRPatterns,

    ## trimLRPatterns.R
    trimLRPatterns,

    ## matchProbePair.R
    matchProbePair,

    ## matchPWM.R
    maxWeights, minWeights, maxScore, minScore, unitScale,
    PWM, PWMscoreStartingAt, matchPWM, countPWM,

    ## matchWCP.R
    WCPscoreStartingAt, matchWCP, countWCP,

    ## findPalindromes.R
    findPalindromes, findComplementedPalindromes,
    palindromeArmLength, complementedPalindromeArmLength,
    palindromeLeftArm, complementedPalindromeLeftArm,
    palindromeRightArm, complementedPalindromeRightArm,

    ## PDict-class.R + matchPDict.R
    tb, tb.width, nnodes, hasAllFlinks, computeAllFlinks,
    patternFrequency, PDict,
    matchPDict, countPDict, whichPDict,
    vmatchPDict, vcountPDict, vwhichPDict,
 
    ## Old stuff (Defunct or Deprecated):
    nmismatchStartingAt, nmismatchEndingAt, isMatching,
    matchDNAPattern,
    PWMscore
)

exportMethods(
    initialize, ls,
    length, names, "names<-", show, "[[",
    startIndex, endIndex, countIndex, unlist,
    neditStartingAt, neditEndingAt,
    isMatchingStartingAt, isMatchingEndingAt,
    mismatch, nmatch, nmismatch,
    coverage,
    matchPattern, countPattern, vcountPattern,
    matchLRPatterns, trimLRPatterns,
    matchProbePair,
    maxWeights, minWeights, maxScore, minScore,
    PWM, matchPWM, countPWM,
    matchWCP, countWCP,
    findPalindromes, findComplementedPalindromes,
    palindromeArmLength, complementedPalindromeArmLength,
    palindromeLeftArm, complementedPalindromeLeftArm,
    palindromeRightArm, complementedPalindromeRightArm,

    tb, tb.width, nnodes, hasAllFlinks, computeAllFlinks,
    head, tail,
    patternFrequency, PDict,
    matchPDict, countPDict, whichPDict,
    vmatchPDict, vcountPDict, vwhichPDict
)


### ==========================================================================
### STRING ALIGNMENT
### --------------------------------------------------------------------------
###   XStringPartialMatches-class.R
###   XStringQuality-class.R
###   QualityScaledXStringSet.R
###   InDel-class.R
###   AlignedXStringSet-class.R
###   PairwiseAlignedXStringSet-class.R
###   PairwiseAlignedFixedSubject-class.R
###   align-utils.R
###   pmatchPattern.R
###   pairwiseAlignment.R
###   stringDist.R
###   needwunsQS.R

exportClasses(
    XStringPartialMatches,
    XStringQuality, PhredQuality, SolexaQuality,
    QualityScaledXStringSet,
    QualityScaledBStringSet, QualityScaledDNAStringSet,
    QualityScaledRNAStringSet, QualityScaledAAStringSet,
    InDel,
    AlignedXStringSet0, AlignedXStringSet, QualityAlignedXStringSet,
    PairwiseAlignedXStringSet, PairwiseAlignedFixedSubject,
    PairwiseAlignedFixedSubjectSummary
)

export(
    ## XStringPartialMatches-class.R:
    subpatterns, pattern,

    ## XStringQuality-class.R:
    PhredQuality, SolexaQuality,

    ## QualityScaledXStringSet.R:
    quality,
    QualityScaledBStringSet, QualityScaledDNAStringSet,
    QualityScaledRNAStringSet, QualityScaledAAStringSet,

    ## InDel-class.R:
    insertion, deletion,

    ## AlignedXStringSet-class.R:
    unaligned, aligned, indel, nindel,

    ## PairwiseAlignedXStringSet-class.R:
    PairwiseAlignedXStringSet, type, pid,

    ## PairwiseAlignedFixedSubject-class.R:
    PairwiseAlignedFixedSubject,

    ## align-utils.R:
    nedit,
    mismatchTable, mismatchSummary,
    compareStrings,

    ## pmatchPattern.R:
    lcprefix, lcsuffix, pmatchPattern, lcsubstr,

    ## pairwiseAlignment.R:
    nucleotideSubstitutionMatrix,
    errorSubstitutionMatrices,
    qualitySubstitutionMatrices,
    pairwiseAlignment,

    ## stringDist.R:
    stringDist,

    ## Old stuff (Defunct or Deprecated):
    needwunsQS
)

exportMethods(
    length, "[", rep,
    coerce, as.integer, as.numeric, as.character, as.matrix, toString,
    show, summary,
    start, end, width,
    Views,
    subpatterns, pattern,
    quality,
    insertion, deletion,
    unaligned, aligned, indel, nindel,
    type, score, pid,
    PairwiseAlignedXStringSet, PairwiseAlignedFixedSubject,
    mismatch, nmatch, nmismatch, nedit,
    mismatchTable, mismatchSummary, coverage,
    compareStrings,
    lcprefix, lcsuffix, pmatchPattern, lcsubstr,
    pairwiseAlignment, stringDist,

    ## Old stuff (Defunct or Deprecated):
    needwunsQS
)


### ==========================================================================
### STUFF THAT BELONGED ORIGINALLY TO OLD matchprobes PACKAGE AND IS NOW
### SUPERSEDED BY SOME NATIVE Biostrings FUNCTIONALITY
### --------------------------------------------------------------------------
###   matchprobes.R

export(
    ## Used in ecolitk, arrayQualityMetrics (vignette only),
    ## Ringo (just mentioned in a \seealso section),
    ## ITALICS and tilingArray (in a Sweave document only).
    ## (makePlatformDesign and oligo define their own basecontent)
    basecontent,

    countbases,
    complementSeq,
    reverseSeq,
    revcompDNA,
    revcompRNA,
    longestConsecutive,
    matchprobes
)

