juniper-canopy 0.3.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.
- juniper_canopy-0.3.0/LICENSE +9 -0
- juniper_canopy-0.3.0/PKG-INFO +277 -0
- juniper_canopy-0.3.0/README.md +232 -0
- juniper_canopy-0.3.0/juniper_canopy/__init__.py +4 -0
- juniper_canopy-0.3.0/juniper_canopy.egg-info/PKG-INFO +277 -0
- juniper_canopy-0.3.0/juniper_canopy.egg-info/SOURCES.txt +38 -0
- juniper_canopy-0.3.0/juniper_canopy.egg-info/dependency_links.txt +1 -0
- juniper_canopy-0.3.0/juniper_canopy.egg-info/requires.txt +20 -0
- juniper_canopy-0.3.0/juniper_canopy.egg-info/top_level.txt +5 -0
- juniper_canopy-0.3.0/pyproject.toml +253 -0
- juniper_canopy-0.3.0/setup.cfg +4 -0
- juniper_canopy-0.3.0/src/backend/__init__.py +59 -0
- juniper_canopy-0.3.0/src/backend/cascor_service_adapter.py +306 -0
- juniper_canopy-0.3.0/src/backend/cassandra_client.py +499 -0
- juniper_canopy-0.3.0/src/backend/data_adapter.py +534 -0
- juniper_canopy-0.3.0/src/backend/demo_backend.py +253 -0
- juniper_canopy-0.3.0/src/backend/protocol.py +140 -0
- juniper_canopy-0.3.0/src/backend/redis_client.py +536 -0
- juniper_canopy-0.3.0/src/backend/service_backend.py +135 -0
- juniper_canopy-0.3.0/src/backend/statistics.py +241 -0
- juniper_canopy-0.3.0/src/backend/training_monitor.py +623 -0
- juniper_canopy-0.3.0/src/backend/training_state_machine.py +329 -0
- juniper_canopy-0.3.0/src/communication/__init__.py +5 -0
- juniper_canopy-0.3.0/src/communication/websocket_manager.py +749 -0
- juniper_canopy-0.3.0/src/frontend/__init__.py +9 -0
- juniper_canopy-0.3.0/src/frontend/base_component.py +101 -0
- juniper_canopy-0.3.0/src/frontend/callback_context.py +153 -0
- juniper_canopy-0.3.0/src/frontend/components/__init__.py +3 -0
- juniper_canopy-0.3.0/src/frontend/components/about_panel.py +351 -0
- juniper_canopy-0.3.0/src/frontend/components/cassandra_panel.py +483 -0
- juniper_canopy-0.3.0/src/frontend/components/dataset_plotter.py +485 -0
- juniper_canopy-0.3.0/src/frontend/components/decision_boundary.py +444 -0
- juniper_canopy-0.3.0/src/frontend/components/hdf5_snapshots_panel.py +1080 -0
- juniper_canopy-0.3.0/src/frontend/components/metrics_panel.py +1823 -0
- juniper_canopy-0.3.0/src/frontend/components/network_visualizer.py +1433 -0
- juniper_canopy-0.3.0/src/frontend/components/redis_panel.py +534 -0
- juniper_canopy-0.3.0/src/frontend/components/training_metrics.py +73 -0
- juniper_canopy-0.3.0/src/frontend/dashboard_manager.py +1539 -0
- juniper_canopy-0.3.0/src/logger/__init__.py +0 -0
- juniper_canopy-0.3.0/src/logger/logger.py +622 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Juniper Canopy project
|
|
2
|
+
|
|
3
|
+
Copyright 2024, 2025 Paul Calnon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: juniper-canopy
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Real-time monitoring dashboard for Cascade Correlation Neural Network
|
|
5
|
+
Author-email: Paul Calnon <paul.calnon@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/pcalnon/juniper-canopy
|
|
8
|
+
Project-URL: Documentation, https://github.com/pcalnon/juniper-canopy#readme
|
|
9
|
+
Project-URL: Repository, https://github.com/pcalnon/juniper-canopy
|
|
10
|
+
Project-URL: Issues, https://github.com/pcalnon/juniper-canopy/issues
|
|
11
|
+
Keywords: neural-network,visualization,monitoring,dashboard,cascade-correlation
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: dash>=3.0.0
|
|
27
|
+
Requires-Dist: dash-bootstrap-components>=2.0.0
|
|
28
|
+
Requires-Dist: fastapi>=0.100.0
|
|
29
|
+
Requires-Dist: uvicorn[standard]>=0.20.0
|
|
30
|
+
Requires-Dist: plotly>=5.0.0
|
|
31
|
+
Requires-Dist: numpy>=1.24.0
|
|
32
|
+
Requires-Dist: scipy>=1.10.0
|
|
33
|
+
Requires-Dist: PyYAML>=6.0
|
|
34
|
+
Requires-Dist: pydantic>=2.0.0
|
|
35
|
+
Requires-Dist: websockets>=12.0
|
|
36
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
37
|
+
Requires-Dist: nest-asyncio>=1.5.0
|
|
38
|
+
Requires-Dist: requests>=2.28.0
|
|
39
|
+
Provides-Extra: juniper-data
|
|
40
|
+
Requires-Dist: juniper-data-client>=0.3.0; extra == "juniper-data"
|
|
41
|
+
Requires-Dist: requests>=2.28.0; extra == "juniper-data"
|
|
42
|
+
Provides-Extra: juniper-cascor
|
|
43
|
+
Requires-Dist: juniper-cascor-client>=0.1.0; extra == "juniper-cascor"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
<div align="right" width="150px" height="150px" align="right" valign="top"> <img src="src/assets/Juniper_Logo_150px.png" alt="Juniper" align="right" valign="top" width="150px" /></div>
|
|
47
|
+
<br /> <br /> <br /> <br />
|
|
48
|
+
|
|
49
|
+
# Juniper: Dynamic Neural Network Research Platform
|
|
50
|
+
|
|
51
|
+
Juniper is an AI/ML research platform for investigating dynamic neural network architectures and novel learning paradigms. The project emphasizes ground-up implementations from primary literature, enabling a more transparent exploration of fundamental algorithms.
|
|
52
|
+
|
|
53
|
+
## Ecosystem Compatibility
|
|
54
|
+
|
|
55
|
+
This service is part of the [Juniper](https://github.com/pcalnon/juniper-ml) ecosystem.
|
|
56
|
+
Verified compatible versions:
|
|
57
|
+
|
|
58
|
+
| juniper-data | juniper-cascor | juniper-canopy | data-client | cascor-client | cascor-worker |
|
|
59
|
+
|---|---|---|---|---|---|
|
|
60
|
+
| 0.4.x | 0.3.x | 0.2.x | >=0.3.1 | >=0.1.0 | >=0.1.0 |
|
|
61
|
+
|
|
62
|
+
For full-stack Docker deployment and integration tests, see [juniper-deploy](https://github.com/pcalnon/juniper-deploy).
|
|
63
|
+
|
|
64
|
+
## Architecture
|
|
65
|
+
|
|
66
|
+
JuniperCanopy is the **monitoring dashboard** of the Juniper ecosystem. It depends on both JuniperData and JuniperCascor to display real-time training data.
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
┌─────────────────────┐ REST+WS ┌──────────────────────┐
|
|
70
|
+
│ JuniperCanopy │ ◄──────────────► │ JuniperCascor │
|
|
71
|
+
│ Dashboard ◄─here │ │ Training Svc │
|
|
72
|
+
│ Port 8050 │ │ Port 8200 │
|
|
73
|
+
└──────────┬──────────┘ └──────────┬───────────┘
|
|
74
|
+
│ REST │ REST
|
|
75
|
+
▼ ▼
|
|
76
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
77
|
+
│ JuniperData │
|
|
78
|
+
│ Dataset Service · Port 8100 │
|
|
79
|
+
└──────────────────────────────────────────────────────────────┘
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Modes**: *Service mode* (live CasCor backend via `CASCOR_SERVICE_URL`) or *Demo mode* (`CASCOR_DEMO_MODE=1`, no backend required).
|
|
83
|
+
|
|
84
|
+
## Related Services
|
|
85
|
+
|
|
86
|
+
| Service | Relationship | Notes |
|
|
87
|
+
|---------|-------------|-------|
|
|
88
|
+
| [juniper-cascor](https://github.com/pcalnon/juniper-cascor) | Canopy monitors CasCor training | Set `CASCOR_SERVICE_URL` to activate service mode |
|
|
89
|
+
| [juniper-data](https://github.com/pcalnon/juniper-data) | Canopy fetches datasets for visualization | Set `JUNIPER_DATA_URL` |
|
|
90
|
+
| [juniper-cascor-client](https://github.com/pcalnon/juniper-cascor-client) | REST+WS client used internally by Canopy | `pip install juniper-cascor-client` |
|
|
91
|
+
|
|
92
|
+
### Service Configuration
|
|
93
|
+
|
|
94
|
+
| Variable | Required | Default | Description |
|
|
95
|
+
|----------|----------|---------|-------------|
|
|
96
|
+
| `CASCOR_SERVICE_URL` | Yes\* | — | JuniperCascor URL — activates service mode |
|
|
97
|
+
| `JUNIPER_DATA_URL` | No | `http://localhost:8100` | JuniperData URL |
|
|
98
|
+
| `CASCOR_DEMO_MODE` | No | — | Set to `1` to run without a backend |
|
|
99
|
+
| `CANOPY_HOST` | No | `0.0.0.0` | Listen address |
|
|
100
|
+
| `CANOPY_PORT` | No | `8050` | Service port |
|
|
101
|
+
|
|
102
|
+
\* Required for service mode. Omit to fall back to demo mode.
|
|
103
|
+
|
|
104
|
+
### Docker Deployment
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Full stack (recommended):
|
|
108
|
+
git clone https://github.com/pcalnon/juniper-deploy.git
|
|
109
|
+
cd juniper-deploy && docker compose up --build
|
|
110
|
+
|
|
111
|
+
# Standalone (service mode):
|
|
112
|
+
docker build -t juniper-canopy:latest .
|
|
113
|
+
docker run -p 8050:8050 \
|
|
114
|
+
-e CASCOR_SERVICE_URL=http://host.docker.internal:8200 \
|
|
115
|
+
-e JUNIPER_DATA_URL=http://host.docker.internal:8100 \
|
|
116
|
+
juniper-canopy:latest
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Active Research Components
|
|
120
|
+
|
|
121
|
+
**juniper_cascor**: Cascade Correlation Neural Network
|
|
122
|
+
|
|
123
|
+
- Reference implementation from foundational research (Fahlman & Lebiere, 1990)
|
|
124
|
+
- Designed for flexibility, modularity, and scalability
|
|
125
|
+
- Enables investigation of constructive learning algorithms
|
|
126
|
+
|
|
127
|
+
**juniper_canopy**: Interactive Research Interface
|
|
128
|
+
|
|
129
|
+
- Research-driven monitoring and visualization environment
|
|
130
|
+
- Delivers novel observations through real-time network introspection
|
|
131
|
+
- Transforms metrics into insights, accelerating experimental iteration
|
|
132
|
+
|
|
133
|
+
## Research Philosophy
|
|
134
|
+
|
|
135
|
+
Juniper prioritizes **transparency over convenience** and **understanding over abstraction**. By implementing algorithms from first principles, the platform provides increased visibility into network behavior, enabling a more rigorous and more controlled investigation of learning dynamics and architectural innovations.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Quick Start Guide
|
|
140
|
+
|
|
141
|
+
### Get Juniper Canopy running in 5 minutes
|
|
142
|
+
|
|
143
|
+
**Version:** 0.25.0
|
|
144
|
+
**Status:** ✅ Production Ready
|
|
145
|
+
|
|
146
|
+
### Prerequisites
|
|
147
|
+
|
|
148
|
+
- **Python 3.11 or higher** installed
|
|
149
|
+
- **Conda/Mamba** (Miniforge3 or Miniconda)
|
|
150
|
+
- **Git** for cloning the repository
|
|
151
|
+
|
|
152
|
+
### Quick Start (Demo Mode)
|
|
153
|
+
|
|
154
|
+
Demo mode runs without the CasCor backend, simulating training data for development and testing.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Clone the repository
|
|
158
|
+
git clone https://github.com/pcalnon/juniper-canopy.git
|
|
159
|
+
cd juniper-canopy
|
|
160
|
+
|
|
161
|
+
# Activate environment
|
|
162
|
+
conda activate JuniperCanopy
|
|
163
|
+
|
|
164
|
+
# Launch demo mode
|
|
165
|
+
./demo
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Expected output:**
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
INFO: Uvicorn running on http://0.0.0.0:8050 (Press CTRL+C to quit)
|
|
172
|
+
Dash is running on http://127.0.0.1:8050/
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Open Dashboard:** Navigate to `http://localhost:8050/dashboard/`
|
|
176
|
+
|
|
177
|
+
You should see:
|
|
178
|
+
|
|
179
|
+
- ✅ **Training Metrics** tab with live loss/accuracy plots
|
|
180
|
+
- ✅ **Network Topology** tab with network visualization
|
|
181
|
+
- ✅ **Decision Boundary** tab with boundary plot
|
|
182
|
+
- ✅ **Dataset** tab with data points
|
|
183
|
+
|
|
184
|
+
### Verify Installation
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Health check
|
|
188
|
+
curl http://localhost:8050/health
|
|
189
|
+
|
|
190
|
+
# Get current metrics
|
|
191
|
+
curl http://localhost:8050/api/metrics
|
|
192
|
+
|
|
193
|
+
# Get network topology
|
|
194
|
+
curl http://localhost:8050/api/topology
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Production Mode
|
|
198
|
+
|
|
199
|
+
Connect to the real CasCor backend:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Set backend path
|
|
203
|
+
export CASCOR_BACKEND_PATH=/path/to/cascor
|
|
204
|
+
|
|
205
|
+
# Disable demo mode
|
|
206
|
+
unset CASCOR_DEMO_MODE
|
|
207
|
+
|
|
208
|
+
# Launch
|
|
209
|
+
./try
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
For complete setup instructions, see [docs/QUICK_START.md](docs/QUICK_START.md).
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Documentation
|
|
217
|
+
|
|
218
|
+
### Documentation Overview
|
|
219
|
+
|
|
220
|
+
- [Documentation Overview](docs/DOCUMENTATION_OVERVIEW.md) - Complete navigation guide
|
|
221
|
+
- [README.md](README.md) - This file
|
|
222
|
+
- [CHANGELOG.md](CHANGELOG.md) - Version history and release notes
|
|
223
|
+
- [Constants Guide](docs/cascor/CONSTANTS_GUIDE.md) - Application constants reference
|
|
224
|
+
|
|
225
|
+
### Install and Configuration
|
|
226
|
+
|
|
227
|
+
- [Quick Start Guide](docs/QUICK_START.md) - Get running in 5 minutes
|
|
228
|
+
- [Environment Setup Guide](docs/ENVIRONMENT_SETUP.md) - Complete environment configuration
|
|
229
|
+
- [User Manual](docs/USER_MANUAL.md) - Comprehensive usage guide
|
|
230
|
+
|
|
231
|
+
### API Documentation
|
|
232
|
+
|
|
233
|
+
- [API Reference](docs/api/API_REFERENCE.md) - Complete REST API and WebSocket documentation
|
|
234
|
+
- [API Schemas](docs/api/API_SCHEMAS.md) - Request/response JSON schemas
|
|
235
|
+
|
|
236
|
+
### Cascor Backend Documentation
|
|
237
|
+
|
|
238
|
+
- [CasCor Backend Quick Start](docs/cascor/CASCOR_BACKEND_QUICK_START.md) - Connect to CasCor in 5 minutes
|
|
239
|
+
- [CasCor Backend Manual](docs/cascor/CASCOR_BACKEND_MANUAL.md) - Complete integration guide
|
|
240
|
+
- [CasCor Backend Reference](docs/cascor/CASCOR_BACKEND_REFERENCE.md) - Technical API reference
|
|
241
|
+
|
|
242
|
+
### CI/CD Documentation
|
|
243
|
+
|
|
244
|
+
- [CI/CD Quick Start](docs/ci_cd/CICD_QUICK_START.md) - Get CI/CD running in 5 minutes
|
|
245
|
+
- [CI/CD Environment Setup](docs/ci_cd/CICD_ENVIRONMENT_SETUP.md) - Complete CI/CD environment configuration
|
|
246
|
+
- [CI/CD Manual](docs/ci_cd/CICD_MANUAL.md) - Comprehensive CI/CD usage guide
|
|
247
|
+
- [CI/CD Reference](docs/ci_cd/CICD_REFERENCE.md) - CI/CD technical reference
|
|
248
|
+
|
|
249
|
+
### Demo Mode Documentation
|
|
250
|
+
|
|
251
|
+
- [Demo Mode Quick Start](docs/demo/DEMO_MODE_QUICK_START.md) - Start demo mode in 5 minutes
|
|
252
|
+
- [Demo Mode Environment Setup](docs/demo/DEMO_MODE_ENVIRONMENT_SETUP.md) - Demo mode configuration
|
|
253
|
+
- [Demo Mode Manual](docs/demo/DEMO_MODE_MANUAL.md) - Complete demo mode guide
|
|
254
|
+
- [Demo Mode Reference](docs/demo/DEMO_MODE_REFERENCE.md) - Demo mode technical reference
|
|
255
|
+
|
|
256
|
+
### Testing Documentation
|
|
257
|
+
|
|
258
|
+
- [Testing Quick Start](docs/testing/TESTING_QUICK_START.md) - Run tests in 5 minutes
|
|
259
|
+
- [Testing Environment Setup](docs/testing/TESTING_ENVIRONMENT_SETUP.md) - Test environment configuration
|
|
260
|
+
- [Testing Manual](docs/testing/TESTING_MANUAL.md) - Comprehensive testing guide
|
|
261
|
+
- [Testing Reference](docs/testing/TESTING_REFERENCE.md) - Testing technical reference
|
|
262
|
+
- [Testing Reports Coverage](docs/testing/TESTING_REPORTS_COVERAGE.md) - Coverage analysis and reports
|
|
263
|
+
- [Testing Analysis Report](docs/testing/TESTING_ANALYSIS_REPORT.md) - Test suite analysis
|
|
264
|
+
- [Test Enablement Quick Reference](docs/testing/TEST_ENABLEMENT_QUICK_REFERENCE.md) - Quick test enablement guide
|
|
265
|
+
- [Selective Test Guide](docs/testing/SELECTIVE_TEST_GUIDE.md) - Run specific test subsets
|
|
266
|
+
- [Selective Test Enablement Summary](docs/testing/SELECTIVE_TEST_ENABLEMENT_SUMMARY.md) - Test enablement overview
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## License
|
|
271
|
+
|
|
272
|
+
MIT License - See [LICENSE](LICENSE) for details.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
**Last Updated:** January 29, 2026
|
|
277
|
+
**Version:** 0.25.0
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
<div align="right" width="150px" height="150px" align="right" valign="top"> <img src="src/assets/Juniper_Logo_150px.png" alt="Juniper" align="right" valign="top" width="150px" /></div>
|
|
2
|
+
<br /> <br /> <br /> <br />
|
|
3
|
+
|
|
4
|
+
# Juniper: Dynamic Neural Network Research Platform
|
|
5
|
+
|
|
6
|
+
Juniper is an AI/ML research platform for investigating dynamic neural network architectures and novel learning paradigms. The project emphasizes ground-up implementations from primary literature, enabling a more transparent exploration of fundamental algorithms.
|
|
7
|
+
|
|
8
|
+
## Ecosystem Compatibility
|
|
9
|
+
|
|
10
|
+
This service is part of the [Juniper](https://github.com/pcalnon/juniper-ml) ecosystem.
|
|
11
|
+
Verified compatible versions:
|
|
12
|
+
|
|
13
|
+
| juniper-data | juniper-cascor | juniper-canopy | data-client | cascor-client | cascor-worker |
|
|
14
|
+
|---|---|---|---|---|---|
|
|
15
|
+
| 0.4.x | 0.3.x | 0.2.x | >=0.3.1 | >=0.1.0 | >=0.1.0 |
|
|
16
|
+
|
|
17
|
+
For full-stack Docker deployment and integration tests, see [juniper-deploy](https://github.com/pcalnon/juniper-deploy).
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
JuniperCanopy is the **monitoring dashboard** of the Juniper ecosystem. It depends on both JuniperData and JuniperCascor to display real-time training data.
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
┌─────────────────────┐ REST+WS ┌──────────────────────┐
|
|
25
|
+
│ JuniperCanopy │ ◄──────────────► │ JuniperCascor │
|
|
26
|
+
│ Dashboard ◄─here │ │ Training Svc │
|
|
27
|
+
│ Port 8050 │ │ Port 8200 │
|
|
28
|
+
└──────────┬──────────┘ └──────────┬───────────┘
|
|
29
|
+
│ REST │ REST
|
|
30
|
+
▼ ▼
|
|
31
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
32
|
+
│ JuniperData │
|
|
33
|
+
│ Dataset Service · Port 8100 │
|
|
34
|
+
└──────────────────────────────────────────────────────────────┘
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Modes**: *Service mode* (live CasCor backend via `CASCOR_SERVICE_URL`) or *Demo mode* (`CASCOR_DEMO_MODE=1`, no backend required).
|
|
38
|
+
|
|
39
|
+
## Related Services
|
|
40
|
+
|
|
41
|
+
| Service | Relationship | Notes |
|
|
42
|
+
|---------|-------------|-------|
|
|
43
|
+
| [juniper-cascor](https://github.com/pcalnon/juniper-cascor) | Canopy monitors CasCor training | Set `CASCOR_SERVICE_URL` to activate service mode |
|
|
44
|
+
| [juniper-data](https://github.com/pcalnon/juniper-data) | Canopy fetches datasets for visualization | Set `JUNIPER_DATA_URL` |
|
|
45
|
+
| [juniper-cascor-client](https://github.com/pcalnon/juniper-cascor-client) | REST+WS client used internally by Canopy | `pip install juniper-cascor-client` |
|
|
46
|
+
|
|
47
|
+
### Service Configuration
|
|
48
|
+
|
|
49
|
+
| Variable | Required | Default | Description |
|
|
50
|
+
|----------|----------|---------|-------------|
|
|
51
|
+
| `CASCOR_SERVICE_URL` | Yes\* | — | JuniperCascor URL — activates service mode |
|
|
52
|
+
| `JUNIPER_DATA_URL` | No | `http://localhost:8100` | JuniperData URL |
|
|
53
|
+
| `CASCOR_DEMO_MODE` | No | — | Set to `1` to run without a backend |
|
|
54
|
+
| `CANOPY_HOST` | No | `0.0.0.0` | Listen address |
|
|
55
|
+
| `CANOPY_PORT` | No | `8050` | Service port |
|
|
56
|
+
|
|
57
|
+
\* Required for service mode. Omit to fall back to demo mode.
|
|
58
|
+
|
|
59
|
+
### Docker Deployment
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Full stack (recommended):
|
|
63
|
+
git clone https://github.com/pcalnon/juniper-deploy.git
|
|
64
|
+
cd juniper-deploy && docker compose up --build
|
|
65
|
+
|
|
66
|
+
# Standalone (service mode):
|
|
67
|
+
docker build -t juniper-canopy:latest .
|
|
68
|
+
docker run -p 8050:8050 \
|
|
69
|
+
-e CASCOR_SERVICE_URL=http://host.docker.internal:8200 \
|
|
70
|
+
-e JUNIPER_DATA_URL=http://host.docker.internal:8100 \
|
|
71
|
+
juniper-canopy:latest
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Active Research Components
|
|
75
|
+
|
|
76
|
+
**juniper_cascor**: Cascade Correlation Neural Network
|
|
77
|
+
|
|
78
|
+
- Reference implementation from foundational research (Fahlman & Lebiere, 1990)
|
|
79
|
+
- Designed for flexibility, modularity, and scalability
|
|
80
|
+
- Enables investigation of constructive learning algorithms
|
|
81
|
+
|
|
82
|
+
**juniper_canopy**: Interactive Research Interface
|
|
83
|
+
|
|
84
|
+
- Research-driven monitoring and visualization environment
|
|
85
|
+
- Delivers novel observations through real-time network introspection
|
|
86
|
+
- Transforms metrics into insights, accelerating experimental iteration
|
|
87
|
+
|
|
88
|
+
## Research Philosophy
|
|
89
|
+
|
|
90
|
+
Juniper prioritizes **transparency over convenience** and **understanding over abstraction**. By implementing algorithms from first principles, the platform provides increased visibility into network behavior, enabling a more rigorous and more controlled investigation of learning dynamics and architectural innovations.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Quick Start Guide
|
|
95
|
+
|
|
96
|
+
### Get Juniper Canopy running in 5 minutes
|
|
97
|
+
|
|
98
|
+
**Version:** 0.25.0
|
|
99
|
+
**Status:** ✅ Production Ready
|
|
100
|
+
|
|
101
|
+
### Prerequisites
|
|
102
|
+
|
|
103
|
+
- **Python 3.11 or higher** installed
|
|
104
|
+
- **Conda/Mamba** (Miniforge3 or Miniconda)
|
|
105
|
+
- **Git** for cloning the repository
|
|
106
|
+
|
|
107
|
+
### Quick Start (Demo Mode)
|
|
108
|
+
|
|
109
|
+
Demo mode runs without the CasCor backend, simulating training data for development and testing.
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Clone the repository
|
|
113
|
+
git clone https://github.com/pcalnon/juniper-canopy.git
|
|
114
|
+
cd juniper-canopy
|
|
115
|
+
|
|
116
|
+
# Activate environment
|
|
117
|
+
conda activate JuniperCanopy
|
|
118
|
+
|
|
119
|
+
# Launch demo mode
|
|
120
|
+
./demo
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Expected output:**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
INFO: Uvicorn running on http://0.0.0.0:8050 (Press CTRL+C to quit)
|
|
127
|
+
Dash is running on http://127.0.0.1:8050/
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Open Dashboard:** Navigate to `http://localhost:8050/dashboard/`
|
|
131
|
+
|
|
132
|
+
You should see:
|
|
133
|
+
|
|
134
|
+
- ✅ **Training Metrics** tab with live loss/accuracy plots
|
|
135
|
+
- ✅ **Network Topology** tab with network visualization
|
|
136
|
+
- ✅ **Decision Boundary** tab with boundary plot
|
|
137
|
+
- ✅ **Dataset** tab with data points
|
|
138
|
+
|
|
139
|
+
### Verify Installation
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Health check
|
|
143
|
+
curl http://localhost:8050/health
|
|
144
|
+
|
|
145
|
+
# Get current metrics
|
|
146
|
+
curl http://localhost:8050/api/metrics
|
|
147
|
+
|
|
148
|
+
# Get network topology
|
|
149
|
+
curl http://localhost:8050/api/topology
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Production Mode
|
|
153
|
+
|
|
154
|
+
Connect to the real CasCor backend:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Set backend path
|
|
158
|
+
export CASCOR_BACKEND_PATH=/path/to/cascor
|
|
159
|
+
|
|
160
|
+
# Disable demo mode
|
|
161
|
+
unset CASCOR_DEMO_MODE
|
|
162
|
+
|
|
163
|
+
# Launch
|
|
164
|
+
./try
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
For complete setup instructions, see [docs/QUICK_START.md](docs/QUICK_START.md).
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Documentation
|
|
172
|
+
|
|
173
|
+
### Documentation Overview
|
|
174
|
+
|
|
175
|
+
- [Documentation Overview](docs/DOCUMENTATION_OVERVIEW.md) - Complete navigation guide
|
|
176
|
+
- [README.md](README.md) - This file
|
|
177
|
+
- [CHANGELOG.md](CHANGELOG.md) - Version history and release notes
|
|
178
|
+
- [Constants Guide](docs/cascor/CONSTANTS_GUIDE.md) - Application constants reference
|
|
179
|
+
|
|
180
|
+
### Install and Configuration
|
|
181
|
+
|
|
182
|
+
- [Quick Start Guide](docs/QUICK_START.md) - Get running in 5 minutes
|
|
183
|
+
- [Environment Setup Guide](docs/ENVIRONMENT_SETUP.md) - Complete environment configuration
|
|
184
|
+
- [User Manual](docs/USER_MANUAL.md) - Comprehensive usage guide
|
|
185
|
+
|
|
186
|
+
### API Documentation
|
|
187
|
+
|
|
188
|
+
- [API Reference](docs/api/API_REFERENCE.md) - Complete REST API and WebSocket documentation
|
|
189
|
+
- [API Schemas](docs/api/API_SCHEMAS.md) - Request/response JSON schemas
|
|
190
|
+
|
|
191
|
+
### Cascor Backend Documentation
|
|
192
|
+
|
|
193
|
+
- [CasCor Backend Quick Start](docs/cascor/CASCOR_BACKEND_QUICK_START.md) - Connect to CasCor in 5 minutes
|
|
194
|
+
- [CasCor Backend Manual](docs/cascor/CASCOR_BACKEND_MANUAL.md) - Complete integration guide
|
|
195
|
+
- [CasCor Backend Reference](docs/cascor/CASCOR_BACKEND_REFERENCE.md) - Technical API reference
|
|
196
|
+
|
|
197
|
+
### CI/CD Documentation
|
|
198
|
+
|
|
199
|
+
- [CI/CD Quick Start](docs/ci_cd/CICD_QUICK_START.md) - Get CI/CD running in 5 minutes
|
|
200
|
+
- [CI/CD Environment Setup](docs/ci_cd/CICD_ENVIRONMENT_SETUP.md) - Complete CI/CD environment configuration
|
|
201
|
+
- [CI/CD Manual](docs/ci_cd/CICD_MANUAL.md) - Comprehensive CI/CD usage guide
|
|
202
|
+
- [CI/CD Reference](docs/ci_cd/CICD_REFERENCE.md) - CI/CD technical reference
|
|
203
|
+
|
|
204
|
+
### Demo Mode Documentation
|
|
205
|
+
|
|
206
|
+
- [Demo Mode Quick Start](docs/demo/DEMO_MODE_QUICK_START.md) - Start demo mode in 5 minutes
|
|
207
|
+
- [Demo Mode Environment Setup](docs/demo/DEMO_MODE_ENVIRONMENT_SETUP.md) - Demo mode configuration
|
|
208
|
+
- [Demo Mode Manual](docs/demo/DEMO_MODE_MANUAL.md) - Complete demo mode guide
|
|
209
|
+
- [Demo Mode Reference](docs/demo/DEMO_MODE_REFERENCE.md) - Demo mode technical reference
|
|
210
|
+
|
|
211
|
+
### Testing Documentation
|
|
212
|
+
|
|
213
|
+
- [Testing Quick Start](docs/testing/TESTING_QUICK_START.md) - Run tests in 5 minutes
|
|
214
|
+
- [Testing Environment Setup](docs/testing/TESTING_ENVIRONMENT_SETUP.md) - Test environment configuration
|
|
215
|
+
- [Testing Manual](docs/testing/TESTING_MANUAL.md) - Comprehensive testing guide
|
|
216
|
+
- [Testing Reference](docs/testing/TESTING_REFERENCE.md) - Testing technical reference
|
|
217
|
+
- [Testing Reports Coverage](docs/testing/TESTING_REPORTS_COVERAGE.md) - Coverage analysis and reports
|
|
218
|
+
- [Testing Analysis Report](docs/testing/TESTING_ANALYSIS_REPORT.md) - Test suite analysis
|
|
219
|
+
- [Test Enablement Quick Reference](docs/testing/TEST_ENABLEMENT_QUICK_REFERENCE.md) - Quick test enablement guide
|
|
220
|
+
- [Selective Test Guide](docs/testing/SELECTIVE_TEST_GUIDE.md) - Run specific test subsets
|
|
221
|
+
- [Selective Test Enablement Summary](docs/testing/SELECTIVE_TEST_ENABLEMENT_SUMMARY.md) - Test enablement overview
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
MIT License - See [LICENSE](LICENSE) for details.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
**Last Updated:** January 29, 2026
|
|
232
|
+
**Version:** 0.25.0
|