Skip to main content

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 API
  • save(): Save changes back to the server
  • visualize(output_file, open_browser): Generate local HTML visualization
  • preview(output_file, open_browser): Preview server-rendered dashboard
  • get_graph(index): Get a specific graph by index
  • add_graph(graph): Add a new graph to the dashboard
  • list_graphs(): List all graphs in the dashboard
  • print_graphs(): Print a summary of all graphs

Graph

Represents a single graph/visualization in the dashboard:

  • plots: List of Plot objects in this graph
  • query: SQL query name that provides the data
  • zone: Layout zone where the graph appears
  • priority: Display order priority
  • layout_config: Plotly layout configuration
  • html: 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 configuration
  • create_dashboard(dashboard_config): Create a new dashboard
  • update_dashboard(dashboard_id, dashboard_config): Update dashboard
  • delete_dashboard(dashboard_id): Delete a dashboard
  • preview_dashboard(...): Preview dashboard rendering
  • visualize(...): Generate local visualization

Authentication

The library uses nanohub-remote for authentication. You need a nanoHUB personal access token:

  1. Log in to nanoHUB
  2. Go to your account settings
  3. Generate a personal access token
  4. 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:

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:

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

nanohub_dashboards-0.1.1.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanohub_dashboards-0.1.1-py3-none-any.whl (39.2 kB view details)

Uploaded Python 3

File details

Details for the file nanohub_dashboards-0.1.1.tar.gz.

File metadata

  • Download URL: nanohub_dashboards-0.1.1.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for nanohub_dashboards-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d752873b5ba18532e2fdf957752690e6ad8610bdd04f680182ef7df76e9791a7
MD5 1e0e76a1402c2c9b46b575737e81ced5
BLAKE2b-256 2b507fa06164dabd75388fe5d20531f775d45764949af34e6a5995f24f9007d6

See more details on using hashes here.

File details

Details for the file nanohub_dashboards-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nanohub_dashboards-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b73d7d5007961710cc81d2701ee4cab24f35819c96cbe655fb381bfff74a37ce
MD5 a312aa82168e5bf3051a9dbb45b9faa1
BLAKE2b-256 75ee7aadf5d20c49d3e37a2926eac812352db45a634e7e460c9b9dcf32f69145

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page