Python跨相关图绘制工具:使用GLMCC算法
import csv
import math
import numpy as np
import matplotlib.pyplot as plt
# 函数:计算跨相关图
def GLMCC(arg1, arg2, arg3, arg4, arg5, arg6, arg7):
# GLMCC函数实现
# ...
return par, log_pos, log_likelihood
# 函数:绘制带有A的跨相关图
def plt_GLMCC_with_A(arg1, arg2, arg3, arg4, arg5):
# plt_GLMCC_with_A函数实现
# ...
# 函数:绘制带有W和A的跨相关图
def plt_W_GLMCC_with_A(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8):
# plt_W_GLMCC_with_A函数实现
# ...
# 解析命令行参数
args = ['arg1', 'arg2', 'arg3', 'exp', 'file.csv', 'sgn']
cell_num = 10
# 连接参数
WIN = 1.0
DELTA = 0.1
NPAR = 100
tau = [0.1, 0.2]
beta = [0.3, 0.4]
cc_list = [[0 for _ in range(cell_num)] for _ in range(4)]
for i in range(cell_num):
for j in range(cell_num):
if i == j:
continue
if args[3] == 'exp':
delay_synapse = int(args[1])
par, log_pos, log_likelihood = GLMCC(cc_list[1], cc_list[0], tau, beta, cc_list[2], cc_list[3],
delay_synapse)
for m in range(2, 5):
tmp_par, tmp_log_pos, tmp_log_likelihood = GLMCC(cc_list[1], cc_list[0], tau, beta, cc_list[2],
cc_list[3], m)
if (not LR and tmp_log_pos > log_pos) or (LR and tmp_log_likelihood > log_likelihood):
log_pos = tmp_log_pos
log_likelihood = tmp_log_likelihood
par = tmp_par
delay_synapse = m
elif args[3] == 'sim':
delay_synapse = 3
par, log_pos, log_likelihood = GLMCC(cc_list[1], cc_list[0], tau, beta, cc_list[2], cc_list[3],
delay_synapse)
# 连接参数
nb = int(WIN / DELTA)
cc_0 = [0 for _ in range(2)]
max = [0 for _ in range(2)]
Jmin = [0 for _ in range(2)]
for l in range(2):
cc_0[l] = 0
max[l] = int(tau[l] + 0.1)
if l == 0:
for m in range(max[l]):
cc_0[l] += np.exp(par[nb + int(delay_synapse) + m])
if l == 1:
for m in range(max[l]):
cc_0[l] += np.exp(par[nb - int(delay_synapse) - m])
cc_0[l] = cc_0[l] / max[l]
Jmin[l] = math.sqrt(16.3 / tau[l] / cc_0[l])
n12 = tau[l] * cc_0[l]
if n12 <= 10:
par[NPAR - 2 + l] = 0
# 检查连接对是否显著,仅绘制显著对
if args[5] == 'sgn':
# 读取W文件
W = [[0 for _ in range(cell_num)] for _ in range(cell_num)]
with open(args[4], 'r') as f:
reader = csv.reader(f)
l = 0
for row in reader:
for m in range(0, cell_num):
W[l][m] = float(row[m])
l += 1
if W[i][j] < Jmin[0] and W[i][j] > -Jmin[0]:
continue
# 绘图
plt.figure(figsize=(6, 6))
plt.title('神经元' + str(i) + '和神经元' + str(j) + '之间的跨相关图')
plt.xlabel('时间 (s)')
plt.ylabel('互相关')
plt_GLMCC_with_A(cc_list[0], par, tau, delay_synapse, i, j, cell_num, 'Py')
plt.savefig('1.png')
# 生成方形图
plt.gca().set_aspect('equal')
plt.legend(fontsize=10)
# 移除刻度标签
plt.tick_params(labelbottom=False, labelleft=False)
plt.savefig('allCC2.png')
plt.close()
原文地址: https://www.cveoy.top/t/topic/lRH 著作权归作者所有。请勿转载和采集!