Bases: ConnectomeDataset
Reader for Varshney et al. 2011 connectivity dataset
Source code in cect/readers/VarshneyDataReader.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 | class VarshneyDataReader(ConnectomeDataset):
"""Reader for Varshney et al. 2011 connectivity dataset"""
def __init__(self):
ConnectomeDataset.__init__(self)
cells, neuron_conns = self.read_data()
for conn in neuron_conns:
self.add_connection_info(
conn,
append_existing_connections=True,
check_overwritten_connections=True,
fail_on_any_repeated_connection=False,
)
def read_data(self):
cells = []
conns = []
self.typed_conns = {"S": [], "Sp": [], "R": [], "Rp": [], "EJ": []}
wb = load_workbook(filename)
sheet = wb.worksheets[0]
print_("Opened the Excel file: " + filename)
for row in sheet.iter_rows(
min_row=2, values_only=True
): # Assuming data starts from the second row
pre = str(row[0])
post = str(row[1])
if not post == NMJ_ENDPOINT:
syntype_here = str(row[2])
num = int(row[3])
self.typed_conns[syntype_here].append(f"{pre}_{post}_{num}")
synclass = (
GENERIC_ELEC_SYN_CLASS
if syntype_here == ELECT_JUNC_SYN
else GENERIC_CHEM_SYN_CLASS
if (syntype_here == SEND_POLY_SYN or syntype_here == SEND_SYN)
else None
)
if syntype_here == ELECT_JUNC_SYN:
syntype = ELECTRICAL_SYN_TYPE
else:
syntype = CHEMICAL_SYN_TYPE
if synclass is not None:
conns.append(ConnectionInfo(pre, post, num, syntype, synclass))
if pre not in cells:
cells.append(pre)
if post not in cells:
cells.append(post)
else:
if not (
syntype_here == RECEIVE_SYN or syntype_here == RECEIVE_POLY_SYN
):
raise ValueError(
f"Warning: Unrecognized synapse type '{syntype_here}' for connection {pre} -> {post} for {NAME}."
)
for syn_type, conn_list in self.typed_conns.items():
print_(
f" {syn_type}: {len(conn_list)} connections ({', '.join(conn_list[:5])}...) "
)
s_tot = len(self.typed_conns[SEND_SYN]) + len(self.typed_conns[SEND_POLY_SYN])
r_tot = len(self.typed_conns[RECEIVE_SYN]) + len(
self.typed_conns[RECEIVE_POLY_SYN]
)
print_(
f" Total chemical synapses: {s_tot} (send) + {r_tot} (receive) = {s_tot + r_tot}"
)
print_(f" Total electrical synapses: {len(self.typed_conns[ELECT_JUNC_SYN])}")
return cells, conns
def read_muscle_data(self):
conns = []
neurons = []
muscles = []
return neurons, muscles, conns
|