'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        None,/059:;<=@DIQRT[b Secondary structure using () for paired elements, and ., for unpaired ones. It is assumed that the ()* match up. These structures from a Monoid. Ensemble structure encoding. *Very* different type ctor name chosen! The structure of this string makes verification much more complicated.?TODO describe encoding used by RNAfold for the ensemble string.Cofolded structure.$+Capture what might be wrong with the RNAss.*-A Prism that turns ByteStrings with a single & into RNAds.+Isomorphism from RNAds to  (RNAss,RNAss). The RNAss are only legal if taken both: rnassFromDimer . both.,"Try to create a dimeric structure.-JVerifies that the given RNAss is properly formatted. Otherwise, error out.TODO Implement! Check with BiobaseXNA and the stack effort in there. This might influence if the verification goes into BiobaseXNA and happens via an Iso'.8 Transform an  into a set of base pairs (i,j). The pairs are 0-based.9/RNA pair set, but a transformation error calls error.:ECalculates the number of different base pairs betwwen two structures." !"#$%&'()*+,-./789:; !"#$%&'()*+,-789:"  )(/*+,$%&'.-!"#7;89:  !"#$%&'()*+,-./789:;None,/059:;<=@DIQRT[b<=>?@ABCDEFGHIJKLPQRSTUW PQ<=>?@AB$<=>LKJIBA@?HGFEDCWQPWQPWQPWQPWQPUTSR<=>?@ABCDEFGHIJKLRSTUWQPNone,/059:;<=@DIQRT[b ZA sequence identifier. Just a newtype wrapped text field. Because we can never know what people are up to, this is utf8-encoded. TODO Provide Iso' for Text, too?dA short RNA sequence.It is an instance of  to allow 'RNAseq (BS.pack "cag") ^? ix 2 == Just g.h.Convert to a string in a unicode-aware manner.pA short DNA sequence.dNote everything really long should be handled by specialized libraries with streaming capabilities. The complement of a biosequence.;Transcribes a DNA sequence into an RNA sequence. Note that c is actually very generic. We just define its semantics to be that of biomolecular transcription." makes the assumption that, given  DNA -> RNA%, we transcribe the coding strand. Ehttp://hyperphysics.phy-astr.gsu.edu/hbase/Organic/transcription.html@ DNAseq ACGT ^. transcribe == RNAseq ACGU RNAseq ACGU ^. transcribe == DNAseq ACGT RNAseq ACGU( ^. from transcribe :: DNAseq == DNAseq ACGT @Simple case translation from U to T'. with upper and lower-case awareness. Single character RNA complement.Simple case translation from T to U' with upper- and lower-case awareness. Single character DNA complement.>Transcribe a RNA sequence into an DNA sequence. This does not reverse the sequence!>Transcribe a DNA sequence into an RNA sequence. This does not reverse the sequence!#Z[\defghipqrstuvwZ[\defghpqrst#Z[\gihdefswvtupqrZ[\defghipqrstuvwNone,/059:;<=@DIQRT[bDiscretized log-odds.KThe BLOSUM matrices, for example, store data in discretized log-odds form.7TODO Might move up even higher into statistics modules. None,/059:;<=@DIQRT[bSmall numbers.;Very large and small numbers with some numerical safety to 1/0 or maxBound (depending on if we are Integral or  RealFloat.We have: #maxFinite >= maxExtreme >= maxLarge maxLarge >= minLarge#minLarge >= minExtreme >= minFinite. None,/059:;<=@DIQRT[bAdd Text and return Inte key. Will return key for existing string and thereby serves for lookup in left-to-right direction. Lookup the InternedMultiChar based on an Int" key. Unsafe totality assumption.None,/059:;<=@DIQRT[b$A species name. Represented with an Int, but behaves like a Text.;The taxonomic rank. This encodes the name for a given rank.<Smart constructor that performs the correct internalization. +None,/059:;<=@DIQRT[b A linear Int-based index type.Turn an  into an  safely.Produce  and  or .  None,/059:;<=@DIQRT[b One-based indices.Zero-based indices.Uses  to guarantee that the  is ok.Re-Index an index of type Index n as Index m. This is always safe, as  0 :: Index 0 gives  1 :: Index 17 for example. I.e. valid indices become valid indices.Helper function that allows addition of an  and an  , with the  on the right. Unsafe plus.Helper function that allows  subtraction of an  and an  , with the  on the right.Delta between two  points. Unsafe minus.Return the index as an Int -style index that is zero-based.As an index from an Int-style zero-based one.1TODO We might want to check that the argument is [0..].   None,/059:;<=@DIQRT[bType-safe wrapper for e-values.By default, we expect no hits.                 None,/059:;<=@DIQRT[bGibbs free energy change.\For RNA structure, the change in energy from the unfolded structure to the given structure. In units of  kcal / mol.,TODO shall we phantom-type the actual units?'round $ DG / 100.'()*+,-./0124?@ABCDEFGI *?+@'()24+*4+*4+*4+*4+*210/.-,'()I@?I@?I@?I@?I@?GFEDCBA'(),-./0124+*ABCDEFGI@? None,/059:;<=@DIQRT[bMmBit score; behaves like a double (deriving Num). In particular, the algebraic operations behave as expected *Bitscore a + Bitscore b == Bitscore (a+b).#Currently geared towards use as in Infernal and HMMER.?Infernal users guide, p.42: log-odds score in log_2 (aka bits).`CGiven a null model and a probability, calculate the corresponding BitScore.TODO  x<=epsilon ?aGiven a null model and a BitScore& return the corresponding probability.b,A default bitscore of "-infinity", but with 10-1 wiggle room.5TODO Check out the different "defaults" Infernal usesMNOPQRSTU^_`abd ^_MNO`aMNOUTSRQPd_^d_^d_^d_^d_^b`a MNOPQRSTU`abd_^ None,/059:;<=@DIQRT[b g&Species have an accession number, too.i<Tag as being an Rfam model. Used for Stockholm and CM files.kTag as being a Pfam model.mTag as being a clan.oprotein sequenceqnucleotide sequences>The accession number is a unique identifier in bioinformatics.Depending on the source, accession numbers follow different alphanumeric formats! While letters-than-numbers is quite common, swissprot uses a mix. Hence, we just use a text string as accession.tA phantom type is provided to enable type safety annotations. Helper functions provide smart construction from the  Accession tagged generic type.v5Generate an accession with an explicit phantom type: accession' Nucleotide Bla has type :: Accession Nucleotide.w$Generate an accession when the type  Accession t is clear from the context.xRetag an accessiony,Guess the type of accession number. Returns Nothing if unknown structure.ghijklmnopqrstuvwxyz{|}~ghijklmnopqrstuvwxystuvwx~}|{zqropmnklijghyghijklmnopqrstuvwxyz{|}~None,/059:;<=@DIQRT[bTaxonomic classification. Enum together with a final Unknown is somewhat fishy.KA somewhat generic representation of a species within a taxonomic context."the full, formal name of a species"the accession for the species (or "" if unknown)&vector with classification information*  !"##$%&'()*+,-../00123456789:;<=>?@ABCDEFGGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmmnopqrstuvwxxyz{|}~^                                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f f g g h h i i j j k k l l m n o p q r s t u v w x y z { | }~fo+BiobaseTypes-0.1.3.0-7EMqsaldKh99G4UiC4Kzi1Biobase.Types.StructureBiobase.Types.StrandBiobase.Types.SequenceBiobase.Types.OddsBiobase.Types.NumericalExtremesBiobase.Types.Names.InternalBiobase.Types.NamesBiobase.Types.Index.TypeBiobase.Types.IndexBiobase.Types.EvalueBiobase.Types.EnergyBiobase.Types.BitscoreBiobase.Types.AccessionBiobase.Types.TaxonomyRNAss_rnass $fEqRNAss $fOrdRNAss $fShowRNAss $fReadRNAss $fDataRNAss$fGenericRNAss $fMonoidRNAssRNAensembleStructureRNAes_rnaesrnass $fNFDataRNAss$fEqRNAensembleStructure$fOrdRNAensembleStructure$fShowRNAensembleStructure$fReadRNAensembleStructure$fDataRNAensembleStructure$fGenericRNAensembleStructureRNAds_rnadsL_rnadsRrnaes$fNFDataRNAensembleStructure $fEqRNAds $fOrdRNAds $fShowRNAds $fReadRNAds $fDataRNAds$fGenericRNAdsRNApset_rnapsetRNAStructureError_rnaStructureError _rnaOffenderrnadsLrnadsRrnadsrnads2rnassPairmkRNAds verifyRNAss$fNFDataRNAStructureError $fNFDataRNAds$fShowRNAStructureError$fGenericRNAStructureError $fReadRNApset $fShowRNApset $fEqRNApset $fOrdRNApset$fGenericRNApsetrnapset rnassPairSet rnassPairSet'pairDist$fNFDataRNApsetStrand getStrand AntiSenseSenseMP$fNFDataStrand$fHashableStrand$fFromJSONStrand$fToJSONStrand$fSerializeStrand$fBinaryStrand $fEnumStrand$fBoundedStrand $fReadStrand $fShowStrand $fEqStrand $fOrdStrand$fGenericStrandV_Strand MV_Strand$fArbitraryStrand$fIndexStreamStrand$fIndexStream:. $fIndexStrand$fVectorVectorStrandD:R:VectorStrand0$fMVectorMVectorStrand $fUnboxStrand SequenceID _sequenceID$fDataSequenceID$fGenericSequenceID$fEqSequenceID$fOrdSequenceID$fReadSequenceID$fShowSequenceID$fIsStringSequenceIDRNAseq_rnaseq sequenceIDsequenceIDstring$fNFDataSequenceID $fDataRNAseq$fGenericRNAseq $fEqRNAseq $fOrdRNAseq $fReadRNAseq $fShowRNAseqDNAseq_dnaseqrnaseqmkRNAseq$fIsStringRNAseq $fIxedRNAseq$fNFDataRNAseq $fDataDNAseq$fGenericDNAseq $fEqDNAseq $fOrdDNAseq $fReadDNAseq $fShowDNAseq$fReversingRNAseq Complement complement Transcribe TranscribeTo transcribednaseqmkDNAseqrna2dna rnaComplementdna2rna dnaComplement$fComplementRNAseq$fComplementDNAseq$fTranscribeRNAseq$fTranscribeDNAseq$fIsStringDNAseq $fIxedDNAseq$fNFDataDNAseq$fReversingDNAseqDLOgetDLO $fGenericDLO$fEqDLO$fOrdDLO $fShowDLO $fReadDLOV_DLOMV_DLO $fNFDataDLO $fHashableDLO $fToJSONDLO $fFromJSONDLO$fSerializeDLO $fBinaryDLO$fVectorVectorDLOD:R:VectorDLO0$fMVectorMVectorDLO $fUnboxDLONumericalEpsilonepsilonNumericalExtremes maxFinite minFinite maxExtreme minExtrememaxLargeminLarge$fNumericalEpsilonDouble$fNumericalExtremesDouble$fNumericalExtremesIntspeciesNameBimapspeciesNameBimapAddspeciesNameBimapLookupInt SpeciesNamegetSpeciesNameRep$fEqSpeciesName$fGenericSpeciesName TaxonomicRankgetTaxonomicRank V_SpeciesNameMV_SpeciesName speciesName$fToJSONTaxonomicRank$fFromJSONTaxonomicRank$fSerializeTaxonomicRank$fBinaryTaxonomicRank$fReadTaxonomicRank$fHashableTaxonomicRank%$fConvertibleStringsTaxonomicRankText%$fConvertibleStringsTextTaxonomicRank$fNFDataTaxonomicRank$fToJSONSpeciesName$fFromJSONSpeciesName$fSerializeSpeciesName$fBinarySpeciesName$fNFDataSpeciesName#$fConvertibleStringsSpeciesNameText#$fConvertibleStringsTextSpeciesName$fHashableSpeciesName$fReadSpeciesName$fShowSpeciesName$fIsStringSpeciesName$fOrdSpeciesName$fVectorVectorSpeciesNameD:R:VectorSpeciesName0$fMVectorMVectorSpeciesName$fUnboxSpeciesName$fIsStringTaxonomicRank$fEqTaxonomicRank$fOrdTaxonomicRank$fShowTaxonomicRank$fGenericTaxonomicRankIndexgetIndexindex maybeIndex$fHashableIndex$fFromJSONIndex $fToJSONIndex$fSerializeIndex $fBinaryIndex $fNFDataIndex $fNumIndex $fShowIndex $fReadIndex $fEqIndex $fOrdIndex$fGenericIndex $fIxIndexV_IndexMV_Index$fArbitraryIndex$fIndexStreamIndex $fIndexIndex$fVectorVectorIndexD:R:VectorIndex0$fMVectorMVectorIndex $fUnboxIndexI1I0 checkIndexreIndex+. unsafePlus-.delta unsafeMinustoInt0fromInt0Evalue getEvalue$fNFDataEvalue$fToJSONEvalue$fSerializeEvalue$fHashableEvalue$fFromJSONEvalue$fBinaryEvalue $fEqEvalue $fOrdEvalue $fReadEvalue $fShowEvalue $fNumEvalue$fGenericEvalueV_Evalue MV_Evalue$fNumericalExtremesEvalue$fDefaultEvalue$fVectorVectorEvalueD:R:VectorEvalue0$fMVectorMVectorEvalue $fUnboxEvalueDGdG$fEqDG$fOrdDG$fNumDG$fFractionalDG$fReadDG$fShowDG $fGenericDG$fDataDGDeltaDekaGibbsDekaGgetDekaGV_DGMV_DG $fDefaultDG $fNFDataDG $fToJSONDG $fFromJSONDG $fSerializeDG $fBinaryDG $fHashableDG$fVectorVectorDG D:R:VectorDG0$fMVectorMVectorDG $fUnboxDG$fEqDeltaDekaGibbs$fOrdDeltaDekaGibbs$fNumDeltaDekaGibbs$fReadDeltaDekaGibbs$fShowDeltaDekaGibbs$fGenericDeltaDekaGibbs$fNumericalEpsilonDG$fNumericalExtremesDGV_DeltaDekaGibbsMV_DeltaDekaGibbs$fDefaultDeltaDekaGibbs$fNFDataDeltaDekaGibbs$fToJSONDeltaDekaGibbs$fFromJSONDeltaDekaGibbs$fSerializeDeltaDekaGibbs$fBinaryDeltaDekaGibbs$fHashableDeltaDekaGibbs$fVectorVectorDeltaDekaGibbsD:R:VectorDeltaDekaGibbs0$fMVectorMVectorDeltaDekaGibbs$fUnboxDeltaDekaGibbs!$fNumericalExtremesDeltaDekaGibbsBitscore getBitscore$fNFDataBitscore$fToJSONBitscore$fSerializeBitscore$fHashableBitscore$fFromJSONBitscore$fBinaryBitscore $fEqBitscore $fOrdBitscore$fReadBitscore$fShowBitscore $fNumBitscore$fFractionalBitscore$fGenericBitscore$fNumericalExtremesBitscore V_Bitscore MV_Bitscore prob2Score score2Prob$fDefaultBitscore$fVectorVectorBitscoreD:R:VectorBitscore0$fMVectorMVectorBitscore$fUnboxBitscoreSpeciesRfamPfamClanProtein Nucleotide Accession _getAccession accession' accessionretagAccessionguessAccessionType$fNFDataAccession$fToJSONAccession$fSerializeAccession$fHashableAccession$fFromJSONAccession$fBinaryAccession$fIsStringAccession $fEqAccession$fOrdAccession$fReadAccession$fShowAccession$fGenericAccessionClassificationKingdomPhylumClassOrderSubOrderFamilyGenusUnknown$fNFDataClassification$fToJSONClassification$fSerializeClassification$fHashableClassification$fFromJSONClassification$fBinaryClassification$fEqClassification$fOrdClassification$fReadClassification$fShowClassification$fEnumClassification$fGenericClassificationTaxonspeciesclassificationV_ClassificationMV_Classification$fHashableTaxon $fNFDataTaxon $fToJSONTaxon$fSerializeTaxon$fFromJSONTaxon $fBinaryTaxon$fVectorVectorClassificationD:R:VectorClassification0$fMVectorMVectorClassification$fUnboxClassification $fEqTaxon $fReadTaxon $fShowTaxon$fGenericTaxon&vector-0.12.0.1-BtK5bVORdhu8bC6gqUfFYiData.Vector.Unboxed.BaseVectorMVector"lens-4.15.4-KUno97tdZMYJKCU13eoExKControl.Lens.AtIxedghc-prim GHC.TypesIntbaseGHC.BaseJustNothing