Modify the Jukes-Cantor function to compute the distance matrix for genome sequences. For a pair of genomes x and y we define the evolutionary distance to be ( Unique common kmers between x and y ) d(x,y) = -ln( -------------------- ) ( Min(total unique kmers in x, total unique kmers in y) You will also need a modified version of the function fast_blast_score written in the alignment library. Both original functions are given below. Submit hardcopies in class on Apr 15th. def distance_matrix(data, D): for i in range(1, len(data), 2): l = [] for j in range(1, len(data), 2): seq1 = data[i] seq2 = data[j] pab = 0 for k in range(0, len(seq1), 1): if seq1[k] != seq2[k]: pab += 1 pab = pab/len(seq1) l.append(-3/4*math.log(1-4/3*pab)) D.append(l) return def fast_blast_score(seq1,seq2): kmerlength = 30 dseq1 = {} dseq2 = {} for i in range(0, len(seq1)-kmerlength+1, 1): kmer = seq1[i:i+kmerlength] dseq1[kmer] = 1 for i in range(0, len(seq2)-kmerlength+1, 1): kmer = seq2[i:i+kmerlength] dseq2[kmer] = 1 k = list(dseq1.keys()) count = 0 for i in range(0, len(k), 1): if k[i] in dseq2: count += 1 return count