bluecellulab 2.6.0__py3-none-any.whl → 2.6.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of bluecellulab might be problematic. Click here for more details.

bluecellulab/cell/core.py CHANGED
@@ -497,10 +497,6 @@ class Cell(InjectableMixin, PlottableMixin):
497
497
  # numpy int to int
498
498
  post_sec_id = int(syn_description[SynapseProperty.POST_SECTION_ID])
499
499
 
500
- location = SynapseFactory.determine_synapse_location(
501
- syn_description, self
502
- )
503
-
504
500
  weight_scalar = connection_modifiers.get('Weight', 1.0)
505
501
  exc_mini_frequency, inh_mini_frequency = mini_frequencies \
506
502
  if mini_frequencies is not None else (None, None)
@@ -516,13 +512,15 @@ class Cell(InjectableMixin, PlottableMixin):
516
512
  spont_minis_rate = inh_mini_frequency
517
513
 
518
514
  if spont_minis_rate is not None and spont_minis_rate > 0:
519
- sec = self.get_psection(post_sec_id).hsection
515
+ synapse_hoc_args = SynapseFactory.determine_synapse_location(
516
+ syn_description, self
517
+ )
520
518
  # add the *minis*: spontaneous synaptic events
521
519
  self.ips[synapse_id] = neuron.h.\
522
- InhPoissonStim(location, sec=sec)
520
+ InhPoissonStim(synapse_hoc_args.location, sec=synapse_hoc_args.section)
523
521
 
524
522
  self.syn_mini_netcons[synapse_id] = neuron.h.\
525
- NetCon(self.ips[synapse_id], synapse.hsynapse, sec=sec)
523
+ NetCon(self.ips[synapse_id], synapse.hsynapse, sec=synapse_hoc_args.section)
526
524
  self.syn_mini_netcons[synapse_id].delay = 0.1
527
525
  self.syn_mini_netcons[synapse_id].weight[0] = weight * weight_scalar
528
526
  # set netcon type
@@ -191,23 +191,15 @@ class BluepyCircuitAccess:
191
191
 
192
192
  if isinstance(connectome._impl, SonataConnectome):
193
193
  logger.debug('Using sonata style synapse file, not nrn.h5')
194
- # load 'afferent_section_pos' instead of '_POST_DISTANCE'
195
- if 'afferent_section_pos' in connectome.available_properties:
196
- connectome_properties[
197
- connectome_properties.index(SynapseProperty.POST_SEGMENT_OFFSET)
198
- ] = 'afferent_section_pos'
199
-
200
- connectome_properties = properties_to_bluepy(connectome_properties)
201
- synapses = connectome.afferent_synapses(
202
- gid, properties=connectome_properties
203
- )
204
- synapses.columns = properties_from_bluepy(synapses.columns)
205
- else:
206
- connectome_properties = properties_to_bluepy(connectome_properties)
207
- synapses = connectome.afferent_synapses(
208
- gid, properties=connectome_properties
209
- )
210
- synapses.columns = properties_from_bluepy(synapses.columns)
194
+ connectome_properties.remove(SynapseProperty.POST_SEGMENT_OFFSET)
195
+ else: # afferent section_pos will be computed via post_segment_offset
196
+ connectome_properties.remove(SynapseProperty.AFFERENT_SECTION_POS)
197
+
198
+ connectome_properties = properties_to_bluepy(connectome_properties)
199
+ synapses = connectome.afferent_synapses(
200
+ gid, properties=connectome_properties
201
+ )
202
+ synapses.columns = properties_from_bluepy(synapses.columns)
211
203
 
212
204
  synapses = synapses.reset_index(drop=True)
213
205
  synapses.index = pd.MultiIndex.from_tuples(
@@ -40,6 +40,7 @@ class SynapseProperty(Enum):
40
40
  NRRP = "NRRP"
41
41
  U_HILL_COEFFICIENT = "u_hill_coefficient"
42
42
  CONDUCTANCE_RATIO = "conductance_scale_factor"
43
+ AFFERENT_SECTION_POS = "afferent_section_pos"
43
44
 
44
45
  @classmethod
45
46
  def from_bluepy(cls, prop: BLPSynapse) -> SynapseProperty:
@@ -76,6 +77,7 @@ class SynapseProperties:
76
77
  SynapseProperty.NRRP,
77
78
  SynapseProperty.U_HILL_COEFFICIENT,
78
79
  SynapseProperty.CONDUCTANCE_RATIO,
80
+ SynapseProperty.AFFERENT_SECTION_POS,
79
81
  )
80
82
  plasticity = (
81
83
  "volume_CR", "rho0_GB", "Use_d_TM", "Use_p_TM", "gmax_d_AMPA",
@@ -98,6 +100,7 @@ snap_to_synproperty = MappingProxyType({
98
100
  "n_rrp_vesicles": SynapseProperty.NRRP,
99
101
  "u_hill_coefficient": SynapseProperty.U_HILL_COEFFICIENT,
100
102
  "conductance_scale_factor": SynapseProperty.CONDUCTANCE_RATIO,
103
+ "afferent_section_pos": SynapseProperty.AFFERENT_SECTION_POS,
101
104
  })
102
105
 
103
106
 
@@ -137,23 +140,36 @@ def properties_from_bluepy(
137
140
  'str's."""
138
141
  if not BLUEPY_AVAILABLE:
139
142
  raise ExtraDependencyMissingError("bluepy")
140
- return [
141
- SynapseProperty.from_bluepy(prop)
142
- if isinstance(prop, BLPSynapse)
143
- else prop
144
- for prop in props
145
- ]
143
+ res: list[SynapseProperty | str] = []
144
+ for prop in props:
145
+ if isinstance(prop, BLPSynapse):
146
+ res.append(SynapseProperty.from_bluepy(prop))
147
+ elif prop == "afferent_section_pos": # jira_url/project/issues/browse/NSETM-2313
148
+ res.append(SynapseProperty.AFFERENT_SECTION_POS)
149
+ else:
150
+ res.append(prop)
151
+ return res
146
152
 
147
153
 
148
154
  def properties_to_bluepy(props: list[SynapseProperty | str]) -> list[BLPSynapse | str]:
149
155
  """Convert a list of SynapseProperty to bluepy Synapse properties, spare
150
156
  'str's."""
151
- return [
157
+ # bluepy does not have AFFERENT_SECTION_POS atm.
158
+ # jira_url/project/issues/browse/NSETM-2313
159
+ bluepy_recognised_props = props.copy()
160
+ removed_afferent_section_pos = False
161
+ if SynapseProperty.AFFERENT_SECTION_POS in bluepy_recognised_props:
162
+ removed_afferent_section_pos = True
163
+ bluepy_recognised_props.remove(SynapseProperty.AFFERENT_SECTION_POS)
164
+ res = [
152
165
  prop.to_bluepy()
153
166
  if isinstance(prop, SynapseProperty)
154
167
  else prop
155
- for prop in props
168
+ for prop in bluepy_recognised_props
156
169
  ]
170
+ if removed_afferent_section_pos:
171
+ res.append("afferent_section_pos")
172
+ return res
157
173
 
158
174
 
159
175
  def synapse_property_encoder(dct: dict[SynapseProperty | str, Any]) -> dict[str, Any]:
@@ -114,10 +114,10 @@ class SynapseFactory:
114
114
  section: NeuronSection = cell.get_psection(section_id=isec).hsection
115
115
 
116
116
  # old circuits don't have it, it needs to be computed via synlocation_to_segx
117
- if ("afferent_section_pos" in syn_description and
118
- not np.isnan(syn_description["afferent_section_pos"])):
117
+ if (SynapseProperty.AFFERENT_SECTION_POS in syn_description and
118
+ not np.isnan(syn_description[SynapseProperty.AFFERENT_SECTION_POS])):
119
119
  # position is pre computed in SONATA
120
- location = syn_description["afferent_section_pos"]
120
+ location = syn_description[SynapseProperty.AFFERENT_SECTION_POS]
121
121
  else:
122
122
  ipt = syn_description[SynapseProperty.POST_SEGMENT_ID]
123
123
  syn_offset = syn_description[SynapseProperty.POST_SEGMENT_OFFSET]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bluecellulab
3
- Version: 2.6.0
3
+ Version: 2.6.2
4
4
  Summary: Biologically detailed neural network simulations and analysis.
5
5
  Author: Blue Brain Project, EPFL
6
6
  License: Apache2.0
@@ -18,7 +18,7 @@ bluecellulab/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
18
18
  bluecellulab/analysis/inject_sequence.py,sha256=qr3N1tQX4avvKzFBT0L7W6LnSgk2y_P_7Yhy0UjlGmk,4769
19
19
  bluecellulab/cell/__init__.py,sha256=Sbc0QOsJ8E7tSwf3q7fsXuE_SevBN6ZmoCVyyU5zfII,208
20
20
  bluecellulab/cell/cell_dict.py,sha256=PVmZsjhZ9jp3HC-8QmdFqp-crAcVMSVeLWujcOPLlpo,1346
21
- bluecellulab/cell/core.py,sha256=MtrVQAxT82dc9uQuWZyTQfc6Oczrnc_y_9hcyBqUT7w,31467
21
+ bluecellulab/cell/core.py,sha256=ZVzy3tsA5X7OyCmnHQn0d6AlNg9rOG2ojKuojvKdsFw,31487
22
22
  bluecellulab/cell/injector.py,sha256=XC49VSHw78xCHzLJKO_-unnnVZAZXsYg5qbmZPx01AA,18091
23
23
  bluecellulab/cell/plotting.py,sha256=hW5KAmaSonJ1tgR6xRrnfVe33I5mBsBUrKJQwGvAbUc,4032
24
24
  bluecellulab/cell/random.py,sha256=FDby9BN4eJT27COwHP59bhDE2v-c6rdOKNFj3cYZTVY,1773
@@ -36,10 +36,10 @@ bluecellulab/circuit/format.py,sha256=eYhiBIQnPnnVBmaSDymFjQprXN9QjEYKmFhb2mIS86
36
36
  bluecellulab/circuit/iotools.py,sha256=KVE7x5LNQ4RgjNh05Q-h3Swpbs3nRFtrcWNHj62aiRI,1585
37
37
  bluecellulab/circuit/node_id.py,sha256=gaRAW3UhbPOPsoXMHLjo3qH9iNod7YB8ZOcguWprrU4,1265
38
38
  bluecellulab/circuit/simulation_access.py,sha256=QHVEN-sEZbCCvblhBHEShGX0-NEXCD1AYpavpVGCgAE,7073
39
- bluecellulab/circuit/synapse_properties.py,sha256=6PpMWeothomR2c-mx63yVIISJc4eSL9xMnaIM2nryNM,5494
39
+ bluecellulab/circuit/synapse_properties.py,sha256=a4-Yw_f8JIR6i2YG8qhCW97TMSd_Z-aF6lp_a1wBwnM,6374
40
40
  bluecellulab/circuit/validate.py,sha256=7EUN15u0JFFlLf389jUBqLwDOHyZdfKtoidI-xLUVYA,3593
41
41
  bluecellulab/circuit/circuit_access/__init__.py,sha256=sgp6m5kP-pq60V1IFGUiSUR1OW01zdxXNNUJmPA8anI,201
42
- bluecellulab/circuit/circuit_access/bluepy_circuit_access.py,sha256=HxQaRTz1HaeOVV87fiptJBXRNWCitT-5YHn71WtSsLg,14687
42
+ bluecellulab/circuit/circuit_access/bluepy_circuit_access.py,sha256=pUoTw6wXMGZAqjjC3vpdZcm8ex108aEPw0L6fSypx9g,14273
43
43
  bluecellulab/circuit/circuit_access/definition.py,sha256=SnKBFEgdXFG-QexYRrGSzVAd7bSj7NwN0IuTsjDOrDY,4435
44
44
  bluecellulab/circuit/circuit_access/sonata_circuit_access.py,sha256=c0MMJuoT6_dRW8O5HSRS5hHv1zDKdW0sBR-DaP0F1bk,10351
45
45
  bluecellulab/circuit/config/__init__.py,sha256=aaoJXRKBJzpxxREo9NxKc-_CCPmVeuR1mcViRXcLrC4,215
@@ -60,11 +60,11 @@ bluecellulab/stimulus/__init__.py,sha256=DgIgVaSyR-URf3JZzvO6j-tjCerzvktuK-ep8pj
60
60
  bluecellulab/stimulus/circuit_stimulus_definitions.py,sha256=uij_s44uNdmMwMLGmTHSRgmp9K9B_vvHHshX6YPJNJU,15686
61
61
  bluecellulab/stimulus/factory.py,sha256=cjnMqFx-Y31kV1XHvkSbGI2f1OpEawU3Wg_cLqcIyRc,11883
62
62
  bluecellulab/synapse/__init__.py,sha256=RW8XoAMXOvK7OG1nHl_q8jSEKLj9ZN4oWf2nY9HAwuk,192
63
- bluecellulab/synapse/synapse_factory.py,sha256=YkvxbdGF-u-vxYdbRNTlX-9AtSC_3t_FQRFhybwzgrk,6805
63
+ bluecellulab/synapse/synapse_factory.py,sha256=MjUorWoMl4lFSBgQw4QS09Dzh0-LYWlCHJKYy8N-d3w,6847
64
64
  bluecellulab/synapse/synapse_types.py,sha256=4gne-hve2vq1Lau-LAVPsfLjffVYqAYBW3kCfC7_600,16871
65
- bluecellulab-2.6.0.dist-info/AUTHORS.txt,sha256=EDs3H-2HXBojbma10psixk3C2rFiOCTIREi2ZAbXYNQ,179
66
- bluecellulab-2.6.0.dist-info/LICENSE,sha256=xOouu1gC1GGklDxkITlaVl60I9Ab860O-nZsFbWydvU,11749
67
- bluecellulab-2.6.0.dist-info/METADATA,sha256=X-XmGZmXo-FZIe6H5r0qIs-VBJnTN0zNVOXNVuiLW0M,7025
68
- bluecellulab-2.6.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
69
- bluecellulab-2.6.0.dist-info/top_level.txt,sha256=VSyEP8w9l3pXdRkyP_goeMwiNA8KWwitfAqUkveJkdQ,13
70
- bluecellulab-2.6.0.dist-info/RECORD,,
65
+ bluecellulab-2.6.2.dist-info/AUTHORS.txt,sha256=EDs3H-2HXBojbma10psixk3C2rFiOCTIREi2ZAbXYNQ,179
66
+ bluecellulab-2.6.2.dist-info/LICENSE,sha256=xOouu1gC1GGklDxkITlaVl60I9Ab860O-nZsFbWydvU,11749
67
+ bluecellulab-2.6.2.dist-info/METADATA,sha256=-Bzr4zTDTIqRTUF1lSnjxD74lQJO4tjgBJ4Ebi3f21Y,7025
68
+ bluecellulab-2.6.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
69
+ bluecellulab-2.6.2.dist-info/top_level.txt,sha256=VSyEP8w9l3pXdRkyP_goeMwiNA8KWwitfAqUkveJkdQ,13
70
+ bluecellulab-2.6.2.dist-info/RECORD,,