Skip to main content

Scientific Python toolkit for earthquake engineering: GCIM-based ground motion record selection, hazard consistency, vulnerability modelling, and storey loss functions.

Project description

djura

CI PyPI Docs Python License: AGPL v3+

djura is a scientific Python toolkit for earthquake engineering. It bundles into a single installable package the core algorithms used across the DJURA research stack: ground motion record selection, hazard-consistent intensity measure analysis, structural vulnerability modelling, and storey loss function generation with no web-server, database, or cloud-storage dependencies.

The package is intended for research and educational use, and is released under the GNU AGPL-3.0-or-later license so that it composes cleanly with other copyleft scientific tools (e.g. openquake.engine).

Commercial use? djura is dual-licensed. The AGPL-3.0-or-later terms below apply to academic, research, and other open-source use. If you want to use djura in a closed-source product, an internal commercial workflow, or a network-accessible service without releasing your own source code under the AGPL, you need a separate commercial license. Contact info@djura.it to arrange one. See Commercial licensing below.

AGPL-3.0 notice - If you use djura as part of a network-accessible service (API, web application, SaaS backend), the AGPL requires that you make the complete corresponding source code available to your users. Running djura in a private research environment or on your own workstation is not affected. See the LICENSE file for the full terms.

Submodules

Import path Purpose
djura.record_selection GCIM-based ground motion record selection
djura.hazard_consistency Hazard-consistent intensity measure analysis
djura.edp_im ML-based EDP-IM relationship prediction
djura.fragility_converter Fragility/vulnerability model conversion across IMs
djura.vulnerability_modeller Seismic vulnerability and loss modelling (incl. ML models)
djura.slf Storey loss function generation

Installation

pip install djura

Optional runtime extras:

pip install "djura[plot]"   # adds matplotlib
pip install "djura[hdf5]"   # adds h5py
pip install "djura[all]"    # all of the above

For contributors — install development and/or documentation dependencies using Poetry dependency groups:

poetry install --with dev        # testing and linting (pytest, flake8)
poetry install --with docs       # Sphinx + furo for building the docs
poetry install --with dev,docs   # everything

sphinx-autodoc-typehints in the docs group requires Python ≥ 3.12 and is skipped automatically on earlier versions.

Quickstart

import djura

print(djura.__version__)

# Per-submodule example imports
from djura import record_selection
from djura import hazard_consistency
from djura import edp_im
from djura import vulnerability_modeller
from djura import slf

(Per-submodule quickstarts will be added as code is migrated in.)

Bundled dataset (NGA-West2)

The NGA-West2 metadata pickle (~107 MB uncompressed) is not shipped inside the wheel. It is hosted as a gzip-compressed asset on a GitHub Release and downloaded automatically the first time it is needed:

from djura.data_loader import load_data, clear_cache

data = load_data()       # downloads on first call, then loads from cache
clear_cache()            # delete the cached file to force a re-download

The cache lives at ~/.cache/djura/NGA_W2_v2.pickle.

The dataset is derived from the NGA-West2 Ground Motion Database (PEER, UC Berkeley). It contains metadata only, no waveform records, and has been extended with fields computed by this project. See src/djura/record_selection/assets/ATTRIBUTION.md for full attribution and instructions on downloading the underlying waveforms from PEER.

Publishing a new data release (maintainers)

The release is produced by the release-data GitHub Actions workflow, which compresses the pickle and uploads it to a tagged GitHub Release. Trigger it manually with the GitHub CLI:

gh workflow run release-data.yml -f version=data-v1

After the release is published, update GITHUB_RELEASE_URL in src/djura/data_loader.py to point at the new tag.

How to cite

If you use djura in academic or research work, please cite the package and the paper(s) backing the submodule(s) you use.

import djura

# Umbrella package citation
print(djura.cite())

# Per-submodule citation
print(djura.cite("vulnerability_modeller"))

# All citations
print(djura.cite(all=True))
Submodule Reference
record_selection Shahnazaryan, D., Ozsarac, V., & O'Reilly, G. J. (2025). DJURA Ground Motion Record Selector: A Software Solution for Earthquake Engineering. COMPDYN 2025.
hazard_consistency Shahnazaryan, D., Ozsarac, V., & O'Reilly, G. J. (2025). DJURA Ground Motion Record Selector: A Software Solution for Earthquake Engineering. COMPDYN 2025.
edp_im Shahnazaryan, D., & O'Reilly, G. J. (2024). Next-generation non-linear and collapse prediction models for short- to long-period systems via machine learning methods. Engineering Structures, 306, 117801. doi:10.1016/j.engstruct.2024.117801
vulnerability_modeller O'Reilly, G. J., & Shahnazaryan, D. (2024). On the utility of story loss functions for regional seismic vulnerability modeling and risk assessment. Earthquake Spectra, 40(3), 1933–1955. doi:10.1177/87552930241245940
fragility_converter O'Reilly, G. J., Ozsarac, V., & Shahnazaryan, D. (2025). Conversion of seismic fragility and vulnerability models to alternative intensity measures for regional risk analysis. Earthquake Spectra (Under Review).
slf Shahnazaryan, D., Ozsarac, V., & O'Reilly, G. J. (2025). The Role of Story Loss Functions in Regional Seismic Vulnerability Modelling and Risk Assessment.

A CITATION.cff file is provided so that GitHub renders a "Cite this repository" button automatically.

Contributing

Contributions are welcome. By submitting a Contribution, you agree to the terms of the Contributor License Agreement, which (among other things) allows the maintainer to relicense the project. For example, to offer a separate commercial license alongside AGPL-3.0.

License

Copyright © 2025–2026 Risk - Data - Engineering S.r.l. (Italy). All rights reserved.

djura is dual-licensed:

  • Open-source license — GNU Affero General Public License v3.0 or later (SPDX: AGPL-3.0-or-later). See LICENSE for the full text. This is the license that applies by default and covers academic, research, and other AGPL-compatible open-source use.
  • Commercial license — available from Risk - Data - Engineering S.r.l. for users who cannot or do not wish to comply with the AGPL (e.g. closed-source products, proprietary SaaS, internal commercial deployments without source disclosure). See Commercial licensing below.

This package vendors a subset of code adapted from the OpenQuake Engine (© GEM Foundation, AGPL-3.0-or-later); see src/djura/record_selection/gsim/NOTICE.md for attribution details. The OpenQuake-derived portions remain under AGPL-3.0-or-later in all distributions.

Commercial licensing

The AGPL-3.0-or-later imposes a strong copyleft obligation: if you distribute djura, or expose its functionality over a network (API, web app, SaaS backend, hosted analysis service, etc.), you must make the complete corresponding source code of your application available to its users under the AGPL.

If that is not compatible with your business — for example because you want to:

  • embed djura in a closed-source commercial product;
  • offer a proprietary SaaS or hosted service powered by djura without releasing your own source under the AGPL;
  • use djura in internal commercial workflows at a for-profit organisation under terms incompatible with the AGPL;
  • receive warranties, indemnification, or commercial support that the AGPL explicitly disclaims;

then you need a commercial license from Risk - Data - Engineering S.r.l. (Italy), the copyright holder.

To request a commercial license, please contact:

📧 info@djura.it

Please include a short description of the intended use case (organisation, product, deployment model, expected user base). We will reply with licensing terms.

Academic researchers, students, and other AGPL-compatible users do not need to contact us — the AGPL grant in LICENSE already covers you.

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

djura-0.1.5.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

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

djura-0.1.5-py3-none-any.whl (3.3 MB view details)

Uploaded Python 3

File details

Details for the file djura-0.1.5.tar.gz.

File metadata

  • Download URL: djura-0.1.5.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for djura-0.1.5.tar.gz
Algorithm Hash digest
SHA256 2d636f8056e94eccab172c7bd491734d3ee5d5a623e9aa2f0b1a327b050a291f
MD5 fd01f48826464d9d0b9852b15ac4696d
BLAKE2b-256 b48d0251a01fcd5d46dfa5cfe008919bf411303ee3948d55b031c39289ba46a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for djura-0.1.5.tar.gz:

Publisher: publish.yml on djura-risk-data-engineering/djura

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djura-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: djura-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for djura-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f007e55aafb781b4b2d191f3c737a2343ebc662cd561ff19a7e752877fe7102d
MD5 66b796881f12644ef5fb6302ee6a9d4a
BLAKE2b-256 38092c6d73acb850eb730418a0be192136d49a29310c35cef581b2530aa32f02

See more details on using hashes here.

Provenance

The following attestation bundles were made for djura-0.1.5-py3-none-any.whl:

Publisher: publish.yml on djura-risk-data-engineering/djura

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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