Python将增量范围的百分比分组并计算分组数

时间:2018-11-26 14:38:13

标签: python python-3.x

我有3组列表,分别是A组中的A1,A2,A3,B组中的B1,B2,B3, 以及C组中的C1,C2,C3。

a1 = ["ID_A1", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'G', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'C']]
a2 = ["ID_A2", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'G', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'T']]
a3 = ["ID_A3", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'G', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'G']]

b1 = ["ID_B1", ['C', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'C', 'T', 'T', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'A', 'A', 'C', 'T', 'C']]
b2 = ["ID_B2", ['C', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'C', 'T', 'T', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'A', 'A', 'C', 'A', 'C']]
b3 = ["ID_B3", ['C', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'C', 'T', 'T', 'T', 'C', 'C', 'A', 'C', 'C', 'A', 'A', 'A', 'C', 'G', 'C']]

c1 = ["ID_C1", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'A', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'T']]
c2 = ["ID_C2", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'G', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'T']]
c3 = ["ID_C3", ['T', 'T', 'C', 'C', 'A', 'C', 'A', 'G', 'C', 'T', 'T', 'T', 'T', 'C', 'G', 'C', 'C', 'A', 'A', 'G', 'C', 'T', 'G']]

data_set = [a1, a2, a3, b1, b2, b3, c1, c2, c3]

我已经将它们的相似性与以下代码进行了比较:

def compare(_from, _to):
    similarity = 0
    length = len(_from)
    if len(_from) != len(_to):
        raise Exception("Cannot be compared due to different length.")
    for i in range(length):
        if _from[i] == _to[i]:
            similarity += 1
    return similarity / length * 100

result = list()

for entry1 in data_set:
    for entry2 in data_set:
        percentage = compare(entry1[1], entry2[1])
        print("Compare ", entry1[0], " to ", entry2[0], "Percentage :", round(percentage, 2))
        result.append(round(percentage, 2))
print(result)

我希望不是按照自己的相似度值将所有相似度归类为一组,而是希望将其以95%到96%的范围(以0.1为增量)进行分组,这取决于用户如何输入范围。我希望它有0.1的增量,因为我有非常大的数据,但是我不能在这里插入。当我循环组(A从ID_A1与ID_C3比较)时,每95%至96%的人将被分组为组A,组的数量= 1,而当我循环组(B从ID_A1与ID_C3比较)时,每个95%到96%的人将分为B组,而组数将为+1。我想要的结果显示的组总数为95%到96%。

我想添加一些东西,如果在95.0%到96.0%的范围内,如果分别为95.5%和95.6%,如何将它们分组为单个组?

示例输出如下:

"In the range of 95% to 96%, there is 1 group of 95.5% and 1 group of 95.6%"
"Total number of groups: ... "

PS:我需要使用组数来绘制图形

0 个答案:

没有答案