ALTRIOS
Fully integrated, open-source software tool to evaluate strategies for deploying advanced locomotive technologies and associated infrastructure for cost-effective decarbonization.
https://github.com/nrel/altrios
Category: Consumption
Sub Category: Mobility and Transportation
Keywords from Contributors
optimize archiving measur transforms generic observation compose conversion animals projection
Last synced: about 22 hours ago
JSON representation
Repository metadata
- Host: GitHub
- URL: https://github.com/nrel/altrios
- Owner: NREL
- License: other
- Created: 2023-05-24T19:54:03.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-12-05T21:06:57.000Z (19 days ago)
- Last Synced: 2025-12-21T00:45:46.015Z (4 days ago)
- Language: Rust
- Homepage: https://nrel.github.io/altrios/
- Size: 13.7 MB
- Stars: 27
- Watchers: 5
- Forks: 14
- Open Issues: 20
- Releases: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
README.md
ALTRIOS


The Advanced Locomotive Technology and Rail Infrastructure Optimization System (ALTRIOS) is a unique, fully integrated, open-source software tool to evaluate strategies for deploying advanced locomotive technologies and associated infrastructure for cost-effective decarbonization. ALTRIOS simulates freight-demand driven train scheduling, mainline meet-pass planning, locomotive dynamics, train dynamics, energy conversion efficiencies, and energy storage dynamics of line-haul train operations. Because new locomotives represent a significant long-term capital investment and new technologies must be thoroughly demonstrated before deployment, this tool provides guidance on the risk/reward tradeoffs of different technology rollout strategies. An open, integrated simulation tool is invaluable for identifying future research needs and making decisions on technology development, routes, and train selection. ALTRIOS was developed as part of a collaborative effort by a team comprising The National Renewable Energy Laboratory (NREL), University of Texas (UT), Southwest Research Institute (SwRI), and BNSF Railway.
Much of the core code in ALTRIOS is written in the Rust Programming Language to ensure excellent computational performance and robustness, but we've built ALTRIOS with the intent of users interacting with the code through our feature-rich Python interface.
Installation
If you are an ALTRIOS developer, see Developer Documentation. Otherwise, read on.
Python Setup
- Python installation options:
- Option 1 -- Python: https://www.python.org/downloads/. We recommend Python 3.10. Be sure to check the
Add to PATHoption during installation. - Option 2 -- Anaconda: we recommend https://docs.conda.io/en/latest/miniconda.html.
- Option 1 -- Python: https://www.python.org/downloads/. We recommend Python 3.10. Be sure to check the
- Setup a python environment. ALTRIOS can work with Python 3.9, or 3.10, but we recommend 3.10 for better performance and user experience. Create a python environment for ALTRIOS with either of two methods:
- Option 1 -- Python Venv
-
Navigate to the ALTRIOS folder you just cloned or any folder you'd like for using ALTRIOS. Remember the folder you use!
-
Assuming you have Python 3.10 installed, run
(path to your python3.10 e.g. ~/AppData/Local/Programs/Python/Python310/python.exe) -m venv altrios-venvin Windowspython3.10 -m venv altrios-venvin Mac/Unix/Linux
in your terminal enviroment (we recommend PowerShell in Windows, which comes pre-installed).
This tells Python 3.10 to use the
venvmodule to create a virtual environment (which will be ignored by git if namedaltrios-venv) in theALTRIOS/altrios-venv/. -
Activate the environment you just created to install packages or anytime you're running ALTRIOS:
- Mac and Linux:
source altrios-venv/bin/activate - Windows:
altrios-venv/Scripts/activate.batin a windows command prompt or power shell orsource altrios-venv/Scripts/activatein git bash terminal - When the environment is activated, your terminal session will have a decorator that looks like
(altrios-venv).
- Mac and Linux:
-
- Option 2 -- Anaconda:
- Open an Anaconda prompt (in Windows, we recommend Anaconda Powershell Prompt) and run the command
conda create -n altrios python=3.10to create an Anaconda environment namedaltrios. - Activate the environment to install packages or anytime you're running ALTRIOS: run
conda activate altrios.
- Open an Anaconda prompt (in Windows, we recommend Anaconda Powershell Prompt) and run the command
- Option 1 -- Python Venv
ALTRIOS Setup
With your Python environment activated, run pip install altrios.
Congratulations, you've completed installation! Whenever you need to use ALTRIOS, be sure to activate your python environment created above.
How to run ALTRIOS
With your activated Python environment with ALTRIOS fully installed, you can download the demo scripts to the current working directory inside of a demos/ folder with:
import altrios as alt
alt.copy_demo_files()
You can run the Simulation Manager through a multi-week simulation of train operations in by running python sim_manager_demo.py in demos/. This will create a plots/ subfolder in which the plots will be saved. To run interactively, fire up a Python IDE (e.g. VS Code, Spyder), and run the file. If you're in VS Code, you can run the file as a virtual jupyter notebook because of the "cells" that are marked with the # %% annotation. You can click on line 2, for example, and hit <Shift> + <Enter> to run the current cell in an interactive terminal (which will take several seconds to launch) and advance to the next cell. Alternatively, you can hit <Ctrl> + <Shift> + p to enable interactive commands and type "run current cell". There are several other python files in the demos/ folder to demonstrate various capabilities of ALTRIOS.
If you plan to modify the data used in the demo files, copy the data files to your local directory and load them from there, e.g.
res = alt.ReversibleEnergyStorage.from_file(
alt.resources_root() / "powertrains/reversible_energy_storages/Kokam_NMC_75Ah_flx_drive.yaml"
)
would become
res = alt.ReversibleEnergyStorage.from_file(
"./custom_battery.yaml"
)
Nearly every code object in ALTRIOS can be read from or written to common data formats. For more details, see the SerdeAPI trait documentation. All of the functions in the SerdeAPI are available through the python interface.
Acknowledgements
The ALTRIOS Team would like to thank ARPA-E for financially supporting the research through the LOCOMOTIVES program and Dr. Robert Ledoux for his vision and support. We would also like to thank the ARPA-E team for their support and guidance: Dr. Apoorv Agarwal, Mirjana Marden, Alexis Amos, and Catherine Good. We would also like to thank BNSF for their cost share financial support, guidance, and deep understanding of the rail industry’s needs. Additionally, we would like to thank Jinghu Hu for his contributions to the core ALTRIOS code. We would like to thank Chris Hennessy at SwRI for his support. Thank you to Michael Cleveland for his help with developing and kicking off this project.
Owner metadata
- Name: National Renewable Energy Laboratory
- Login: NREL
- Email:
- Kind: organization
- Description:
- Website: http://www.nrel.gov
- Location: Golden, CO
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/1906800?v=4
- Repositories: 599
- Last ynced at: 2024-12-18T09:41:07.898Z
- Profile URL: https://github.com/NREL
GitHub Events
Total
- Create event: 49
- Release event: 4
- Issues event: 13
- Watch event: 6
- Delete event: 13
- Member event: 4
- Issue comment event: 34
- Push event: 324
- Pull request review comment event: 29
- Pull request event: 58
- Pull request review event: 34
- Fork event: 7
Last Year
- Create event: 44
- Release event: 4
- Issues event: 11
- Watch event: 6
- Delete event: 11
- Issue comment event: 20
- Member event: 4
- Push event: 309
- Pull request review comment event: 27
- Pull request review event: 30
- Pull request event: 53
- Fork event: 7
Committers metadata
Last synced: 4 days ago
Total Commits: 896
Total Committers: 14
Avg Commits per committer: 64.0
Development Distribution Score (DDS): 0.244
Commits in past year: 291
Committers in past year: 6
Avg Commits per committer in past year: 48.5
Development Distribution Score (DDS) in past year: 0.265
| Name | Commits | |
|---|---|---|
| Chad Baker | c****r@n****v | 677 |
| Bruchon, Matthew | M****n@n****v | 89 |
| FDsteven | f****w@g****m | 42 |
| sakhtar | s****r@n****v | 33 |
| Nicholas Reinicke | n****e | 15 |
| StevenGotGame | d****1@i****u | 13 |
| dependabot[bot] | 4****] | 8 |
| Garrett Anderson | g****t@b****t | 6 |
| Kyle Carow | 4****w | 3 |
| D03\ganderson | g****n@s****g | 3 |
| Kyle Carow | K****w@n****v | 3 |
| sakhtar312 | 1****2 | 2 |
| hpanneer | h****m@n****v | 1 |
| Matthew Bruchon | m****o@g****m | 1 |
Committer domains:
- nrel.gov: 5
- swri.org: 1
- benchdata.net: 1
- illinois.edu: 1
Issue and Pull Request metadata
Last synced: 13 days ago
Total issues: 14
Total pull requests: 206
Average time to close issues: 10 months
Average time to close pull requests: 17 days
Total issue authors: 6
Total pull request authors: 11
Average comments per issue: 0.36
Average comments per pull request: 0.37
Merged pull request: 158
Bot issues: 0
Bot pull requests: 8
Past year issues: 8
Past year pull requests: 55
Past year average time to close issues: N/A
Past year average time to close pull requests: 8 days
Past year issue authors: 4
Past year pull request authors: 7
Past year average comments per issue: 0.0
Past year average comments per pull request: 0.38
Past year merged pull request: 36
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- calbaker (5)
- mbbruch (3)
- SWRIganderson (3)
- spencerm89 (1)
- dan-mccabe (1)
- sakhtar312 (1)
Top Pull Request Authors
- calbaker (150)
- sakhtar312 (20)
- mbbruch (11)
- dependabot[bot] (8)
- FDsteven (6)
- nreinicke (3)
- kylecarow (2)
- robinsteuteville (2)
- SWRIganderson (2)
- garrettlanderson (1)
- panne027 (1)
Top Issue Labels
- future (2)
- enhancement (1)
Top Pull Request Labels
- dependencies (8)
- github_actions (2)
- bug (2)
- enhancement (2)
Package metadata
- Total packages: 5
-
Total downloads:
- cargo: 29,758 total
- pypi: 694 last-month
- Total dependent packages: 1 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 67
- Total maintainers: 6
proxy.golang.org: github.com/nrel/altrios
- Homepage:
- Documentation: https://pkg.go.dev/github.com/nrel/altrios#section-documentation
- Licenses: other
- Latest release: v0.3.0 (published 8 months ago)
- Last Synced: 2025-12-21T18:07:43.660Z (3 days ago)
- Versions: 12
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/NREL/altrios
- Homepage:
- Documentation: https://pkg.go.dev/github.com/NREL/altrios#section-documentation
- Licenses: other
- Latest release: v0.3.0 (published 8 months ago)
- Last Synced: 2025-12-21T18:07:43.719Z (3 days ago)
- Versions: 12
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
pypi.org: altrios
Tool for modeling and optimization of advanced locomotive powertrains for freight rail decarbonization.
- Homepage: https://www.nrel.gov/transportation/altrios.html
- Documentation: https://altrios.readthedocs.io/
- Licenses: BSD-3-Clause
- Latest release: 1.0.0 (published 5 months ago)
- Last Synced: 2025-12-21T18:07:42.479Z (3 days ago)
- Versions: 19
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 694 Last month
-
Rankings:
- Dependent packages count: 7.262%
- Average: 24.329%
- Dependent repos count: 41.395%
- Maintainers (2)
crates.io: altrios-proc-macros
ALTRIOS procedural macros
- Homepage: https://www.nrel.gov/transportation/altrios.html
- Documentation: https://docs.rs/altrios-proc-macros/
- Licenses: BSD-3-Clause
- Latest release: 1.0.0 (published 5 months ago)
- Last Synced: 2025-12-21T18:07:42.115Z (3 days ago)
- Versions: 10
- Dependent Packages: 1
- Dependent Repositories: 0
- Downloads: 12,941 Total
-
Rankings:
- Dependent repos count: 30.344%
- Dependent packages count: 31.691%
- Stargazers count: 33.011%
- Forks count: 41.181%
- Average: 46.605%
- Downloads: 96.799%
- Maintainers (4)
crates.io: altrios-core
ALTRIOS Core model for train simulation
- Homepage: https://www.nrel.gov/transportation/altrios.html
- Documentation: https://docs.rs/altrios-core/
- Licenses: BSD-3-Clause
- Latest release: 1.0.1 (published 5 months ago)
- Last Synced: 2025-12-21T18:07:42.119Z (3 days ago)
- Versions: 14
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 16,817 Total
-
Rankings:
- Dependent repos count: 30.344%
- Dependent packages count: 31.691%
- Stargazers count: 33.011%
- Forks count: 41.181%
- Average: 46.771%
- Downloads: 97.629%
- Maintainers (4)
Dependencies
- actions-rs/toolchain v1 composite
- actions/checkout v3 composite
- actions/download-artifact v2 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- pypa/gh-action-pypi-publish release/v1 composite
- matplotlib *
- numpy *
- openpyxl *
- pandas >=2
- plotly *
- polars *
- pyarrow *
- pymoo ==0.6
- pyyaml *
- seaborn *
- typing_extensions *
- xlrd *
- actions/checkout v3 composite
- actions/configure-pages v3 composite
- actions/deploy-pages v2 composite
- actions/upload-pages-artifact v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions-rs/toolchain v1 composite
- actions/checkout v3 composite
- 325 dependencies
- about-time 4.2.1
- alive-progress 3.2.0
- altrios 1.0.0
- appnope 0.1.4
- asttokens 3.0.0
- autograd 1.7.0
- certifi 2025.1.31
- cffi 1.17.1
- charset-normalizer 3.4.1
- cma 3.2.2
- colorama 0.4.6
- comm 0.2.2
- contourpy 1.3.1
- cycler 0.12.1
- debugpy 1.8.13
- decorator 5.2.1
- deprecated 1.2.18
- dill 0.3.9
- docstring-to-markdown 0.16
- et-xmlfile 2.0.0
- exceptiongroup 1.2.2
- executing 2.2.0
- fonttools 4.57.0
- grapheme 0.6.0
- idna 3.10
- importlib-metadata 8.6.1
- iniconfig 2.1.0
- ipykernel 6.29.5
- ipython 8.34.0
- ipython 9.0.2
- ipython-pygments-lexers 1.1.1
- jedi 0.19.2
- jupyter-client 8.6.3
- jupyter-core 5.7.2
- kiwisolver 1.4.8
- matplotlib 3.10.1
- matplotlib-inline 0.1.7
- maturin 1.8.3
- memory-profiler 0.61.0
- msgpack 1.1.0
- mypy 1.15.0
- mypy-extensions 1.0.0
- narwhals 1.33.0
- nest-asyncio 1.6.0
- numpy 1.26.4
- openpyxl 3.1.5
- packaging 24.2
- pandas 2.2.3
- parso 0.8.4
- pexpect 4.9.0
- pillow 11.1.0
- pip 25.0.1
- platformdirs 4.3.7
- plotly 6.0.1
- pluggy 1.5.0
- polars 1.20.0
- prompt-toolkit 3.0.50
- psutil 7.0.0
- ptyprocess 0.7.0
- pure-eval 0.2.3
- pyarrow 19.0.1
- pycparser 2.22
- pygments 2.19.1
- pylsp-mypy 0.7.0
- pymoo 0.6.0
- pyparsing 3.2.3
- pytest 8.3.5
- python-dateutil 2.9.0.post0
- python-lsp-jsonrpc 1.1.2
- python-lsp-server 1.12.2
- pytz 2025.2
- pywin32 310
- pyyaml 6.0.2
- pyzmq 26.3.0
- requests 2.32.3
- ruff 0.11.3
- scipy 1.15.2
- seaborn 0.13.2
- simpy 4.1.1
- six 1.17.0
- stack-data 0.6.3
- tomli 2.2.1
- tornado 6.4.2
- traitlets 5.14.3
- typing-extensions 4.13.1
- tzdata 2025.2
- ujson 5.10.0
- urllib3 2.3.0
- wcwidth 0.2.13
- wrapt 1.17.2
- xlrd 2.0.1
- zipp 3.21.0
Score: 16.81334172729465