生信分析之环状RNA和疾病关联的一些相似度分析

用于记录自己做生信环状RNA和疾病关联的一些用到的数据。

疾病语义相似度

生信分析疾病语义相似度dosim,从零开始。-CSDN博客

本文代码来自ABard0/MDGF-MCEC (github.com)

环状RNA功能相似度

论文里的计算原理是这样的

import pandas as pd
import numpy as np

dis_ss = pd.read_csv('data/disease_ss.csv', header=0).values
cd_adjmat = pd.read_csv('data/assocaitions.csv', header=0).values

rows = len(cd_adjmat)
result = np.zeros([rows, rows])

for i in range(rows):
    index_list = []
    for k in range(len(cd_adjmat[1])):
       if cd_adjmat[i][k] == 1:
           index_list.append(k)    ##和i相关的疾病列表
    if len(index_list) == 0:
        continue
    for j in range(0, i+1):
        index_list2 = []
        for k in range(len(cd_adjmat[1])):
            if cd_adjmat[j][k] == 1:
                index_list2.append(k)   ##和j相关的疾病列表
        if len(index_list2) == 0:
            continue
        sum1=0
        sum2=0

        for k1 in range(len(index_list)):  #第一项,每个K1和另一个整个列表的相似度
            sum1 = sum1 + max(dis_ss(index_list[k1], index_list2))
        for k2 in range(len(index_list2)): ##第二项
            sum2 = sum2 + max(dis_ss(index_list, index_list2[k2]))
        result[i, j] = (sum1 + sum2) / (len(index_list) + len(index_list2))
        result[j, i] = result[i, j]

for t in range(rows):
    result[t][t] = 1

result = pd.DataFrame(result)
result.to_csv('output/circFuncSimilarity.csv')

高斯核相关性

公式:

import numpy as np
import pandas as pd
import math

# 读取数据

association_matrix = pd.read_csv('output/association_matrix.csv', header=None, encoding='gb18030').values

# 计算disease之间的相似度

association_matrix = association_matrix.T


disease_similarity = np.zeros([100, 100])  # 100种病之间的相似度,初始化矩阵

width = 0
print('width is :', width)
for m in range(100):
    width += np.sum(association_matrix[m]**2)**0.5  
# 按定义用二阶范数计算width parameter

print('width is :', width)

# 计算association_matrix
count = 0
for m in range(100):
    for n in range(100):
        disease_similarity[m, n] = math.exp((np.sum((association_matrix[m] - association_matrix[n])**2)**0.5
                                        * width/100) * (-1))  # 计算不同行(disease)之间的二阶范数
        if disease_similarity[m, n] == 1:
            disease_similarity[m, n] = 0.8  # 这里是一个大问题,两个向量相同可以说它有一定相关度,可是计算出相关度等于1又不合理,只能定义一个值


# 保存结果

result = pd.DataFrame(disease_similarity)
result.to_csv('output/disease_GaussianSimilarity.csv')
# 注意,这样保存之后会多了一行一列行号序号,需要删除


# 计算circRNA之间的相似度

association_matrix = association_matrix.T  # 转置方便计算
print(len(association_matrix))
rna_similarity = np.zeros([676, 676])  # 676种circRNA之间的相似度,初始化矩阵

# 计算association_matrix
count = 0
for m in range(676):
    for n in range(676):
        rna_similarity[m, n] = math.exp((np.sum((association_matrix[m] - association_matrix[n])**2)**0.5
                                        * width/676) * (-1))
        if rna_similarity[m, n] == 1:
            rna_similarity[m, n] = 0.8  # 这里是一个大问题,两个向量相同可以说它有一定相关度,可是计算出相关度等于1又不合理,只能定义一个值


# 保存结果

result = pd.DataFrame(rna_similarity)
result.to_csv('output/rna_GaussianSimilarity.csv')
# 注意,这样保存之后会多了一行一列行号序号,需要删除

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值