Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
54f15ae
np.Nan->np.nan
prasad-sawantdesai Mar 17, 2026
a373d66
Merge pull request #16 from prasad-sawantdesai/fix-numpy-nan-issue
olivhoenen Mar 20, 2026
527eb52
Merge branch 'main' into develop
olivhoenen Mar 23, 2026
cb47065
added separatrix, contour center, and magnetic axes with clockable op…
prasad-sawantdesai Mar 26, 2026
837a4df
Merge pull request #18 from prasad-sawantdesai/fix/plotequicomp_issue…
prasad-sawantdesai Mar 26, 2026
7bc37fa
added quantities and spacing between plots
prasad-sawantdesai Mar 27, 2026
8759cdb
fixed integration with machine description
prasad-sawantdesai Mar 27, 2026
1b927c9
fixed colorbars position
prasad-sawantdesai Mar 27, 2026
7538154
fix color of separatrix
prasad-sawantdesai Mar 27, 2026
5d0d18d
remove legend for quantities
prasad-sawantdesai Mar 27, 2026
cd82599
fixed formatting
prasad-sawantdesai Mar 27, 2026
847b356
added documetation about tkinter installation
prasad-sawantdesai Mar 27, 2026
c5a3299
Add boundary overlays (outline, separatrix, x-points, strike-points, …
prasad-sawantdesai Mar 30, 2026
09ea0b8
do not join strike points and rename labels
prasad-sawantdesai Mar 30, 2026
0381773
changed the marker for current center
prasad-sawantdesai Mar 30, 2026
dfa98ea
reverted rho option and use of IMAS constants
prasad-sawantdesai Mar 31, 2026
e332fcb
fixed formatting issue
prasad-sawantdesai Mar 31, 2026
0ba5b0e
contour_tree implementation DD4
prasad-sawantdesai Mar 31, 2026
26bd780
removed boundary and made separatrix black
prasad-sawantdesai Mar 31, 2026
d3e566c
fix: correct psi 2D grid orientation for rectangular equilibrium grid…
prasad-sawantdesai Apr 1, 2026
d570da9
Merge branch 'iterorganization:develop' into feature/add_separatrix_a…
prasad-sawantdesai May 4, 2026
61e1fb9
add CODEOWNERS
olivhoenen Jun 2, 2026
204c942
fix ci plan on bamboo (#25)
prasad-sawantdesai Jun 2, 2026
1090085
ci: add dependabot.yml to update github-actions (#24)
Louwrensth Jun 2, 2026
e57c1ab
Merge branch 'iterorganization:develop' into feature/add_separatrix_a…
prasad-sawantdesai Jun 2, 2026
37663b7
Bump the actions-deps group with 4 updates
dependabot[bot] Jun 2, 2026
b189ded
use polycollection from matplotlib and use cells instead of nodes (#22)
prasad-sawantdesai Jun 4, 2026
ef439cf
fix: correct electron power calculation and improve plot visibility (…
ZijianBian Jun 4, 2026
58b6352
added lazy=True and fixed bug in reading data
prasad-sawantdesai Jun 11, 2026
094c40f
magnetic_axis +, current center + , geometric axis x and separatrix …
prasad-sawantdesai Jun 11, 2026
0cd9c11
for DD3 read values from boundary x_point and strike_point
prasad-sawantdesai Jun 11, 2026
e46a8f2
plot rho2d with transpose
prasad-sawantdesai Jun 12, 2026
9c650a2
show URI on top left corner
prasad-sawantdesai Jun 12, 2026
863e09b
Do not show quantities at the start and make it visible/invisible bas…
prasad-sawantdesai Jun 12, 2026
d3246f9
add buttons to clear overlay show legends inside to save space and ba…
prasad-sawantdesai Jun 12, 2026
2be598a
added overlay CLI argument
prasad-sawantdesai Jun 12, 2026
1c13e23
fixed comment
prasad-sawantdesai Jun 12, 2026
890fa34
Feature/show shape and terminal plot in idsprint (#28)
prasad-sawantdesai Jun 12, 2026
692ead8
fixed provenance
prasad-sawantdesai Jun 12, 2026
10229bb
provenance if passed in center. do not show same uri if --md passed. …
prasad-sawantdesai Jun 15, 2026
612add8
removed unused import
prasad-sawantdesai Jun 15, 2026
afdc00b
read boundary/outline
prasad-sawantdesai Jun 15, 2026
d45066d
added plotting script provennace as title
prasad-sawantdesai Jun 15, 2026
d64ed81
Merge branch 'develop' into feature/add_separatrix_and_magnetic_axes_…
prasad-sawantdesai Jun 15, 2026
25d7bef
removed provenance flag and always showed title
prasad-sawantdesai Jun 15, 2026
a06d803
added --no-provenance
prasad-sawantdesai Jun 19, 2026
301de7f
fixed units, -p to --profiles,remove y axis labels
prasad-sawantdesai Jun 19, 2026
7745398
plot machine description with psi when using --no-overlay -md
prasad-sawantdesai Jun 19, 2026
aaec5d8
fix multiple URIs to single one if IDSes are coming from same data en…
prasad-sawantdesai Jun 19, 2026
2595404
show boundary/outline if present
prasad-sawantdesai Jun 22, 2026
497a33c
generalized provenance info in plotting scripts
prasad-sawantdesai Jun 22, 2026
7ff222f
fixed yaml file to latest version and autoconvert+false
prasad-sawantdesai Jun 22, 2026
5cca20d
Bump actions/checkout from 6 to 7 in the actions-deps group
dependabot[bot] Jun 23, 2026
a812a52
show labels with indices, if more than 20 labels then show first and …
prasad-sawantdesai Jun 22, 2026
c2a8497
Feature/add separatrix and magnetic axes in plotequilibrium (#20)
prasad-sawantdesai Jul 2, 2026
a663b95
Merge branch 'develop' into Generalize-the---no-provenance-option-to-…
prasad-sawantdesai Jul 2, 2026
9ebd166
removed duplicate --no-provenance arguement
prasad-sawantdesai Jul 2, 2026
a2c31c8
plot_rho -> plot_phi internal variable
prasad-sawantdesai Jul 2, 2026
3f97eb7
Merge pull request #31 from prasad-sawantdesai/Generalize-the---no-pr…
olivhoenen Jul 2, 2026
5a6ecaf
Feature/allow custom matplotlib backend (#33)
prasad-sawantdesai Jul 3, 2026
4f98020
Bump actions/setup-python from 6 to 7 in the actions-deps group
dependabot[bot] Jul 21, 2026
4f03438
Let matplotlib choose its default backend (#35)
prasad-sawantdesai Jul 24, 2026
17074e1
Fix/incorrect handling of error/warning when idslist is applied to a …
prasad-sawantdesai Jul 29, 2026
76eb800
Show secondary separatrix if present (#40)
olivhoenen Aug 11, 2026
d8b9ff7
Fix DD4 compatibility in plotequicomp
olivhoenen Aug 11, 2026
5705cfb
use the get_compat_attr() function in other tools
olivhoenen Aug 11, 2026
8e5e339
Added Bphi computation from eqdsk data (#44)
chiaradepiccoli Sep 1, 2026
66fffdf
convert to standard Python object for rich library to render values
prasad-sawantdesai Sep 4, 2026
aa4adc1
use has_value instead of len
prasad-sawantdesai Sep 7, 2026
289872d
Update idstools/scripts/bin/idsprint
prasad-sawantdesai Sep 8, 2026
5203d12
update plotext version
prasad-sawantdesai Sep 8, 2026
c907834
Update idstools/view/edge_profiles.py
prasad-sawantdesai Sep 8, 2026
a02bdd9
Update idstools/scripts/bin/dbperf
prasad-sawantdesai Sep 8, 2026
d5c0ce4
Update idstools/compute/equilibrium.py
prasad-sawantdesai Sep 8, 2026
5b23401
Update idstools/compute/equilibrium.py
prasad-sawantdesai Sep 8, 2026
224b207
Update idstools/utils/utility_functions.py
prasad-sawantdesai Sep 8, 2026
760fc8a
Update idstools/scripts/bin/plotequicomp
prasad-sawantdesai Sep 8, 2026
8a93d3a
fix pandas object print
prasad-sawantdesai Sep 8, 2026
72a5d6d
--show-labels option removal is documented. For UDA add_query_uri doc…
prasad-sawantdesai Sep 9, 2026
90438e0
disconnects old callbacks, and keeps callbacks independent per axes
prasad-sawantdesai Sep 9, 2026
13f931b
updated docstring
prasad-sawantdesai Sep 9, 2026
8722852
reworded log message
prasad-sawantdesai Sep 9, 2026
903dd54
fixed len parameter
prasad-sawantdesai Sep 9, 2026
99841ca
cleanup-CI-scripts-and-update-modules-to-2025b (#46)
prasad-sawantdesai Sep 9, 2026
2ed8e71
Merge branch 'develop' into release/2.5
olivhoenen Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# CODEOWNERS: Controls automatic assignment of reviewers for pull requests.
# -----------------------------------------------------------------------------
# When a pull request modifies files matching a pattern, the listed code owners will be requested as reviewers.
# Each line is a file pattern followed by one or more code owners (users or teams) who must review changes to that file.
# Do not edit unless specifically mandated to do so.

# Global/fallback and technical modifications.
* @SimonPinches @olivhoenen @prasad-sawantdesai
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 2
updates:
# Enable version updates for Github Actions
- package-ecosystem: "github-actions"
# Look for `/.github/workflows` and `/action.yml` or `.yaml`
directory: "/"
# Check for updates once a week
schedule:
interval: "weekly"
# Group actions version bumps into a single PR
groups:
actions-deps:
patterns:
- "*"

4 changes: 2 additions & 2 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:

steps:
- name: Checkout IDStools sources
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
# until saxonche is available in 3.13
# https://saxonica.plan.io/issues/6561
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ jobs:
name: Build distribution
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
# until saxonche is available in 3.13
# https://saxonica.plan.io/issues/6561
Expand All @@ -25,7 +25,7 @@ jobs:
- name: Build a binary wheel and a source tarball
run: python3 -m build .
- name: Store the distribution packages
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: python-package-distributions
path: dist/
Expand All @@ -43,7 +43,7 @@ jobs:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/
Expand All @@ -63,7 +63,7 @@ jobs:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v7
with:
python-version: '3.11'
cache: 'pip'
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/test_with_pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}

uses: actions/setup-python@v4
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
- name: Display Python version
Expand All @@ -40,31 +40,31 @@ jobs:
TEST_PROFILE: ci

- name: Upload coverage report ${{ matrix.python-version }}
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: coverage-report-${{ matrix.python-version }}
path: htmlcov
if-no-files-found: warn

- name: Upload coverage XML ${{ matrix.python-version }}
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: coverage-xml-${{ matrix.python-version }}
path: coverage.xml
if-no-files-found: warn

- name: Upload test report ${{ matrix.python-version }}
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: test-report-${{ matrix.python-version }}
path: junit.xml
if-no-files-found: warn

- name: Upload test output logs ${{ matrix.python-version }}
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: test-output-${{ matrix.python-version }}
path: test_output.log
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/verify_with_sphinx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:

steps:
- name: Checkout IDStools sources
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
# until saxonche is available in 3.13
# https://saxonica.plan.io/issues/6561
Expand Down Expand Up @@ -50,7 +50,7 @@ jobs:

- name: Upload Sphinx documentation as artifact
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: sphinx-documentation
path: docs/build/html/
Expand Down
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,20 @@ plotequilibrium --uri "imas:mdsplus?user=public;pulse=134174;run=117;database=IT

## Requirements

- Python ≥ 3.8
- IMAS Python Access Layer (`imas-python`)
- Python ≥ 3.10

### Installed automatically via pip
- NumPy, Matplotlib, Pandas
- Rich (for enhanced terminal output)

### Requires separate installation
- **Tkinter** — usually bundled with Python but may require system packages:
- Linux (Debian/Ubuntu): `sudo apt install python3-tk`
- Linux (RHEL/CentOS/Rocky): `sudo dnf install python3-tkinter`
- Windows: included in the [python.org](https://www.python.org/downloads/) installer ("tcl/tk and IDLE" component, enabled by default)
- macOS (python.org installer): included by default
- macOS (Homebrew): `brew install python-tk` (or `brew install python-tk@3.x` for a specific version)

## Documentation

Full documentation is available at the project repository. Each tool includes built-in help:
Expand Down
4 changes: 0 additions & 4 deletions ci-sdcc/dependencies.txt

This file was deleted.

170 changes: 33 additions & 137 deletions ci-sdcc/st00-header.sh
Original file line number Diff line number Diff line change
@@ -1,145 +1,41 @@
#!/bin/bash
source /etc/profile.d/modules.sh
source ./ci-sdcc/utils.sh
##########################################################################################
# Set environment based on toolchain #
##########################################################################################

module use /work/imas/etc/modules/all

# expand aliases
shopt -s expand_aliases

#print hostname
hostname -f

IMAS_EXISTS=$(module -r -t list 2>&1 | grep -E "IMAS-AL-Core|IMAS-Core" | head -n 1)
if [ -n "$IMAS_EXISTS" ]; then
echo "> Found already loaded IMAS Module : $IMAS_EXISTS"
ACCESS_LAYER_VERSION=$(echo "$AL_VERSION" | cut -d '.' -f 1)
TOOLCHAIN_VERSION=$(echo "$IMAS_EXISTS" | awk -F '-' '{print $(NF-1)"-"$NF}')
else
echo "> IMAS Module is not loaded"
fi

if [ -n "$1" ] || [ -n "$2" ]; then
echo "> Compiling with $1 and Access Layer $2 with latest version of installed modules.Previously loaded modules will be purged.."
module purge
# If toolchain version is passed then purge all modules
if [ -n "$1" ]; then
TOOLCHAIN_VERSION="$1"
fi

# Get AL version
if [ -n "$2" ]; then
ACCESS_LAYER_VERSION="$2"
else
ACCESS_LAYER_VERSION="5"
fi
fi

if [ -z "$TOOLCHAIN_VERSION" ]; then
echo "> No toolchain found, Setting it to default : intel-2023b"
TOOLCHAIN_VERSION="intel-2023b"
fi

if [ -z "$ACCESS_LAYER_VERSION" ]; then
ACCESS_LAYER_VERSION="5"
fi

if [ -z "$DD_VERSION" ]; then
DD_VERSION="3"
else
DD_VERSION="$3"
fi

echo "> Building for $TOOLCHAIN_VERSION and Access Layer $ACCESS_LAYER_VERSION"

if [[ $TOOLCHAIN_VERSION == *"intel"* ]]; then
FCOMPILER="ifort"
fi
if [[ $TOOLCHAIN_VERSION == *"foss"* ]]; then
FCOMPILER="gfortran"
fi


CORE_MODULE_VERSION=$(getIMASCoreModuleName "$TOOLCHAIN_VERSION" "$ACCESS_LAYER_VERSION" "$DD_VERSION")
# load IMAS module first

if [ -z "$IMAS_EXISTS" ]; then
echo "> IMAS is not loaded.. Loading Module $CORE_MODULE_VERSION"
module load "$CORE_MODULE_VERSION"
fi

GCCcore_VERSION=$(getGCCcoreVersion)
module purge

dependencies="./ci-sdcc/dependencies.txt"

# Check if the file exists
if [ ! -f "$dependencies" ]; then
echo "File $dependencies not found."
return 1
fi

declare -a RUNMODULES=()
declare -a EBBRUNMODULES=()

echo "-------------------------------------------------------"
echo "> dependency modules"
counter=0
while IFS= read -r line || [[ -n $line ]]; do
line="${line// /}"
# for empty string continue
if [[ -z "$line" ]]; then
counter=$(("$counter" + 1))
continue
fi
# fix module version
if [[ $line == *"/"* ]]; then
echo "using fix module $line"
RUNMODULES["$counter"]="$line"
EBBRUNMODULES["$counter"]="('$line', EXTERNAL_MODULE),"
counter=$(("$counter" + 1))
continue
fi
# latest module version as it is not given
# if [[ $line == *"IMAS"* ]]; then
# echo " IMAS $CORE_MODULE_VERSION"
# RUNMODULES["$counter"]="$CORE_MODULE_VERSION"
# EBBRUNMODULES["$counter"]="('$CORE_MODULE_VERSION', EXTERNAL_MODULE),"
# else
module_version=$(getModuleName "$line" "$TOOLCHAIN_VERSION" "$GCCcore_VERSION")
echo " $line $module_version"
RUNMODULES["$counter"]="$module_version"
EBBRUNMODULES["$counter"]=$(getModuleNameAndVersion "$module_version")

# fi
counter=$(("$counter" + 1))
done <"$dependencies"
echo "-------------------------------------------------------"

echo "> Details of environment"
echo " TOOLCHAIN_VERSION : $TOOLCHAIN_VERSION"
echo " GCCcore_VERSION : $GCCcore_VERSION"
echo " IMAS VERSION : $CORE_MODULE_VERSION"
echo " RUNMODULES : " "${RUNMODULES[@]}"
echo " EBRUNMODULES : " "${EBBRUNMODULES[@]}"
echo " Compiler : $FCOMPILER"
echo "-------------------------------------------------------"


echo "> Loading run time modules"
# Load build modules if they exist
for imodule in "${RUNMODULES[@]}"; do
IFS='/' read -r iname iversion <<< "$imodule"
MODULE_EXISTS=$(module -r -t list 2>&1 | grep -E "$iname/")
if [ -z "$MODULE_EXISTS" ]; then
echo " $iname not available, Loading $imodule"
module load "$imodule"
else
echo " $MODULE_EXISTS already loaded"
fi
# Check which modules env var is set
if [ -n "${INTEL_MODULES:-}" ]; then
MODULES_LIST="$INTEL_MODULES"
export ENVIRONEMNT_NAME="intel"
elif [ -n "${FOSS_MODULES:-}" ]; then
MODULES_LIST="$FOSS_MODULES"
export ENVIRONEMNT_NAME="foss"
else
echo ""
echo "ERROR: Neither INTEL_MODULES nor FOSS_MODULES is set"
echo ""
echo "Please set one of these environment variables and run the script."
echo ""
echo "Examples:"
echo ""
echo " For intel-2023b:"
echo " export INTEL_MODULES=\"IMAS-Core/5.7.1-intel-2023b Tkinter/3.11.5-GCCcore-13.2.0 IMAS-Python/2.3.0-intel-2023b PyYAML/6.0.1-GCCcore-13.2.0\""
echo ""
echo " For intel-2025b:"
echo " export INTEL_MODULES=\"IMAS-Core/5.7.1-intel-2025b Tkinter/3.13.5-GCCcore-14.3.0 IMAS-Python/2.3.0-intel-2025b PyYAML/6.0.2-GCCcore-14.3.0\""
echo ""
echo " For foss-2023b:"
echo " export FOSS_MODULES=\"IMAS-Core/5.7.1-foss-2023b Tkinter/3.11.5-GCCcore-13.2.0 IMAS-Python/2.3.0-foss-2023b PyYAML/6.0.1-GCCcore-13.2.0\""
echo ""
echo " For foss-2025b:"
echo " export FOSS_MODULES=\"IMAS-Core/5.7.1-foss-2025b Tkinter/3.13.5-GCCcore-14.3.0 IMAS-Python/2.3.0-foss-2025b PyYAML/6.0.2-GCCcore-14.3.0\""
echo ""
exit 1
fi

# Load all modules
for module in $MODULES_LIST; do
module load "$module"
done
echo "> Done"
echo "-------------------------------------------------------"
3 changes: 1 addition & 2 deletions ci-sdcc/st01-create-distribution.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
# Execute script from root directory

# setup environment
# Get toolchain version
source ./ci-sdcc/st00-header.sh $1 $2
source ./ci-sdcc/st00-header.sh

if [[ "$(uname -n)" == *"bamboo"* ]]; then
set -e -u -o pipefail
Expand Down
2 changes: 1 addition & 1 deletion ci-sdcc/st02-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Bamboo CI script to build actor and run standalone program
# Execute script from root directory

source ./ci-sdcc/st00-header.sh $1 $2
source ./ci-sdcc/st00-header.sh

# Note Disable set -e option when using on local as it will exit the shell on error
if [[ "$(uname -n)" == *"bamboo"* ]]; then
Expand Down
Loading