def get_Hao(seq_x: SequenceData, seq_y: SequenceData, k: int, result: Result, r: int = None) -> None:
        if k < 2:
            return
        ktuple_1 = seq_x.get_ktuple(k)
        total_1 = seq_x.get_total(k)
        markov_1 = seq_x.get_markov(k, k - 2)

        ktuple_2 = seq_y.get_ktuple(k)
        total_2 = seq_y.get_total(k)
        markov_2 = seq_y.get_markov(k, k - 2)
        res = Dissimilarity._get_Hao(ktuple_1, ktuple_2, total_1, total_2, markov_1, markov_2)
        key = 'Hao_k{}'.format(k)
        result.add(key, seq_x.id, seq_y.id, res)
    def get_D2S(seq_x: SequenceData, seq_y: SequenceData, k: int, result: Result, r_list: List[int]) -> None:
        for r in r_list:
            if k < r or k < 3:
                continue
            ktuple_1 = seq_x.get_ktuple(k)
            total_1 = seq_x.get_total(k)
            markov_1 = seq_x.get_markov(k, r)

            ktuple_2 = seq_y.get_ktuple(k)
            total_2 = seq_y.get_total(k)
            markov_2 = seq_y.get_markov(k, r)
            res = Dissimilarity._get_D2S(ktuple_1, ktuple_2, total_1, total_2, markov_1, markov_2)
            key = 'D2S_k{}_M{}'.format(k, r)
            result.add(key, seq_x.id, seq_y.id, res)
 def get_Ma(seq_x: SequenceData, seq_y: SequenceData, k: int, result: Result, r: int = None) -> None:
     ktuple_1 = seq_x.get_ktuple(k)
     ktuple_2 = seq_y.get_ktuple(k)
     res = Dissimilarity._get_Ma(ktuple_1, ktuple_2, seq_x.get_total(k), seq_y.get_total(k))
     key = 'Ma_k{}'.format(k)
     result.add(key, seq_x.id, seq_y.id, res)