úÎ$'|e      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNoneI#  !""  !# !  "    !"NoneV Faster nubW&Extract sequence from a fasta sequenceX Sort a tupleY'Group together fasta entires by a fieldeGet a field from a fasta headerZCut off the ends of a sequence[ Sum up a mapVWXYeZ[VWXYZ[WXVYZ[VWXYeZ[None\&Print the BLOSUM matrix as a dataframe]DPrint the BLOSUM matrix as a csv matrix according to a certain order\]\]\]\]None$ffZip positions into fasta sequences with a certain size (number of sequences in a cluster) of AA pairsg2Zip positions into sequences to get position pairs^FGet the frequencies of amino acid pairs for each position in a cluster_NFilter gaps out of the map. If no gaps are wanted, remove the entire position`tGet the frequency matrix from a list of frequency maps from clusters. We no longer care about positions after this.a=Join together all frequency maps into a single frequency map.b&Get the blosum matrix of each AA entry fg^_hi`ab^_`ab_^`ab fg^_hi`abNone$j1Like hamming, but similarity rather than distancecqTakes in an identity and fasta sequences and returns the sequences grouped together by hamming distance identitykMKeep comparing clusters until no more fusions (no change in size) make sensedeGroup together by all pairings rather than adjacent. Altered from lyxia's original to use sequences.lCHelper to groupBy'. Altered from lyxia's original to use sequences.m'Either the sequences are similar or notn&Get the identity between two sequencesjckdlmncdcdjckdlmno        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh%blosum-0.1.1.3-HHiTIUzwpa4HcV8FsJxytvTypesUtilityPrintMatrixClusterBlosumunBlosum FrequencyMapunFrequencyMapBlockMap unBlockMapAAMapunAAMapClusterFrequencyMapunClusterFrequencyMap ClusterMap unClusterMap BlosumVal unBlosumValIdentityPosition FrequencyFieldNucAAunAA $fMonoidAAMap$fEqAA$fOrdAA$fShowAA$fReadAA$fEqNuc$fOrdNuc $fShowNuc $fReadNuc $fEqField $fEqFrequency$fOrdFrequency$fNumFrequency$fEnumFrequency$fShowFrequency$fReadFrequency$fFractionalFrequency $fEqPosition $fOrdPosition $fNumPosition$fEnumPosition$fShowPosition$fReadPosition $fEqIdentity $fOrdIdentity $fNumIdentity$fShowIdentity$fReadIdentity $fEqBlosumVal$fOrdBlosumVal$fNumBlosumVal$fEnumBlosumVal$fShowBlosumVal$fReadBlosumVal$fEqClusterMap$fOrdClusterMap$fShowClusterMap$fEqClusterFrequencyMap$fOrdClusterFrequencyMap$fShowClusterFrequencyMap $fEqAAMap $fOrdAAMap $fShowAAMap $fEqBlockMap $fOrdBlockMap$fShowBlockMap$fEqFrequencyMap$fOrdFrequencyMap$fShowFrequencyMap $fEqBlosum $fOrdBlosum $fShowBlosumnub'getSeq sortTuple groupBlockscutEndssumMap printBlosumprintBlosumCSVgetClusterFrequencyMap removeChar getBlockMap joinBlockMaps getBlosumgetClusterIdentitygroupBy'getFieldzipSize zipPosition collectPairstoAAMap negHammingclusterIdentityGoeqTo compareSeqs getIdentity