Python client library for interacting with the nanoHUB Dashboard API
Project description
nanohub-dashboards
Python client library for interacting with the nanoHUB Dashboard API. Load, manipulate, visualize, and save dashboards programmatically.
Installation
Install from PyPI:
pip install nanohub-dashboards
Then import in your code:
import nanohubremote as nr
from nanohubdashboard import Dashboard
Note: The package is published as nanohub-dashboards on PyPI but imported as nanohubdashboard (no hyphen).
Features
- Load existing dashboards from nanoHUB
- Manipulate plot configurations (types, properties, etc.)
- Add new plots and graphs to dashboards
- Preview dashboards locally before saving
- Save changes back to nanoHUB
- Export dashboards to standalone HTML files
- Full support for Plotly-based visualizations
Quick Start
Basic Usage
import nanohubremote as nr
from nanohubdashboard import Dashboard
# Create authenticated session
auth_data = {
"grant_type": "personal_token",
"token": "your_token_here"
}
session = nr.Session(auth_data, url="https://nanohub.org/api")
# Load a dashboard
dashboard = Dashboard(session)
dashboard.load(dashboard_id=8)
# View dashboard information
dashboard.print_graphs()
# Manipulate plots
dashboard.swap_all_bar_scatter()
# Visualize locally
dashboard.visualize(
output_file="my_dashboard.html",
open_browser=True
)
# Save changes back to nanoHUB
dashboard.save()
Preview Before Saving
Preview how your dashboard will look on the server without saving changes:
# Preview the dashboard configuration
dashboard.preview(open_browser=True)
Working with Individual Graphs
# Get a specific graph
graph = dashboard.get_graph(0)
# Access plots in the graph
for plot in graph.plots:
print(f"Plot type: {plot.type}")
# Modify plot properties
if plot.type == 'bar':
plot.type = 'scatter'
plot.mode = 'markers'
Adding New Plots
from nanohubdashboard import Graph, Plot
# Create a new plot
plot_config = {
'type': 'scatter',
'mode': 'lines',
'x': '%X_DATA',
'y': '%Y_DATA',
'name': 'My Plot'
}
plot = Plot(plot_config, index=0)
# Create a graph with the plot
graph = Graph(
query='MY_QUERY',
zone='main',
priority=1
)
graph.plots = [plot]
# Add to dashboard
dashboard.add_graph(graph)
Core Components
Dashboard
The main class for working with dashboards:
load(dashboard_id): Load a dashboard from the APIsave(): Save changes back to the servervisualize(output_file, open_browser): Generate local HTML visualizationpreview(output_file, open_browser): Preview server-rendered dashboardget_graph(index): Get a specific graph by indexadd_graph(graph): Add a new graph to the dashboardlist_graphs(): List all graphs in the dashboardprint_graphs(): Print a summary of all graphs
Graph
Represents a single graph/visualization in the dashboard:
plots: List of Plot objects in this graphquery: SQL query name that provides the datazone: Layout zone where the graph appearspriority: Display order prioritylayout_config: Plotly layout configurationhtml: Custom HTML content (for non-Plotly graphs)
Plot
Represents a single plot trace within a graph:
type: Plot type (e.g., 'scatter', 'bar', 'pie')mode: Plot mode for scatter plots (e.g., 'lines', 'markers')config: Full Plotly configuration dictionary- Direct property access (e.g.,
plot.x,plot.y,plot.name)
DashboardClient
Low-level API client for direct API access:
get_dashboard(dashboard_id): Get dashboard configurationcreate_dashboard(dashboard_config): Create a new dashboardupdate_dashboard(dashboard_id, dashboard_config): Update dashboarddelete_dashboard(dashboard_id): Delete a dashboardpreview_dashboard(...): Preview dashboard renderingvisualize(...): Generate local visualization
Authentication
The library uses nanohub-remote for authentication. You need a nanoHUB personal access token:
- Log in to nanoHUB
- Go to your account settings
- Generate a personal access token
- Use the token in your code:
auth_data = {
"grant_type": "personal_token",
"token": "your_token_here"
}
session = nr.Session(auth_data, url="https://nanohub.org/api")
Examples
See the examples directory for complete working examples:
- demo_simple_api.py: Basic dashboard manipulation
- demo_base.py: Complete workflow including save and preview
- demo_add_plots.py: Adding new graphs and plots
Requirements
- Python >= 3.6
- requests
- plotly
- pandas
- nanohub-remote
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and questions:
- GitHub Issues: Report issues
- nanoHUB Support: Contact support
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nanohub_dashboards-0.1.3.tar.gz.
File metadata
- Download URL: nanohub_dashboards-0.1.3.tar.gz
- Upload date:
- Size: 49.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22e382f8e00be638c231c458310edde60b1fdd6840930a38e307caad89f3d50c
|
|
| MD5 |
077d238138dff84994e40596b08db586
|
|
| BLAKE2b-256 |
51042afedc0eae99e36a3f71b3a902dc4a083813296946e62f0b06800235f286
|
File details
Details for the file nanohub_dashboards-0.1.3-py3-none-any.whl.
File metadata
- Download URL: nanohub_dashboards-0.1.3-py3-none-any.whl
- Upload date:
- Size: 48.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c10e428492ce1dcc3e1e8cbc1f1a96f7824bfd0afd7e2417c41851ff2fd4b527
|
|
| MD5 |
2e4e3f7f34ad75e9a05e993d961896f4
|
|
| BLAKE2b-256 |
ff66ed0c396dc7e4634db99ae9c4c3b1aabadb0923294c66914848a6610a25d5
|