ialdev-vis 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. ialdev_vis-0.2.0/PKG-INFO +85 -0
  2. ialdev_vis-0.2.0/README.md +45 -0
  3. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/pyproject.toml +13 -2
  4. ialdev_vis-0.2.0/src/iad/vis/dotstyle.py +99 -0
  5. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/insight.py +1 -1
  6. ialdev_vis-0.2.0/tests/test_dotstyle.py +270 -0
  7. ialdev_vis-0.1.0/PKG-INFO +0 -39
  8. ialdev_vis-0.1.0/README.md +0 -5
  9. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/__init__.py +0 -0
  10. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/__init__.py +0 -0
  11. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/blush_cm.py +0 -0
  12. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/glow_cm.py +0 -0
  13. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/rain.jscm +0 -0
  14. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/rain_cm.py +0 -0
  15. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/smooth_cm.py +0 -0
  16. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/colormaps/wide_cm.py +0 -0
  17. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/embedding_in_qt5.py +0 -0
  18. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/imageviewer.py +0 -0
  19. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/interact.py +0 -0
  20. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/ipv.py +0 -0
  21. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/jupyter.py +0 -0
  22. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/mpl_styles.py +0 -0
  23. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/mpl_utils.py +0 -0
  24. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/poly_to_mask/README.org +0 -0
  25. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/poly_to_mask/__init__.py +0 -0
  26. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/poly_to_mask/example.py +0 -0
  27. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/poly_to_mask/roipoly.py +0 -0
  28. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/src/iad/vis/view3d.py +0 -0
  29. {ialdev_vis-0.1.0 → ialdev_vis-0.2.0}/tests/test_insight.py +0 -0
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.4
2
+ Name: ialdev-vis
3
+ Version: 0.2.0
4
+ Summary: iad.vis — visualization utilities (image grids, viewers, colormaps, matplotlib helpers)
5
+ Author: ipcoder
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Dist: ialdev-core
16
+ Requires-Dist: ialdev-io
17
+ Requires-Dist: matplotlib>=3.5.0
18
+ Requires-Dist: numpy>=1.20.0
19
+ Requires-Dist: regex>=2021.0.0
20
+ Requires-Dist: open3d>=0.15.0 ; extra == "3d"
21
+ Requires-Dist: ipyvolume>=0.6.0 ; extra == "3d"
22
+ Requires-Dist: ialdev-vis[graphviz, qt, jupyter, 3d, dev] ; extra == "all"
23
+ Requires-Dist: pytest>=7.0.0 ; extra == "dev"
24
+ Requires-Dist: pytest-cov>=3.0.0 ; extra == "dev"
25
+ Requires-Dist: pygraphviz>=1.14,<2 ; extra == "graphviz"
26
+ Requires-Dist: ipywidgets>=7.0.0 ; extra == "jupyter"
27
+ Requires-Dist: IPython>=7.0.0 ; extra == "jupyter"
28
+ Requires-Dist: PyQt5>=5.15.0 ; extra == "qt"
29
+ Requires-Dist: scikit-image>=0.19.0 ; extra == "qt"
30
+ Project-URL: Homepage, https://github.com/ipcoder/ialdev/tree/master/vis
31
+ Project-URL: Issues, https://github.com/ipcoder/ialdev/issues
32
+ Project-URL: Repository, https://github.com/ipcoder/ialdev
33
+ Provides-Extra: 3d
34
+ Provides-Extra: all
35
+ Provides-Extra: dev
36
+ Provides-Extra: graphviz
37
+ Provides-Extra: jupyter
38
+ Provides-Extra: qt
39
+
40
+ # ialdev-vis
41
+
42
+ Visualization utilities for the `iad` toolbox, published as `ialdev-vis` and imported as `iad.vis`.
43
+
44
+ Use this package for quick image grids, histograms, Matplotlib helpers, custom colormaps, interactive annotation widgets, Jupyter logging, and optional Qt/3D visualization tools.
45
+
46
+ ## Install
47
+
48
+ ```bash
49
+ pip install ialdev-vis
50
+ ```
51
+
52
+ Optional extras:
53
+
54
+ ```bash
55
+ pip install "ialdev-vis[qt]"
56
+ pip install "ialdev-vis[jupyter]"
57
+ pip install "ialdev-vis[3d]"
58
+ pip install "ialdev-vis[all]"
59
+ ```
60
+
61
+ Requires Python `>=3.10`.
62
+
63
+ ## Highlights
64
+
65
+ - `imgrid` and `imhist` for fast inspection of images and distributions.
66
+ - Matplotlib helpers for figure capture and conversion to arrays/PIL images.
67
+ - Built-in custom colormaps.
68
+ - Polygon-to-mask helpers and interactive ROI tools.
69
+ - Optional Qt image viewer and optional `ipyvolume`/Open3D 3D views.
70
+
71
+ ## Examples
72
+
73
+ ```python
74
+ from iad.vis import imgrid, imhist
75
+
76
+ imgrid(left_image, right_image, titles=["left", "right"], clim="auto")
77
+ imhist(left_image, right_image, titles=["left", "right"])
78
+ ```
79
+
80
+ ```python
81
+ from iad.vis.mpl_utils import fig2img
82
+
83
+ pil_image = fig2img(figure)
84
+ ```
85
+
@@ -0,0 +1,45 @@
1
+ # ialdev-vis
2
+
3
+ Visualization utilities for the `iad` toolbox, published as `ialdev-vis` and imported as `iad.vis`.
4
+
5
+ Use this package for quick image grids, histograms, Matplotlib helpers, custom colormaps, interactive annotation widgets, Jupyter logging, and optional Qt/3D visualization tools.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pip install ialdev-vis
11
+ ```
12
+
13
+ Optional extras:
14
+
15
+ ```bash
16
+ pip install "ialdev-vis[qt]"
17
+ pip install "ialdev-vis[jupyter]"
18
+ pip install "ialdev-vis[3d]"
19
+ pip install "ialdev-vis[all]"
20
+ ```
21
+
22
+ Requires Python `>=3.10`.
23
+
24
+ ## Highlights
25
+
26
+ - `imgrid` and `imhist` for fast inspection of images and distributions.
27
+ - Matplotlib helpers for figure capture and conversion to arrays/PIL images.
28
+ - Built-in custom colormaps.
29
+ - Polygon-to-mask helpers and interactive ROI tools.
30
+ - Optional Qt image viewer and optional `ipyvolume`/Open3D 3D views.
31
+
32
+ ## Examples
33
+
34
+ ```python
35
+ from iad.vis import imgrid, imhist
36
+
37
+ imgrid(left_image, right_image, titles=["left", "right"], clim="auto")
38
+ imhist(left_image, right_image, titles=["left", "right"])
39
+ ```
40
+
41
+ ```python
42
+ from iad.vis.mpl_utils import fig2img
43
+
44
+ pil_image = fig2img(figure)
45
+ ```
@@ -4,11 +4,14 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "ialdev-vis"
7
- version = "0.1.0"
7
+ version = "0.2.0"
8
8
  description = "iad.vis — visualization utilities (image grids, viewers, colormaps, matplotlib helpers)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  license = {text = "MIT"}
12
+ authors = [
13
+ {name = "ipcoder"}
14
+ ]
12
15
  classifiers = [
13
16
  "Development Status :: 4 - Beta",
14
17
  "Intended Audience :: Developers",
@@ -28,6 +31,9 @@ dependencies = [
28
31
  ]
29
32
 
30
33
  [project.optional-dependencies]
34
+ graphviz = [
35
+ "pygraphviz>=1.14,<2",
36
+ ]
31
37
  qt = [
32
38
  "PyQt5>=5.15.0",
33
39
  "scikit-image>=0.19.0",
@@ -45,9 +51,14 @@ dev = [
45
51
  "pytest-cov>=3.0.0",
46
52
  ]
47
53
  all = [
48
- "ialdev-vis[qt,jupyter,3d,dev]",
54
+ "ialdev-vis[graphviz,qt,jupyter,3d,dev]",
49
55
  ]
50
56
 
57
+ [project.urls]
58
+ Homepage = "https://github.com/ipcoder/ialdev/tree/master/vis"
59
+ Repository = "https://github.com/ipcoder/ialdev"
60
+ Issues = "https://github.com/ipcoder/ialdev/issues"
61
+
51
62
  [tool.flit.module]
52
63
  name = "iad.vis"
53
64
 
@@ -0,0 +1,99 @@
1
+ import re
2
+
3
+ from pygraphviz import AGraph
4
+
5
+
6
+ class IGraph(AGraph):
7
+ """See ``vis/tests/test_dotstyle.py`` for examples."""
8
+
9
+ def __init__(self, thing=None, filename=None, data=None,
10
+ string=None, handle=None, name='', strict=True,
11
+ directed=False, styles=None, **attr, ):
12
+ """
13
+ Add styles kw to AGRaph support DotStyle aliases in the dot format.
14
+ """
15
+ self.styles = {} if styles is None else styles
16
+
17
+ if string:
18
+ for s in self.styles:
19
+ string = re.sub(fr'(\[[^\]]*?){s}\b', fr'\1{styles[s].to_str()}', string)
20
+ # print(string)
21
+ super().__init__(thing=thing, filename=filename, data=data, string=string,
22
+ handle=handle, name=name, strict=strict, directed=directed, **attr)
23
+
24
+ def copy(self):
25
+ from copy import deepcopy
26
+ res = super().copy()
27
+ res.styles = deepcopy(self.styles)
28
+ return res
29
+
30
+ def _repr_svg_(self):
31
+ return str(self.draw(prog='dot', format='svg'))
32
+
33
+ def select_edges(self, chain: str):
34
+ for p in '-,>':
35
+ chain = chain.replace(p, ' ')
36
+ chain = chain.split()
37
+ return [self.get_edge(*e) for e in zip(chain[:-1], chain[1:])]
38
+
39
+ def style_edges(self, edges, attrs):
40
+ if isinstance(edges, str):
41
+ edges = self.select_edges(edges)
42
+ if isinstance(attrs, str):
43
+ attrs = self.styles[attrs]
44
+ for e in edges:
45
+ e.attr.update(attrs)
46
+
47
+ def delete_node_edges(self, node, in_edges=True, out_edges=True):
48
+ """ Delete the node with its edges."""
49
+ if in_edges: self.delete_edges_from(self.in_edges(node))
50
+ if out_edges: self.delete_edges_from(self.out_edges(node))
51
+ self.delete_node(node)
52
+
53
+
54
+ class DotStyle(dict):
55
+ """
56
+ Provides "styles" arithmetic for dot format.
57
+ See ``vis/tests/test_dotstyle.py`` for examples.
58
+ """
59
+ def __init__(self, val=None, **kw):
60
+ """
61
+ Dot styles as dict
62
+ """
63
+ val = self.from_str(val) if isinstance(val, str) else {} if val is None else val
64
+ assert isinstance(val, dict)
65
+ val.update(kw)
66
+ super().__init__(val)
67
+
68
+ @staticmethod
69
+ def from_str(val: str):
70
+ import re
71
+
72
+ def parse_val(s, sv):
73
+ if sv:
74
+ for op in (int, float, str):
75
+ try:
76
+ s = op(sv)
77
+ except:
78
+ continue # if failed - continue for the next casting attempt
79
+ break # otherwise - exit with success
80
+ return s # last cast option -> str always succeeds
81
+
82
+ found = re.findall(r'(\w+)\s*=\s*(?:"([^"]+)"|([^\s]+))', val)
83
+ return {key: parse_val(s, sv) for key, s, sv in found}
84
+
85
+ def to_str(self):
86
+ return ' '.join([key + '=' + (f'"{v}"' if isinstance(v, str) and ' ' in v
87
+ else f'{v}') for key, v in self.items()])
88
+
89
+ def __iadd__(self, other):
90
+ self.update(other)
91
+ return self
92
+
93
+ def __add__(self, other):
94
+ res = self.__class__(self)
95
+ res.update(other)
96
+ return res
97
+
98
+ def __radd__(self, other):
99
+ return self.__class__(other) + self
@@ -203,7 +203,7 @@ def imhist(*imgs, titles=None, sharex=True, sharey=True, ax=None, grid=None,
203
203
 
204
204
  if measure:
205
205
  measure = as_list(measure)
206
- from iad.core.nptools import stats
206
+ from iad.core.data.nptools import stats
207
207
 
208
208
  for i, (im, ax) in enumerate(zip(imgs, axs)):
209
209
  plt.sca(ax)
@@ -0,0 +1,270 @@
1
+ import shutil
2
+ import tempfile
3
+
4
+ import pytest
5
+
6
+ pytest.importorskip("pygraphviz")
7
+
8
+ from iad.vis.dotstyle import *
9
+
10
+ dot_available = pytest.mark.skipif(
11
+ shutil.which("dot") is None, reason="graphviz 'dot' binary not in PATH"
12
+ )
13
+
14
+
15
+ @dot_available
16
+ def test_feud():
17
+
18
+ # Prepare styles
19
+ def styles():
20
+ resource = DotStyle(shape='rectangle', width=.9, height=.3, fixedsize='true',
21
+ fontname="Verdana", fontsize=10, penwidth=.5,
22
+ color=".14 .2 .4", style='filled', fillcolor=".14 0.2 1")
23
+ produce = DotStyle(shape='oval', penwidth=0.5, fontsize=12)
24
+
25
+ norm_edge = DotStyle(arrowsize=0.7, penwidth=0.5, color='gray')
26
+ bold_edge = DotStyle(arrowsize=0.6, penwidth=1.5, color='black')
27
+ war_edge = bold_edge + {'color': "0 0.5 1"}
28
+ lord_edge = bold_edge + {'color': 'blue'}
29
+
30
+ return locals()
31
+
32
+ dotsrc = """
33
+ digraph "Feaudal Processes" {
34
+ rankdir=LR
35
+ ranksep=0.4
36
+ newrank=true
37
+ size = "5.5!"
38
+
39
+ graph [label="Complete" labelloc=t]
40
+
41
+ edge[norm_edge]
42
+ node[produce]
43
+
44
+ {node[resource]
45
+ land peasants goods health protection labor
46
+ }
47
+
48
+ subgraph cluster_c1 { label = "" color=white
49
+ Reproduce -> peasants;
50
+ peasants -> Labor;
51
+ {rank = min peasants Labor}
52
+ {rank=same Reproduce }
53
+ }
54
+
55
+ goods -> Labor -> {land, labor} -> Work -> goods;
56
+
57
+ goods -> Lord -> {protection, land};
58
+
59
+ {goods, labor} -> Health -> health;
60
+ {peasants, goods, labor, health} -> Reproduce;
61
+
62
+ protection -> War -> {health, goods, land, peasants};
63
+
64
+
65
+ {rank=min peasants Labor Lord }
66
+ {rank=same land protection labor Reproduce}
67
+ {rank=same War Work Health }
68
+ }
69
+
70
+ """
71
+
72
+ G = IGraph(string=dotsrc, styles=styles())
73
+ with tempfile.SpooledTemporaryFile() as fp:
74
+ G.draw(fp, prog='dot', format='png')
75
+
76
+
77
+ def test_alexnet():
78
+ net_styles = dict(
79
+ conv=DotStyle(shape='invtrapezium', fillcolor='lightblue', style='filled'),
80
+ relu=DotStyle(shape='Msquare', fillcolor='darkolivegreen2', style='filled'),
81
+ conv_relu=DotStyle(color='darkolivegreen2'),
82
+ pool=DotStyle(shape='invtriangle', fillcolor='orange', style='filled'),
83
+ norm=DotStyle(shape='doublecircle', fillcolor='grey', style='filled'),
84
+ full=DotStyle(shape='circle', fillcolor='salmon', style='filled'),
85
+ drop=DotStyle(shape='tripleoctagon', fillcolor='plum2', style='filled'),
86
+
87
+ to_conv=DotStyle(color='lightblue', style='bold'),
88
+ to_norm=DotStyle(color='grey', style='bold'),
89
+ to_pool=DotStyle(color='orange', style='bold'),
90
+
91
+ )
92
+
93
+ dotsrc_net = """
94
+ digraph Alexnet {
95
+ // GRAPH OPTIONS
96
+ rankdir=TB; // From Top to Bottom
97
+ size = "15!"
98
+
99
+ labelloc="t"; // Tittle possition: top
100
+ label="Alexnet";
101
+
102
+ // ======================= NODES ====================================
103
+ data [shape=box3d, color=black];
104
+
105
+ label [shape=tab, color=black];
106
+
107
+ loss [shape=component, color=black];
108
+
109
+ node [conv];
110
+ conv1;
111
+ conv3;
112
+
113
+ node [relu]; // Rectified Linear Unit nodes
114
+ relu1;
115
+ relu3;
116
+ relu6;
117
+ relu7;
118
+
119
+
120
+ // Splitted layer 2
121
+ // ================
122
+ //
123
+ // Layers with separated convolutions need to be in subgraphs
124
+ // This is because we want arrows from individual nodes but
125
+ // we want to consider all of them as a unique layer.
126
+ //
127
+
128
+ subgraph layer2 {
129
+ node [conv]; // Convolution nodes
130
+ conv2_1;
131
+ conv2_2;
132
+ node [relu]; // Rectified Linear Unit nodes
133
+ relu2_1;
134
+ relu2_2;
135
+ }
136
+
137
+ // Splitted layer 4
138
+ // ================
139
+
140
+ subgraph layer4 {
141
+ node [conv]; // Convolution nodes
142
+ conv3
143
+ relu3
144
+ conv4_1;
145
+ conv4_2;
146
+ node [relu]; // Rectified Linear Unit nodes
147
+ relu4_1;
148
+ relu4_2;
149
+ }
150
+
151
+ // Splitted layer 5
152
+ // ================
153
+
154
+ subgraph layer5{
155
+ node [conv]; // Convolution nodes
156
+ conv5_1;
157
+ conv5_2;
158
+
159
+ node [relu];
160
+ relu5_1;
161
+ relu5_2;
162
+ }
163
+
164
+
165
+ node [pool]; // Pooling nodes
166
+ pool1;
167
+ pool2;
168
+ pool5;
169
+
170
+ node [norm]; // Normalization nodes
171
+ norm1;
172
+ norm2;
173
+
174
+ node [full];
175
+ fc6;
176
+ fc7;
177
+ fc8;
178
+
179
+ node [drop];
180
+ drop6;
181
+ drop7;
182
+
183
+ // =========================================== LAYESRS =================================
184
+
185
+ // LAYER 1
186
+ // -------------------------
187
+
188
+ data -> conv1 [to_conv, label="out = 96, kernel = 11, stride = 4"];
189
+
190
+ edge [conv_relu];
191
+ conv1 -> relu1;
192
+ relu1 -> conv1;
193
+
194
+ conv1 -> norm1 [to_norm, label="local_size = 5, alpha = 0.0001, beta = 0.75"];
195
+ norm1 -> pool1 [to_pool, label="pool = MAX, kernel = 3, stride = 2"];
196
+
197
+ pool1 -> conv2_1 [to_conv, label="out = 256, kernel = 5, pad = 2"];
198
+ pool1 -> conv2_2 [to_conv];
199
+
200
+ // LAYER 2
201
+ // --------------------------
202
+ edge [conv_relu];
203
+ conv2_1 -> relu2_1;
204
+ conv2_2 -> relu2_2;
205
+ relu2_1 -> conv2_1;
206
+ relu2_2 -> conv2_2;
207
+
208
+ conv2_1 -> norm2 [to_norm, label="local_size = 5, alpha = 0.0001, beta = 0.75"];
209
+ conv2_2 -> norm2 [to_norm];
210
+ norm2 -> pool2 [to_pool, label="pool = MAX, kernel = 3, stride = 2"];
211
+ pool2 -> conv3 [to_conv, label="out = 384, kernel = 3, pad = 1"];
212
+
213
+ // LAYER 3
214
+ // -------------------------
215
+ conv3 -> relu3 [conv_relu];
216
+ relu3 -> conv3 [conv_relu];
217
+ conv3 -> conv4_1 [to_conv, label="out = 384, kernel = 3, pad = 1"];
218
+ conv3 -> conv4_2 [to_conv];
219
+
220
+ // LAYER 4
221
+ // ------------------
222
+ edge [conv_relu];
223
+ conv4_1 -> relu4_1;
224
+ relu4_1 -> conv4_1;
225
+ conv4_2 -> relu4_2;
226
+ relu4_2 -> conv4_2;
227
+
228
+ conv4_1 -> conv5_1 [to_conv, label="out = 256, kernel = 3, pad = 1"];
229
+ conv4_2 -> conv5_2 [to_conv];
230
+
231
+
232
+ // LAYER 5
233
+ // ----------------------
234
+ edge [conv_relu];
235
+ conv5_1 -> relu5_1;
236
+ relu5_1 -> conv5_1;
237
+ conv5_2 -> relu5_2;
238
+ relu5_2 -> conv5_2;
239
+
240
+ conv5_1 -> pool5 [to_pool, label="pool = MAX, kernel = 3, stride = 2"];
241
+ conv5_2 -> pool5 [to_pool];
242
+
243
+ pool5 -> fc6 [color=salmon, style=bold, label="out = 4096"];
244
+ fc6 -> relu6 [conv_relu];
245
+ relu6 -> fc6 [conv_relu];
246
+ fc6 -> drop6 [color=plum2, style=bold, label="dropout_ratio = 0.5"];
247
+ drop6 -> fc6 [color=plum2];
248
+
249
+ // LAYER 6
250
+ // -----------------------
251
+ fc6 -> fc7 [color=salmon, style=bold, label="out = 4096"];
252
+
253
+ // LAYER 7
254
+ // ----------------------
255
+ fc7 -> relu7 [conv_relu];
256
+ relu7 -> fc7 [conv_relu];
257
+ fc7 -> drop7 [color=plum2, style=bold, label="dropout_ratio = 0.5"];
258
+ drop7 -> fc7 [color=plum2];
259
+ fc7 -> fc8 [color=salmon, style=bold, label="out = 1000"];
260
+
261
+ // LAYER 8
262
+ // ---------------------
263
+ edge [color=black]
264
+ fc8 -> loss;
265
+ label -> loss;
266
+ }
267
+ """
268
+
269
+ G = IGraph(string=dotsrc_net, styles=net_styles)
270
+ #G.draw('alex_net.svg', prog='dot')
ialdev_vis-0.1.0/PKG-INFO DELETED
@@ -1,39 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: ialdev-vis
3
- Version: 0.1.0
4
- Summary: iad.vis — visualization utilities (image grids, viewers, colormaps, matplotlib helpers)
5
- Requires-Python: >=3.10
6
- Description-Content-Type: text/markdown
7
- Classifier: Development Status :: 4 - Beta
8
- Classifier: Intended Audience :: Developers
9
- Classifier: Intended Audience :: Science/Research
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Requires-Dist: ialdev-core
15
- Requires-Dist: ialdev-io
16
- Requires-Dist: matplotlib>=3.5.0
17
- Requires-Dist: numpy>=1.20.0
18
- Requires-Dist: regex>=2021.0.0
19
- Requires-Dist: open3d>=0.15.0 ; extra == "3d"
20
- Requires-Dist: ipyvolume>=0.6.0 ; extra == "3d"
21
- Requires-Dist: ialdev-vis[qt, jupyter, 3d, dev] ; extra == "all"
22
- Requires-Dist: pytest>=7.0.0 ; extra == "dev"
23
- Requires-Dist: pytest-cov>=3.0.0 ; extra == "dev"
24
- Requires-Dist: ipywidgets>=7.0.0 ; extra == "jupyter"
25
- Requires-Dist: IPython>=7.0.0 ; extra == "jupyter"
26
- Requires-Dist: PyQt5>=5.15.0 ; extra == "qt"
27
- Requires-Dist: scikit-image>=0.19.0 ; extra == "qt"
28
- Provides-Extra: 3d
29
- Provides-Extra: all
30
- Provides-Extra: dev
31
- Provides-Extra: jupyter
32
- Provides-Extra: qt
33
-
34
- # ialdev-vis
35
-
36
- `iad.vis` — visualization utilities (image grids, viewers, colormaps, matplotlib helpers).
37
-
38
- Install: `pip install ialdev-vis`
39
-
@@ -1,5 +0,0 @@
1
- # ialdev-vis
2
-
3
- `iad.vis` — visualization utilities (image grids, viewers, colormaps, matplotlib helpers).
4
-
5
- Install: `pip install ialdev-vis`