pypenred

Parallel Engine for Radiation Energy Deposition

https://github.com/penred/penred

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    1 of 4 committers (25.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (18.1%) to scientific vocabulary

Keywords

monte-carlo-simulation mpi multi-threading parallel-programming penelope radiation radiation-therapy radiation-transport
Last synced: 6 months ago · JSON representation

Repository

Parallel Engine for Radiation Energy Deposition

Basic Info
  • Host: GitHub
  • Owner: PenRed
  • License: agpl-3.0
  • Language: C++
  • Default Branch: master
  • Size: 134 MB
Statistics
  • Stars: 25
  • Watchers: 6
  • Forks: 9
  • Open Issues: 1
  • Releases: 10
Topics
monte-carlo-simulation mpi multi-threading parallel-programming penelope radiation radiation-therapy radiation-transport
Created almost 6 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Authors Codemeta

README.md

PenRed logo

CMake

Parallel Engine for Radiation Energy Deposition

Introduction

PenRed is a powerful parallel engine for radiation transport Monte Carlo simulations. Comprehensive information about installation, usage, and component details can be found in the provided documentation (PenRedusermanual.pdf), located in the doc folder.

For further reading, users can refer to a descriptive academic article available on ArXiv, which has been accepted and published in the Computer Physics Communications journal. The article can be accessed at https://doi.org/10.1016/j.cpc.2021.108065. If you use PenRed in research that leads to publications, please cite this article.

pyPenred

A Python module named pyPenred has been developed to run PenRed simulations through Python. The easiest way to install the pyPenred package is via pip:

bash pip install pyPenred

On some systems, you may also need to install the pyYAML package manually:

bash pip install pyYAML

The complete API documentation can be found online and included in this package at src/bindings/python/pyPenred/docs/

Compiling pyPenred

To compile and install the pyPenred package manually (to enable native optimizations or include custom-developed modules), use the appropriate compilation script from the src folder:

Linux/macOS:

bash ./installPyPenred.sh

Windows:

bash installPyPenred.bat

Usage

A brief explanation of pyPenred features and usage can be found in the pyPenred readme, which is also included in this repository at:

src/bindings/python/pyPenred/README.md

For a detailed description, see the Python Wrapper (pyPenred) section in the PenRed documentation.

Blender Integration

A Blender plugin has been developed to integrate geometry construction, simulation configuration, and execution within the Blender environment, providing a user-friendly graphical interface. The plugin can be installed via the zip file:

src/utilities/Blender/4.2.3/penred.zip

The plugin documentation is available online, and both the plugin and documentation source code can be found in the same folder as the zipped plugin.

Code Compilation

PenRed can be compiled with any compiler supporting the C++14 standard and CMake version 3.11 or later. The steps to compile the code are described following.

Download the Source Code

Download the source code either manually from the repository page or using git:

bash git clone https://github.com/PenRed/PenRed.git

Compilation

Navigate to the src folder and use the appropriate compilation script for your operating system:

  • Linux/Unix: Run the bash script compile.sh with

    bash bash compile.sh

  • Windows: Run the batch script compile.bat

The scripts will create:

  1. A build folder for temporary compilation files

  2. A compilation folder containing all generated executables

The main PenRed executable (used to run simulation examples) is located at:

src/compiled/mains/pen_main

Compilation Options

Edit the compilation scripts to enable/disable multiple features. Some of them are listed below:

  • DICOMs: Enables DICOM image reading/simulation capabilities (requires DCMTK library). If the DCMTK library is not installed, it will be downloaded and compiled automatically. This step can take several minutes.
  • Multi-threading: Enables multi-threading via C++ standard thread library (no additional dependencies).
  • MPI: Enables MPI simulations (requires MPI implementation library like OpenMPI or MPICH).
  • Load Balance: Enables load balancing between threads/MPI processes (requires multi-threading)

Additional compilation options for specific tools and bindings can be configured using CMake utilities (see documentation).

Basic usage

To execute the main program, the user needs to specify the configuration file path:

bash ./pen_main path/to/configuration/file

The configuration file should specify paths to required database files (materials, geometries, etc.). See the Framework Usage section in the documentation for details.

The examples folder contains ready-to-run configuration files with corresponding material and geometry files (described in the Examples documentation section). To run an example:

  1. Copy the executable to the example folder
  2. Run:

bash ./pen\_main config.in

or simply double click the executable. This will assume a configuration file named config.in exists in the directory.

For MPI-enabled builds, execute as any MPI program:

mpirun -np Nprocesses ./pen\_main path/to/configuration/file

where Nprocesses specifies the number of MPI processes. Standard mpirun options (like hostfile) are supported.

Docker containers

The containers directory provides basic Dockerfiles to generate containers with an entry point ready to run PenRed simulations.

Owner

  • Name: PenRed
  • Login: PenRed
  • Kind: organization

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "license": "https://spdx.org/licenses/AGPL-3.0-or-later",
  "codeRepository": "git+https://github.com/PenRed/PenRed.git",
  "dateCreated": "2019-10-01",
  "datePublished": "2020-03-02",
  "dateModified": "2020-05-18",
  "downloadUrl": "https://github.com/PenRed/PenRed/archive/v1.0.tar.gz",
  "issueTracker": "https://github.com/PenRed/PenRed/issues",
  "name": "PenRed",
  "version": "1.1.1",
  "description": "PenRed is a fully parallel, modular and customizable framework for Monte-Carlo simulations of the passage of radiation through matter. ",
  "applicationCategory": "Physics, Medical Physics",
  "developmentStatus": "active",
  "referencePublication": "arXiv:2003.00796",
  "keywords": [
    "Radiation transport",
    "Monte Carlo simulation",
    "Electron-photonshowers",
    "Parallel computing",
    "MPI",
    "Medical physics"
  ],
  "programmingLanguage": [
    "C++"
  ],
  "operatingSystem": [
    "Linux"
  ],
  "author": [
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0003-1646-6094",
      "givenName": "Vicent",
      "familyName": "Gimnez Alventosa",
      "email": "vicent.gimenez.alventosa@gmail.com",
      "affiliation": {
        "@type": "Organization",
        "name": "Instituto de Instrumentacin para Imagen Molecular (I3M) Centro mixto CSIC - Universitat Politcnica de Valncia"
      }
    },
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0003-3855-2567",
      "givenName": "Vicente",
      "familyName": "Gimnez Gmez",
      "email": "vicente.gimenez@uv.es",
      "affiliation": {
        "@type": "Organization",
        "name": "Departament de Fsica Terica and IFIC Universitat de Valncia-CSIC"
      }
    },
    {
      "@type": "Person",
      "@id": "http://orcid.org/0000-0001-8258-3972",
      "givenName": "Sandra",
      "familyName": "Oliver Gil",
      "email": "sanolgi@upvnet.upv.es",
      "affiliation": {
        "@type": "Organization",
        "name": "Instituto de Seguridad Industrial, Radiofsica y Medioambiental (ISIRYM) Universitat Politcnica de Valncia"
      }
    }
  ]
}

GitHub Events

Total
  • Issues event: 18
  • Watch event: 6
  • Delete event: 2
  • Issue comment event: 14
  • Push event: 123
  • Pull request event: 11
  • Fork event: 2
  • Create event: 5
Last Year
  • Issues event: 18
  • Watch event: 6
  • Delete event: 2
  • Issue comment event: 14
  • Push event: 123
  • Pull request event: 11
  • Fork event: 2
  • Create event: 5

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 255
  • Total Committers: 4
  • Avg Commits per committer: 63.75
  • Development Distribution Score (DDS): 0.09
Past Year
  • Commits: 59
  • Committers: 2
  • Avg Commits per committer: 29.5
  • Development Distribution Score (DDS): 0.017
Top Committers
Name Email Commits
Vicent Giménez Alventosa v****a@g****m 232
oleg.shirokobrod.os@hitachi-hightech.eu o****s@h****m 15
sanogil 6****l 7
Sandra Oliver Gil s****l@e****s 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 17
  • Total pull requests: 71
  • Average time to close issues: 5 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 5
  • Total pull request authors: 3
  • Average comments per issue: 0.88
  • Average comments per pull request: 0.14
  • Merged pull requests: 65
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 11
  • Average time to close issues: 22 days
  • Average time to close pull requests: 29 minutes
  • Issue authors: 5
  • Pull request authors: 2
  • Average comments per issue: 0.78
  • Average comments per pull request: 0.0
  • Merged pull requests: 8
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • vigial (7)
  • cvalcort (5)
  • sanogil (3)
  • XJJ76 (1)
  • vribgar (1)
Pull Request Authors
  • vigial (63)
  • sanogil (6)
  • shirokobrod (2)
Top Labels
Issue Labels
enhancement (11) pyPenred (3) documentation (1) Blender (1) bug (1)
Pull Request Labels
enhancement (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 355 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 8
  • Total maintainers: 1
pypi.org: pypenred

Python interface for penRed framework

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 355 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.5%
Dependent repos count: 53.5%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/cmake.yml actions
  • actions/checkout v2 composite
containers/alpine/Dockerfile docker
  • alpine latest build
containers/alpine-dicom/Dockerfile docker
  • alpine latest build
containers/complete/Dockerfile docker
  • fedora 30 build
.github/workflows/deploy.yml actions
  • actions/checkout v4 composite
  • actions/deploy-pages v4 composite
  • actions/setup-python v4 composite
  • actions/upload-pages-artifact v3 composite
.github/workflows/wheels.yml actions
  • actions/checkout v2 composite
  • actions/download-artifact v4 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v4 composite
  • pypa/gh-action-pypi-publish release/v1 composite
src/bindings/python/pyPenred/docs/requirements.txt pypi
  • furo >=2023.0
  • myst-parser *
  • sphinx >=6.0
  • sphinx-autodoc-typehints *
  • sphinx-copybutton *
  • sphinxcontrib-napoleon *
src/bindings/python/pyPenred/setup.py pypi
  • numpy *
  • pyyaml *