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()
Python跨相关图绘制工具:使用GLMCC算法

原文地址: https://www.cveoy.top/t/topic/lRH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录