Hi Maurycy,

 

Unfortunately, NEST does not have an efficient way of extracting single information values from large sets of connections at the moment.

 

What you could do at the Python level to reduce the memory overhead would be to loop over the source neurons.

 

The code below ran in about 3.5 minutes on my MacBook Pro and used slighly less than 500 MB (Jupyter notebook included):

 

The total number of connections is always available as nest.num_connections so you don’t need to calculate it to pre-size the numpy array if you want all connections.

 

If you frequently need to do this operation on large networks, we could consider a more efficient implementation, but that would require work a the C++ level. Would you be interested in contributing to that?

 

Best regards,

Hans Ekkehard

 

-- 

 

Prof. Dr. Hans Ekkehard Plesser

Research Committee Chair, Faculty of Science and Technology

Head, Department of Data Science

 

Department of Data Science

Faculty of Science and Technology

Norwegian University of Life Sciences

PO Box 5003, 1432 Aas, Norway

 

Phone +47 6723 1560

Email hans.ekkehard.plesser@nmbu.no

Home http://arken.nmbu.no/~plesser

 

 

 

From: M. Maurycy Miêkus <miekus@em.uni-frankfurt.de>
Date: Wednesday, 15 October 2025 at 09:30
To: users@nest-simulator.org <users@nest-simulator.org>
Subject: [NEST Users] SynapseCollection.get() causes overhead

Some people who received this message don't often get email from miekus@em.uni-frankfurt.de. Learn why this is important

Hello,

I am trying to access the list of approx. 13 000 000 synapses in my network. However, accessing any of the values in SynapseCollection runs longer than my whole simulation and can cause out of memory issues.

In the following snippet, just the `conns.get('weight')` line takes my computer 13 minutes to compute and uses over 5 GB of memory, even though the data I am interested in should not be larger than 50 MB.

import nest

neurons = nest.Create('iaf_psc_exp', 20000)

conn_dict = {'rule': 'fixed_indegree',

'indegree': 300}

nest.Connect(neurons, neurons, conn_dict, syn_spec={'weight': 1.0})

conns = nest.GetConnections()

conns.get('weight')

How should I efficiently access/export the `source`, `target`, `weight` and `distance` synaptic variables without unnecessary time or memory overhead?

Thank you.

Best regards,

Maurycy Miêkus