def computeSimilarity(dataArray):
    start = time()
    sampleIDList = dataArray[8]
    n = len(sampleIDList)
    matrix = np.zeros((n,n))
    for i in range(n):
        for j in range(i,n):
            #Total ratio computation
            common,in1,in2,_,_,_,_,_ = compute(dataArray[7],[sampleIDList[i]],[sampleIDList[j]])
            commonA = countAssignmentsInCommon(common,[sampleIDList[i]],[sampleIDList[j]])
            numberA1 = countAssignments(in1,[sampleIDList[i]])
            numberA2 = countAssignments(in2,[sampleIDList[j]])
            tratio = totalRatio(commonA,numberA1,numberA2)
            #Pattern ratio computation
            commonPatternsList = enumerateCommonPatterns(dataArray[7],[sampleIDList[i]],[sampleIDList[j]])
            specificPatternsList1 = enumerateSpecificPatterns(dataArray[7],[sampleIDList[i]],[sampleIDList[j]])
            specificPatternsList2 = enumerateSpecificPatterns(dataArray[7],[sampleIDList[i]],[sampleIDList[j]])
            pRatio = patternRatio(commonPatternsList,specificPatternsList1,specificPatternsList2)
            #Diversity coefficient
            dRatio1,_ = computeDiversityCoefficient(dataArray[5],[sampleIDList[i]],dataArray)
            dRatio2,_ = computeDiversityCoefficient(dataArray[5],[sampleIDList[j]],dataArray)
            subdRatio = abs(dRatio1 - dRatio2)
            if subdRatio:
                s = sumOpInf(pRatio,tratio) - subdRatio
            else:
                s = sumOpInf(pRatio,tratio)
            matrix[i][j] = s
            matrix[j][i] = s
    end = time()
    print "TIME:",(end-start)
    return matrix
Пример #2
0
def diversityAct(dataArray):
    sampleNameList,metadata,interval1,interval2 = createSampleNameList(dataArray)
    #@dataArray[5] = n is the number of nodes in the taxonomic tree
    coefficient,sample = computeDiversityCoefficient(dataArray[5],sampleNameList,dataArray)
    print "\nMicrobial Diversity coefficient is: " + str(coefficient)
    print "[If you have obtained -inf, it could mean the taxonomic tree is actually empty.]\n"
    answer = raw_input("Save the results? Y/N\n")
    if (answer == "Y"):
        data = "Microbial Diversity Results ****\n for lists " + str(sampleNameList) + "\n"
        if metadata:
            data += "selected on metadata: " + str(metadata) + "with extreme values: " + str(interval1) + " (lower bounds) and " + str(interval2) + " (upper bounds) \n"
        data += "\nMicrobial Diversity coefficient is: " + str(coefficient) +"\n\nEND OF FILE ****"  
        writeFile(data,"","text")
    elif not (answer == "N"):
        print "/!\ You should answer 'Y' or 'N'!"
    answer = raw_input("Do you want to display the pie chart of the assignments to the taxonomic tree in the selected samples? Y/N\n")
    if (answer == "Y"):
        plotPieChart([sample1[0] for sample1 in sample],[sample1[1] for sample1 in sample],"Assignments to the taxonomic tree in " + str(sampleNameList[:3]))
    elif not (answer == "N"):
        print "/!\ You should answer 'Y' or 'N'!"