spike trainのファイルを読み込む

spike時刻がneuronごとに";"区切りで, 縦に並んで記録されている時にデータを読み込む

def load_data(filepath, format="list"):
    """
    ;区切りのデータをnumpyで扱える形に読み込む
    データはlistでここの要素はspike time
    """
    with open(filepath, "r") as f:
        lines = f.read()
        lines = lines.split(";")
    N_neuron = len(lines) - 1 # 最後は\nだけのデータのため
    print("neuron数は{}".format(N_neuron))
    spikes = []
    for index in range(N_neuron):
        spikes.append(np.array([x for x in lines[index].split("\n") if x],
                               dtype=np.float64))
        #print("Neuron {}-th spikes count : {}".format(index, len(spikes[index]))
        #     , end="")
    print("load {} neurons".format(index))

    if format=="ndarray":
        # listではなく, [neuron番号, spike time]のarrayにする
        # spike timeの順番にはしない
        spiketrain = []

        # spiketrainにspike timeを入れていく
        for i in range(N_neuron):
            # iをスパイクの数分だけ並べただけ
            indexes = [i for _ in range(len(spikes[i]))]
            spiketrain.append(np.vstack([indexes, spikes[i]]).T)
        spiketrain = np.vstack(spiketrain)

        return spiketrain