Source code for snudda.utils.reposition_neurons

import h5py


[docs]class RepositionNeurons(object): """ Reposition neurons in the network file. """ def __init__(self, position_file): """ Constructor. Args: position_file : network position file """ self.position_file = position_file self.hdf5_file = h5py.File(position_file, "r+") assert "synapses" not in self.hdf5_file["network"], "This code should not be used after detection." def __del__(self): self.close()
[docs] def close(self): """ Close file.""" if self.hdf5_file: self.hdf5_file.close() self.hdf5_file = None
[docs] def place(self, neuron_id, position, rotation=None, verbose=True): """ Reposition neuron neuron_id to position with rotation. Args: neuron_id : Neuron ID affected position : New position of neuron rotation : New rotatoin of neuron verbose : Print info? """ info = (f"Moving neuron {neuron_id} from {self.hdf5_file['network/neurons/position'][neuron_id]} " f"to {position}") if rotation is not None: info += f" setting rotation to {rotation}" if verbose: print(info) self.hdf5_file["network/neurons/position"][neuron_id] = position if rotation is not None: self.hdf5_file["network/neurons/rotation"][neuron_id] = rotation.reshape((9,))
[docs] def set_morphology_id(self, neuron_id, morphology_id): """ Set morphologyID for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/morphologyID"][neuron_id] = morphology_id else: self.hdf5_file["network/neurons/morphologyID"][:] = morphology_id
[docs] def set_morphology_key(self, neuron_id, morphology_key): """ Set morphologyKey for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/morphologyKey"][neuron_id] = morphology_key else: self.hdf5_file["network/neurons/morphologyKey"][:] = morphology_key
[docs] def set_parameter_key(self, neuron_id, parameter_key): """ Set parameterKey for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/parameterKey"][neuron_id] = parameter_key else: self.hdf5_file["network/neurons/parameterKey"][:] = parameter_key
[docs] def set_parameter_id(self, neuron_id, parameter_id): """ Set parameterID for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/parameterID"][neuron_id] = parameter_id else: self.hdf5_file["network/neurons/parameterID"][:] = parameter_id
[docs] def set_modulation_id(self, neuron_id, modulation_id): """ Set modulationID for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/modulationID"][neuron_id] = modulation_id else: self.hdf5_file["network/neurons/modulationID"][:] = modulation_id
[docs] def set_modulation_key(self, neuron_id, modulation_key): """ Set modulationKey for neuron with neuron_id (neuron_id = None means all neurons) """ if neuron_id is not None: self.hdf5_file["network/neurons/modulationKey"][neuron_id] = modulation_key else: self.hdf5_file["network/neurons/modulationKey"][:] = modulation_key