-
Notifications
You must be signed in to change notification settings - Fork 3
/
__init__.py
executable file
·112 lines (80 loc) · 2.88 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#
# This file is part of the PyNCulture project, which aims at providing tools to
# easily generate complex neuronal cultures.
# Copyright (C) 2017 SENeC Initiative
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Principle
=========
Module dedicated to the description of the spatial boundaries of neuronal
cultures.
This allows for the generation of neuronal networks that are embedded in space.
The `shapely <http://toblerity.org/shapely/index.html>`_ library is used to
generate and deal with the spatial environment of the neurons.
Examples
========
Basic features
--------------
The module provides a backup ``Shape`` object, which can be used with only
the `numpy` and `scipy` libraries.
It allows for the generation of simple rectangle, disk and ellipse shapes.
.. literalinclude:: examples/backup_shape.py
:lines: 23-
All these features are of course still available with the more advanced
``Shape`` object which inherits from :class:`shapely.geometry.Polygon`.
Complex shapes from files
-------------------------
.. literalinclude:: examples/load_culture.py
:lines: 23-
Content
=======
"""
import logging
from .pync_log import _log_message
# shapely support
try:
import shapely
_shapely_support = True
from .shape import Shape, Area
except ImportError:
_shapely_support = False
from .backup_shape import BackupShape as Shape
from .tools import pop_largest
__version__ = "0.10.0"
# -------------------- #
# Define I/O functions #
# -------------------- #
if _shapely_support:
from .shape_io import culture_from_file
from .shape_io import shapes_from_file
else:
def culture_from_file(*args, **kwargs):
raise RuntimeError("This function requires 'shapely' to work.")
def shapes_from_file(*args, **kwargs):
raise RuntimeError("This function requires 'shapely' to work.")
__all__ = [
"Area", "Shape", "culture_from_file", "pop_largest", "shapes_from_file"
]
# ------------------------------------------ #
# Try to import optional SVG and DXF support #
# ------------------------------------------ #
_logger = logging.getLogger(__name__)
try:
from .plot import plot_shape
__all__.append('plot_shape')
except ImportError as e:
_log_message(_logger, "INFO", 'Could not import plotting: {}'.format(e))