The easiest way to restrict access is to implement a __setattr__ that raises an AttributeError. It still allows people to set custom attributes through more roundabout ways (which is nice and has valid use cases) but prevents accidental mishaps.

On Thu, 25 Nov 2021, 15:06 Dennis Terhorst, <d.terhorst@fz-juelich.de> wrote:

Hi Hans Ekkehard, everyone,

Regarding the non-existent attribute assignment

> … if xyz is a class instance, xyz.anything = ... is legal code, just not with the intended effect.

There are ways to restrict this in Python. We would have to check in how far that works with the current use of attributes, but if `anything` is not known, we could raise errors. Maybe someone with knowledge about MRO and class.__dict__ lookups already has an idea. Could you open an issue for that?

Best,
Dennis


On 25.11.21 14:53, Hans Ekkehard Plesser wrote:
Hi Maryada,

It might be the case that Nest 2.20 installation was causing the issue (I kept it for my earlier implementation)

OK, that makes sense. That is one downside of Python that if xyz is a class instance, xyz.anything = ... is legal code, just not with the intended effect.

so I deleted everything and build the newest version. With NEST 3.1, things look perfectly fine.
For now, I would rather not install 3.0 and proceed with v3.1

Good. We generally recommend to use the newest NEST version available, so going directly for 3.1 is the right thing to do :).

Best,
Hans Ekkehard



On Thu, Nov 25, 2021 at 8:31 AM Hans Ekkehard Plesser <hans.ekkehard.plesser@nmbu.no<mailto:hans.ekkehard.plesser@nmbu.no>> wrote:

Hi,

I just did the following test with the current NEST master and NEST 3.1 and there things seem to work as expected. I get different membrane potentials for neurons with seeds 100 and 1000 when initializing on creation:


In [8]: nest.ResetKernel()



In [9]: nest.rng_seed = 100



In [10]: n = nest.Create('iaf_psc_alpha', 10, params={'V_m': nest.random.normal(-51., 10)})



In [11]: n.V_m

Out[11]:

(-48.59349994516202,

 -62.391924115381116,

 -41.373005254994425,

 -57.40416211886578,

 -55.00625628226899,

 -58.390425179047895,

 -55.24506539841326,

 -53.025705514351856,

 -51.605353014049754,

 -55.422455776310166)



In [12]: nest.ResetKernel()



In [13]: nest.rng_seed = 1000



In [14]: n = nest.Create('iaf_psc_alpha', 10, params={'V_m': nest.random.normal(-51., 10)})



In [15]: n.V_m

Out[15]:

(-61.99342803053577,

 -43.36557257654475,

 -56.96149010671454,

 -46.802621999699895,

 -38.1809073583283,

 -46.72672336036912,

 -52.65744001330793,

 -54.65343890518882,

 -45.195683344187955,

 -38.82283445344244)


This also works as expected if I draw at the Python level

In [27]: nest.ResetKernel()

In [28]: nest.rng_seed = 100

In [29]: [nest.random.normal(-51., 10).GetValue() for _ in range(5)]
Out[29]:
[-49.30997769812133,
 -49.87958247942526,
 -49.81013407516723,
 -53.261688886622565,
 -57.7916578766182]

In [30]: nest.ResetKernel()

In [31]: nest.rng_seed = 1000

In [32]: [nest.random.normal(-51., 10).GetValue() for _ in range(5)]
Out[32]:
[-34.1615153889346,
 -31.487943150805098,
 -46.29074242569416,
 -49.91770982448142,
 -52.23367995498362]

So it seems strange that it does not work for you. Is there any chance you have a mix of older versions? Could you delete all build and install directories and start from scratch (assuming you built NEST yourself; otherwise, how did you install NEST?).

Best,
Hans Ekkehard

--

Prof. Dr. Hans Ekkehard Plesser
Head, 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<mailto:hans.ekkehard.plesser@nmbu.no>
Home http://arken.nmbu.no/~plesser



On 24/11/2021, 18:08, "Maryada Maryada" <er.maryada@gmail.com<mailto:er.maryada@gmail.com>> wrote:

Hi Stine,
I got the answer from your follow-up questions, So rng_type was default but it's interesting that NEST 3.0 does not really have any effect on randomization when I set rng_seed using nest.rng_seed but only if I use nest.SetKernalStatus.....
if you run the following code
import nest
nest.ResetKernel()
nest.rng_seed = 307
# nest.SetKernelStatus({'rng_seed': 33})
for _ in range(10):
    v_m = nest.random.normal(mean=-51., std=10.)
    print(v_m.GetValue())
print(nest.rng_seed)
# print(nest.GetKernelStatus('rng_seed'))

No matter what value you set for seed the out is always the same set of 10 values. and nest.rng_seed value is updated for different set values.
However, It works if I use the old syntax.
I am assuming it's not a bug but is what 3.1 offers and was added partially in 3.0 version already.


On Wed, Nov 24, 2021 at 3:22 PM Stine Brekke Vennemo <stine.brekke.vennemo@nmbu.no<mailto:stine.brekke.vennemo@nmbu.no>> wrote:
Dear Maryada,

Am I understanding you correctly that every time you call v_m.GetValue() you get the same results?
I am not able to reproduce your results, I get a new value for V_m every time I switch rng_seed, and also if I call v_m.GetValue() a second time with the same seed without doing a ResetKernel.

To test that you are actually setting a new rng seed, maybe do a print(nest.rng_seed) to make sure?
What is your output if you type print(nest.rng_type)?

Best wishes,
Stine

________________________________
From: Maryada Maryada <er.maryada@gmail.com<mailto:er.maryada@gmail.com>>
Sent: Monday, November 22, 2021 12:40
To: NEST User Mailing List <users@nest-simulator.org<mailto:users@nest-simulator.org>>
Subject: [NEST Users] Random seed in NEST 3.0

Dear NEST users,

As I understood from the documentation unless you set the seed using nest.rng_seed, nest.random.normal (for instance) should return the same value

nest.ResetKernel()
nest.rng_seed = 21#69696
v_m = nest.random.normal(mean=-51., std=10.)
v_m.GetValue()

In this code, I always receive the same v_m value for both cases, if the seed is set as 21 or 69696. The only time it changes is if I remove ResetKernel() call, which then is expected to return different values irrespective of rng_seed.
With this code below, I also got the same results irrespective of rng_seed value

nest.ResetKernel()
nest.rng_seed = 3333#69696
for _ in range(10):
    v_m = nest.random.normal(mean=-51., std=10.)
    print(v_m.GetValue())

So, maybe rng_seed doesn't reflect on nest.random.normal distribution. However, then how can I make sure it draws a different set of values?

--
Thanks and Regards

Maryada

_______________________________________________
NEST Users mailing list -- users@nest-simulator.org<mailto:users@nest-simulator.org>
To unsubscribe send an email to users-leave@nest-simulator.org<mailto:users-leave@nest-simulator.org>


--
Thanks and Regards

Maryada

_______________________________________________
NEST Users mailing list -- users@nest-simulator.org<mailto:users@nest-simulator.org>
To unsubscribe send an email to users-leave@nest-simulator.org<mailto:users-leave@nest-simulator.org>


--
Thanks and Regards

Maryada


_______________________________________________
NEST Users mailing list -- users@nest-simulator.org
To unsubscribe send an email to users-leave@nest-simulator.org
-- 
Dipl.-Phys. Dennis Terhorst
Coordinator Software Development

Institute of Neuroscience and Medicine (INM-6)
Computational and Systems Neuroscience &
Theoretical Neuroscience,
Institute for Advanced Simulation (IAS-6)
Jülich Research Centre, Member of the Helmholz Association and JARA
52425 Jülich, Germany

Building 15.22   Room 4004
Phone    +49 2461 61-85062
Fax      +49 2461 61- 9460
d.terhorst@fz-juelich.de

----------------------------------------------------------------------
Forschungszentrum Juelich GmbH, 52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Frauke Melchior
----------------------------------------------------------------------
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org
To unsubscribe send an email to users-leave@nest-simulator.org