예제 #1
0
파일: nodes.py 프로젝트: MFSY/snap
    def load_population_data(self, population):
        """Load node properties from SONATA Nodes.

        Args:
            population (str): a population name .

        Returns:
            pandas.DataFrame with node properties (zero-based index).
        """
        nodes = self.storage.open_population(population)
        categoricals = nodes.enumeration_names

        node_count = nodes.size
        result = pd.DataFrame(index=np.arange(node_count))

        _all = libsonata.Selection([(0, node_count)])
        for attr in sorted(nodes.attribute_names):
            if attr in categoricals:
                enumeration = np.asarray(nodes.get_enumeration(attr, _all))
                values = np.asarray(nodes.enumeration_values(attr))
                # if the size of `values` is large enough compared to `enumeration`, not using
                # categorical reduces the memory usage.
                if values.shape[0] < 0.5 * enumeration.shape[0]:
                    result[attr] = pd.Categorical.from_codes(enumeration,
                                                             categories=values)
                else:
                    result[attr] = values[enumeration]
            else:
                result[attr] = nodes.get_attribute(attr, _all)
        for attr in sorted(
                utils.add_dynamic_prefix(nodes.dynamics_attribute_names)):
            result[attr] = nodes.get_dynamics_attribute(
                attr.split(DYNAMICS_PREFIX)[1], _all)
        return result
예제 #2
0
 def _dynamics_params_names(self):
     return set(
         utils.add_dynamic_prefix(
             self._population.dynamics_attribute_names))
예제 #3
0
파일: test_utils.py 프로젝트: markovg/snap
def test_add_dynamic_prefix():
    assert test_module.add_dynamic_prefix(
        ["a", "b"]) == [DYNAMICS_PREFIX + "a", DYNAMICS_PREFIX + "b"]