nP^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None0"Keeps track of model construction ;Static construction optionsP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOK  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJP;<=>?@ABCDEFGHIJ0123456789:O,-./N'()*+M!"#$%& L K   !"#$%&'()*+,-./0 123456789:;<=>?@ABCDEFGHIJKLMNONone5b,Data structure for RNAcentral entry response Send query and parse return XML "Send query and return response XMLh4Function for querying the RNAcentral REST interface.rFunction for delayed queries to the RNAcentral REST interface. Enforces the maximum 20 requests per second policy.YZ[\]^_`abcdefghijklmnopYZ][_^\`abcdgefhijklhjkilbcdefgYZ[\]^_`aYZ[\]^_`abcdefghijklmnopNonew'parse from input filePath x'parse from input filePath y/parse from input filePath z/parse from input filePath VParsing function for CMSearches with multiple querymodels in one modelfile, e.g. clans{'parse from input filePath |/parse from input filePath wxyz{|Q  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJwxyz{|yzwx{|wxyz{|NoneOT'}\Initial RNA family model construction - generates iteration number, seed alignment and modelHReevaluate collected potential members for inclusion in the result model Computes size of blast db in Mb |Replaces structure of input stockholm file with the consensus structure of alifoldFilepath and outputs updated stockholmfile*Used for passing progress to Alien server *Used for passing progress to Alien server }Filter duplicates removes hits in sequences that were already collected. This happens during revisiting the starting subtree.!Filter a list of similar extended blast hits filterIdenticalSequencesWithOrigin :: [(Sequence,Int,String,Char)] -> Double -> [(Sequence,Int,String,Char)] filterIdenticalSequencesWithOrigin (headSequence:rest) identitycutoff = result where filteredSequences = filter (x -> (sequenceIdentity (firstOfQuadruple headSequence) (firstOfQuadruple x)) < identitycutoff) rest result = headSequence:(filterIdenticalSequencesWithOrigin filteredSequences identitycutoff) filterIdenticalSequencesWithOrigin [] _ = []/Filter a list of similar extended blast hits 9Filter sequences too similar to already aligned sequences)Filter alignment entries by similiarity JCheck if the result field of BlastResult is filled and if hits are presentCompute identity of sequencesQCompute identity of sequences stringIdentity :: String -> String -> Double stringIdentity string1 string2 = identityPercent where distance = ED.levenshteinDistance costs string1 string2 --Replication of RNAz select sequences requires only allowing substitutions costs = ED.defaultEditCosts {ED.deletionCosts = ED.ConstantCost 100,ED.insertionCosts = ED.ConstantCost 100,ED.transpositionCosts = ED.ConstantCost 100} maximumDistance = maximum [length string1,length string2] identityPercent = 1 - (fromIntegral distance/fromIntegral maximumDistance)Compute identity of sequences]Partitions sequences by containing a cmsearch hit and extracts the hit region as new sequencePExtract a substring with coordinates from cmsearch, first nucleotide has index 1&Adds cm prefix to pseudo random numberCreate session id for RNAlienPRun external locarna command and read the output into the corresponding datatypeRun external mlocarna command and read the output into the corresponding datatype, there is also a folder created at the location of the input fasta fileRun external mlocarna command and read the output into the corresponding datatype, there is also a folder created at the location of the input fasta file, the job is terminated after the timeout provided in seconds5Run external clustalo command and return the Exitcode5Run external clustalo command and return the ExitcodeQRun external CMbuild command and read the output into the corresponding datatype ARun CMCompare and read the output into the corresponding datatype Run CMsearch  Run CMstat#Run CMcalibrate and return exitcode#Run CMcalibrate and return exitcode.Hits should have a compareable length to query.Hits should have a compareable length to queryJWrapper for retrieveFullSequence that rerequests incomplete return sequees9NCBI uses the e-Value of the best HSP as the Hits e-ValueHWrapper functions that ensures that only 20 queries are sent per requestHWrapper functions that ensures that only 20 queries are sent per request*Call for external preprocessClustalForRNAzCall for external preprocessClustalForRNAcode - RNAcode additionally to RNAz requirements does not accept pipe,underscore, doublepoint symbols=Sequence preselection for RNAz and RNAcode "Check if alien can connect to NCBI5Blast evalue is set stricter in inital alignment mode}~      !"#$%&'()*+,-f  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJwyz{|}~}yzw~|{}~      !"#$%&'()*+,-.      !"##$%&'(()*+,,-.//01234567899:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'$RNAlien-1.3.7-JLTvD0fvXq626yFSjiYFOKBio.RNAlienDataBio.RNAcentralHTTPBio.InfernalParserBio.RNAlienLibraryCMstat statIndexstatName statAccessionstatSequenceNumberstatEffectiveSequencesstatConsensusLengthstatW statBasepairsstatBifurcations statModelrelativeEntropyCMrelativeEntropyHMM SearchResult candidatesblastDatabaseSize CMsearchHithitRankhitSignificance hitEvaluehitScorehitBiashitSequenceHeaderhitStarthitEnd hitStrandhitModel hitTruncation hitGCContenthitDescriptionCMsearch queryCMfiletargetSequenceDatabasenumberOfWorkerThreads cmsearchHitsSequenceRecordnucleotideSequencealignedrecordDescriptionTaxonomyRecordrecordTaxonomyIdsequenceRecordsModelConstructioniterationNumber inputFasta taxRecordsupperTaxonomyLimittaxonomicContextevalueThresholdalignmentModeInfernalselectedQueriespotentialMembers StaticOptions tempDirPath sessionID nSCICutoff userTaxIdsingleHitperTaxTogglequerySelectionMethod queryNumberlengthFilterTogglecoverageFilterToggleblastSoftmaskingToggle cpuThreads blastDatabasetaxRestrictionverbositySwitch $fShowCMstat$fShowSearchResult$fShowSequenceRecord$fShowTaxonomyRecord$fShowModelConstruction$fShowStaticOptions$fShowCMsearchHit$fEqCMsearchHit$fReadCMsearchHit$fShowCMsearch $fEqCMsearch$fReadCMsearch $fEqCMstat $fReadCMstatRNAcentralEntryurl rnacentral_idmd5sequencelengthxrefs publicationsRNAcentralEntryResponsecountnextpreviousresultsrnaCentralHTTPgetRNACentralEntriesbuildSequenceViaMD5QuerybuildStringViaMD5QueryshowRNAcentralAlienEvaluation$fFromJSONRNAcentralEntry$fToJSONRNAcentralEntry!$fFromJSONRNAcentralEntryResponse$fToJSONRNAcentralEntryResponse$fShowRNAcentralEntry$fEqRNAcentralEntry$fGenericRNAcentralEntry$fShowRNAcentralEntryResponse$fEqRNAcentralEntryResponse $fGenericRNAcentralEntryResponse parseCMSearchparseCMSearches readCMSearchreadCMSearches parseCMstat readCMstatmodelConstructersetInitialTaxId resultSummaryevaluePartitionTrimCMsearchHitscmSearchsubStringcreateSessionIDsystemCMsearch compareCM logMessage logEither checkToolslogToolVersions constructTaxonomyRecordsCSVTable setVerboseevaluateConstructionResultrnaZEvalOutput preprocessClustalForRNAzExternal#preprocessClustalForRNAcodeExternalpreprocessClustalForRNAzcheckNCBIConnection reformatFastacheckTaxonomyRestriction startSession sendQuerydelayedRNACentralHTTP!showRNAcentralAlienEvaluationLine bsreplaceUTgenParserMultipleCMSearchgenParserCMSearchesgenParserCMSearchgenParserCMsearchHeaderFieldgenParserCMsearchEmptyHitgenParserCMsearchHitgenParserCMstatreadInt readDoublereevaluatePotentialMemberscomputeDataBaseSizereplaceStockholmStructureiterationSummaryfilterDuplicatesfilterIdenticalSequencesfilterWithCollectedSequencesfilterIdenticalSequences'blastMatchesPresent textIdentitysequenceIdentityrandomid systemlocarnasystemMlocarnasystemMlocarnaWithTimeoutsystemClustalw2systemClustalo systemCMbuildsystemCMcompare systemCMstatsystemCMcalibrate systemCMalignhitLengthCheck coverageCheckretrieveFullSequences hitEValueretrieveParentTaxIdsEntrezretrieveBlastHitsTaxIdEntrezrnaCodeSelectSeqs2setBlastExpectThresholdcatchAllextractLastTaxIdmodelConstructionResult#alignmentConstructionWithCandidates&alignmentConstructionWithoutCandidatesfindTaxonomyStartsearchCandidatesalignCandidatesalignCandidatesInfernalModealignCandidatesInitialModesetClusterNumberfindCutoffforClusterNumber selectQueriesfilterSequenceById seqenceHasIdconstructModelupdateStructureElementsisStructureLineiterationSummaryLogreadClustaloDistMatrixgenParserClustaloDistMatrixgenParserClustaloDistRowgenParserClustaloDistancegetDistanceMatrixElementsisUnSimilarSequence firstOfTriplegetTaxonomicContextEntrezsetTaxonomicContextEntrezsetUpperLowerTaxLimitEntrezraiseTaxIdLimitEntrez constructNextbuildTaxRecordssameTaxIdAlignmentResultbuildTaxRecordbuildSeqRecordtrimCMsearchHitextractQueriesextractQueryCandidatesbuildTaxFilterQuerybuildHitNumberQueryencodedTaxIDQueryextractCandidateSequencesextractAlignedSequencesfilterByParentTaxIdfilterByHitLengthfilterByCoverageretrieveFullSequencegetRequestedSequenceElementblastHitIsReverseComplement"getForwardRequestedSequenceElementlowerBoundryCoordinateSetterupperBoundryCoordinateSetter"getReverseRequestedSequenceElementalignSequencesconstructFastaFilePathsconstructCMsearchFilePathscompareHitEValue compareTaxId sameTaxIdconvertFastaFoldStockholmconvertClustaltoStockholm mergeEntrybuildStockholmAlignmentEntriesretrieveTaxonomicContextEntrezretrieveParentTaxIdEntrezretrieveBlastHitTaxIdEntrezextractTaxIdFromEntrySummariesextractAccession extractGeneIdextractTaxIdfromDocumentSummary getBestHitgetHitWithFractionEvalue showlines logWarninglogVerboseMessage checkTool!constructTaxonomyRecordCSVEntriesconstructTaxonomyRecordCSVEntrycheckTaxonomyRecordCSVCharcmstatEvalOutputrnaCodeEvalOutputshowRNACodeHitsformatIdMatrixselectEntryIndicessetEmptyConservationTrackisGapcomputeEntryCostgetEntryIdentitiesisIIdxisJIdx computeCostcompareEntryCost2preFilterIdentityMatrixcheckIdentityEntrycomputeSequenceIdentityMatrixcomputeSequenceIdentityEntry notDoubleGapreformatRNACodeIdreformatRNACodeAln reformatAlnreformatFastaSequencesetRestrictedTaxonomyLimitscheckTaxonomyRestrictionStringextractAlignmentSequencesByIdsextractAlignmentSequencesfilterSequencesById sequenceHasIdfilterAlnCharsmergeIdSeqTuplestoSequence