champpy 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. champpy-0.1.0/.gitattributes +3 -0
  2. champpy-0.1.0/.github/workflows/deploy.yml +17 -0
  3. champpy-0.1.0/.github/workflows/lint.yml +42 -0
  4. champpy-0.1.0/.github/workflows/publish.yml +65 -0
  5. champpy-0.1.0/.github/workflows/tests.yml +33 -0
  6. champpy-0.1.0/.gitignore +48 -0
  7. champpy-0.1.0/.readthedocs.yaml +17 -0
  8. champpy-0.1.0/LICENSE +21 -0
  9. champpy-0.1.0/PKG-INFO +168 -0
  10. champpy-0.1.0/README.md +128 -0
  11. champpy-0.1.0/data/example1/t_logbook.csv +8314 -0
  12. champpy-0.1.0/data/example1/t_vehicle.csv +156 -0
  13. champpy-0.1.0/data/graphical_abstract.svg +1 -0
  14. champpy-0.1.0/docs/Makefile +20 -0
  15. champpy-0.1.0/docs/_static/custom.css +22 -0
  16. champpy-0.1.0/docs/api/charging_data.rst +32 -0
  17. champpy-0.1.0/docs/api/charging_model.rst +22 -0
  18. champpy-0.1.0/docs/api/charging_plotter.rst +29 -0
  19. champpy-0.1.0/docs/api/mob_plotter.rst +30 -0
  20. champpy-0.1.0/docs/api/mobility_cleaning.rst +33 -0
  21. champpy-0.1.0/docs/api/mobility_data.rst +48 -0
  22. champpy-0.1.0/docs/api/mobility_model.rst +26 -0
  23. champpy-0.1.0/docs/api/parameterization.rst +39 -0
  24. champpy-0.1.0/docs/api/params_loader.rst +25 -0
  25. champpy-0.1.0/docs/api/typedays.rst +7 -0
  26. champpy-0.1.0/docs/conf.py +136 -0
  27. champpy-0.1.0/docs/index.rst +34 -0
  28. champpy-0.1.0/docs/installation.rst +7 -0
  29. champpy-0.1.0/docs/make.bat +35 -0
  30. champpy-0.1.0/notebooks/01_demo_without_parameterization.ipynb +965 -0
  31. champpy-0.1.0/notebooks/02_demo_including_parameterization.ipynb +459 -0
  32. champpy-0.1.0/plots/.gitignore +6 -0
  33. champpy-0.1.0/pyproject.toml +64 -0
  34. champpy-0.1.0/scripts/01_create_parameters_rem2030_vans.py +91 -0
  35. champpy-0.1.0/scripts/02_create_parameters_nefton_trucks.py +86 -0
  36. champpy-0.1.0/scripts/03_create_parameters_kid_cars.py +86 -0
  37. champpy-0.1.0/scripts/lint.ps1 +46 -0
  38. champpy-0.1.0/src/champpy/__init__.py +75 -0
  39. champpy-0.1.0/src/champpy/core/__init__.py +1 -0
  40. champpy-0.1.0/src/champpy/core/charging/__init__.py +0 -0
  41. champpy-0.1.0/src/champpy/core/charging/charging_model.py +508 -0
  42. champpy-0.1.0/src/champpy/core/charging/charging_validation.py +691 -0
  43. champpy-0.1.0/src/champpy/core/mobility/__init__.py +0 -0
  44. champpy-0.1.0/src/champpy/core/mobility/mobility_cleaning.py +497 -0
  45. champpy-0.1.0/src/champpy/core/mobility/mobility_components.py +1092 -0
  46. champpy-0.1.0/src/champpy/core/mobility/mobility_data.py +614 -0
  47. champpy-0.1.0/src/champpy/core/mobility/mobility_model.py +412 -0
  48. champpy-0.1.0/src/champpy/core/mobility/mobility_validation.py +1126 -0
  49. champpy-0.1.0/src/champpy/core/mobility/parameterization.py +810 -0
  50. champpy-0.1.0/src/champpy/data/ffe_logo.svg +3 -0
  51. champpy-0.1.0/src/champpy/data/params.parquet +3 -0
  52. champpy-0.1.0/src/champpy/data/params_info.parquet +3 -0
  53. champpy-0.1.0/src/champpy/utils/__init__.py +1 -0
  54. champpy-0.1.0/src/champpy/utils/data_utils.py +50 -0
  55. champpy-0.1.0/src/champpy/utils/logging.py +21 -0
  56. champpy-0.1.0/src/champpy/utils/time_utils.py +250 -0
  57. champpy-0.1.0/tests/__init__.py +0 -0
  58. champpy-0.1.0/tests/conftest.py +49 -0
  59. champpy-0.1.0/tests/test_full.py +54 -0
  60. champpy-0.1.0/tests/test_light.py +44 -0
  61. champpy-0.1.0/tests/test_mob_classes.py +93 -0
  62. champpy-0.1.0/tests/test_notebooks.py +69 -0
  63. champpy-0.1.0/tests/test_utilities.py +52 -0
  64. champpy-0.1.0/tests/test_validation.py +59 -0
@@ -0,0 +1,3 @@
1
+ *.parquet filter=lfs diff=lfs merge=lfs -text
2
+ *.svg filter=lfs diff=lfs merge=lfs -text
3
+ data/**/*.svg -filter -diff -merge text
@@ -0,0 +1,17 @@
1
+ name: Deploy
2
+
3
+ # TODO: Configure deployment workflow
4
+ # This workflow will be used to deploy the package to PyPI or other platforms
5
+
6
+ on:
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ noop:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Skip deployment (not configured)
14
+ run: echo "Deploy workflow not configured yet."
15
+
16
+
17
+
@@ -0,0 +1,42 @@
1
+ name: Lint
2
+
3
+ on:
4
+ push:
5
+ branches: ["**"]
6
+ pull_request:
7
+ branches: ["**"]
8
+
9
+ jobs:
10
+ black:
11
+ name: Black Code Formatter
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+
16
+ - name: Set up Python 3.13
17
+ uses: actions/setup-python@v4
18
+ with:
19
+ python-version: "3.13"
20
+
21
+ - name: Install dependencies
22
+ run: pip install -e ".[dev]"
23
+
24
+ - name: Run Black
25
+ run: black -l 120 --check ./src/champpy/ ./tests/ ./scripts/
26
+
27
+ flake8:
28
+ name: Flake8 Linting
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v3
32
+
33
+ - name: Set up Python 3.13
34
+ uses: actions/setup-python@v4
35
+ with:
36
+ python-version: "3.13"
37
+
38
+ - name: Install dependencies
39
+ run: pip install -e ".[dev]"
40
+
41
+ - name: Run Flake8
42
+ run: flake8 --max-line-length=120 --ignore=E501,E712,E203,W503,W291,W293 ./src/champpy/ ./tests/ ./scripts/
@@ -0,0 +1,65 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Tests"]
6
+ types: [completed]
7
+ branches: [main]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ build:
15
+ name: Build distribution
16
+ runs-on: ubuntu-latest
17
+ if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
18
+
19
+ steps:
20
+ - name: Check out repository
21
+ uses: actions/checkout@v4
22
+ with:
23
+ ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }}
24
+
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.13"
29
+
30
+ - name: Install build tools
31
+ run: python -m pip install --upgrade build twine
32
+
33
+ - name: Build sdist and wheel
34
+ run: python -m build
35
+
36
+ - name: Check distribution metadata
37
+ run: python -m twine check dist/*
38
+
39
+ - name: Upload distribution artifacts
40
+ uses: actions/upload-artifact@v4
41
+ with:
42
+ name: python-dist
43
+ path: dist/
44
+
45
+ publish:
46
+ name: Publish to PyPI
47
+ runs-on: ubuntu-latest
48
+ needs: build
49
+
50
+ permissions:
51
+ id-token: write
52
+
53
+ environment:
54
+ name: pypi
55
+ url: https://pypi.org/p/champpy
56
+
57
+ steps:
58
+ - name: Download distribution artifacts
59
+ uses: actions/download-artifact@v4
60
+ with:
61
+ name: python-dist
62
+ path: dist/
63
+
64
+ - name: Publish package to PyPI
65
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,33 @@
1
+ name: Tests
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Lint"]
6
+ types: [completed]
7
+ branches: ["**"]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ tests:
12
+ name: Unit Tests
13
+ runs-on: ubuntu-latest
14
+ if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
15
+ strategy:
16
+ matrix:
17
+ python-version: ["3.11","3.12","3.13"]
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ with:
21
+ ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }}
22
+ lfs: true
23
+
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v4
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install dependencies
30
+ run: pip install -e ".[dev]"
31
+
32
+ - name: Run Tests
33
+ run: pytest tests/ -v
@@ -0,0 +1,48 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+
8
+ # Virtual environments
9
+ .venv/
10
+ env/
11
+ venv/
12
+ ENV/
13
+
14
+ # IDE
15
+ .vscode/
16
+ .idea/
17
+ *.swp
18
+ *.swo
19
+ *~
20
+
21
+ # Generated files
22
+ *.html
23
+ dist/
24
+ build/
25
+ *.egg-info/
26
+
27
+ # Testing
28
+ .pytest_cache/
29
+ .hypothesis/
30
+ .coverage
31
+ htmlcov/
32
+
33
+ # OS
34
+ .DS_Store
35
+ Thumbs.db
36
+
37
+ # Data and output
38
+ data/*
39
+ !data/graphical_abstract.svg
40
+ !data/example1/
41
+ !data/example1/**
42
+ !data/example2/
43
+ !data/example2/**
44
+ plots/*.html
45
+
46
+ # Docs
47
+ docs/_build/
48
+ docs/notebooks/*.ipynb
@@ -0,0 +1,17 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-24.04
5
+ tools:
6
+ python: "3.13"
7
+
8
+ sphinx:
9
+ configuration: docs/conf.py
10
+ fail_on_warning: false
11
+
12
+ python:
13
+ install:
14
+ - method: pip
15
+ path: .
16
+ extra_requirements:
17
+ - docs
champpy-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 FfE Munich
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
champpy-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.4
2
+ Name: champpy
3
+ Version: 0.1.0
4
+ Summary: CHAMPPy - Mobility and Charging Profiles
5
+ Project-URL: Repository, https://github.com/ffe-munich/CHAMPPy
6
+ Project-URL: Issues, https://github.com/ffe-munich/CHAMPPy/issues
7
+ Author-email: Florian Biedenbach <fbiedenbach@ffe.de>
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: charging,electric vehicles,markov,mobility,profiles
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: numpy>=1.0
18
+ Requires-Dist: pandas>=1.0
19
+ Requires-Dist: pandera[strategies]>=0.15
20
+ Requires-Dist: plotly>=5.0
21
+ Requires-Dist: pyarrow
22
+ Requires-Dist: pydantic>=2.0
23
+ Requires-Dist: rich>=13.0
24
+ Requires-Dist: scipy>=1.7
25
+ Requires-Dist: tqdm>=4.0
26
+ Provides-Extra: dev
27
+ Requires-Dist: black>=22.0; extra == 'dev'
28
+ Requires-Dist: flake8>=4.0; extra == 'dev'
29
+ Requires-Dist: jupyter>=1.0; extra == 'dev'
30
+ Requires-Dist: nbconvert>=7.0; extra == 'dev'
31
+ Requires-Dist: pylint>=2.0; extra == 'dev'
32
+ Requires-Dist: pytest>=7.0; extra == 'dev'
33
+ Provides-Extra: docs
34
+ Requires-Dist: furo>=2024.0; extra == 'docs'
35
+ Requires-Dist: myst-nb>=1.0; extra == 'docs'
36
+ Requires-Dist: sphinx-autodoc-typehints>=2.0; extra == 'docs'
37
+ Requires-Dist: sphinx-copybutton>=0.5.0; extra == 'docs'
38
+ Requires-Dist: sphinx>=9.0; extra == 'docs'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # CHAMPPy
42
+
43
+ <!-- TODO: Add Badges from https://img.shields.io -->
44
+
45
+ CHAMPPy (Charging and Mobility Profiles in Python) is a Python library to generate synthetic mobility and charging profiles for different types of electric vehicles including vans, trucks, busses and passanger cars.
46
+
47
+ <p align="center">
48
+ <img src="data/graphical_abstract.svg" width="80%" alt="Graphical Abstract">
49
+ </p>
50
+
51
+ Road transport decarbonization requires realistic charging demand models across all vehicle classes. However, many existing studies and publicly available tools focus mainly on private passenger cars, while commercial electric vehicles such as vans and trucks are often underrepresented despite their major relevance for emissions and grid impacts. CHAMPPy is an open Python package that addresses this gap by generating synthetic driving and charging profiles for different EV types, including commercial fleets. The model combines a Markov chain to represent vehicle locations over time with beta-distributed journey speeds, from which trip distances are derived, and uses dedicated algorithms to generate mobility and charging behavior. An optional clustering approach increases profile heterogeneity and is particularly useful when analyzing individual profiles.
52
+
53
+ CHAMPPy supports two workflows:
54
+
55
+ 1. Use existing parameters to quickly generate drving and charging profiles with user-defined settings (e.g., simulation period, number of vehicles, charging power, battery capacity).
56
+ 2. Re-parameterize the model with custom reference data (e.g., other countries, fleet compositions, or vehicle classes). Generate drving and charging profiles from your model parameters.
57
+
58
+ ## Links
59
+
60
+ * Documentation: TODO
61
+ * Source code: [https://github.com/ffe-munich/CHAMPPy](https://github.com/ffe-munich/CHAMPPy)
62
+ * PyPI releases: TODO
63
+ * License: [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)
64
+
65
+ ## Authors
66
+
67
+ CHAMPPy has been developed by [Florian Biedenbach](https://github.com/FloBieWan) (lead), Valentin Preis und [Daniel Godin](https://github.com/DaniGodin).
68
+
69
+ ## Repo structure
70
+
71
+ ```
72
+ CHAMPPy/
73
+ ├── src/champpy/ # Main package source code
74
+ │ ├── __init__.py
75
+ │ ├── core/ # Core functionality
76
+ │ │ ├── __init__.py
77
+ │ │ ├── charging/ # Charging profile module
78
+ │ │ │ ├── __init__.py
79
+ │ │ │ ├── charging_model.py # Model to generate charging profiles
80
+ │ │ │ └── charging_validation.py # Charging validation & plotting
81
+ │ │ └── mobility/ # Mobility profile module
82
+ │ │ ├── __init__.py
83
+ │ │ ├── mobility_cleaning.py # Data cleaning
84
+ │ │ ├── mobility_components.py # Data components
85
+ │ │ ├── mobility_data.py # Data structures
86
+ │ │ ├── mobility_model.py # Model to generate profiles
87
+ │ │ ├── mobility_validation.py # Validation & plotting
88
+ │ │ └── parameterization.py # Parameter extraction
89
+ │ ├── utils/ # Utilities
90
+ │ │ ├── __init__.py
91
+ │ │ ├── data_utils.py # Ddata helpers
92
+ │ │ ├── logging.py # Logging configuration
93
+ │ │ └── time_utils.py # Time utilities
94
+ | └── data/
95
+ │ ├── params_info.parquet # Info about existing model parameters
96
+ │ └── params.parquet # Existing model parameters
97
+ ├── notebooks/ # Jupyter notebooks
98
+ │ ├── 01_demo_without_parameterization.ipynb # Demo notebook 1
99
+ │ └── 02_demo_including_parameterization.ipynb # Demo notebook 2
100
+ ├── scripts/ # Python scripts
101
+ ├── tests/ # Test suite
102
+ ├── data/ # Data directory
103
+ ├── plots/ # Generated plots (HTML files)
104
+ ├── pyproject.toml # Project configuration
105
+ ├── LICENSE # License file
106
+ └── README.md # This file
107
+ ```
108
+
109
+ ## Installation
110
+
111
+ <!-- docs-installation-start -->
112
+
113
+ ### Prerequisites
114
+ - Python 3.11 or higher
115
+ - pip
116
+
117
+ ### Install from source
118
+
119
+ ```bash
120
+ # Clone the repository
121
+ git clone https://github.com/ffe-munich/CHAMPPy.git
122
+ cd CHAMPPy
123
+
124
+ # Create a virtual environment
125
+ python -m venv .venv
126
+
127
+ # Activate virtual environment
128
+ # On Windows:
129
+ .\.venv\Scripts\activate
130
+ # On Linux/Mac:
131
+ source .venv/bin/activate
132
+
133
+ # Install the package in development mode
134
+ pip install .
135
+ ```
136
+
137
+ ### Install from PyPI
138
+
139
+ ```bash
140
+ # Create a virtual environment
141
+ python -m venv .venv
142
+
143
+ # Activate virtual environment
144
+ # On Windows:
145
+ .\.venv\Scripts\activate
146
+ # On Linux/Mac:
147
+ source .venv/bin/activate
148
+
149
+ pip install champpy
150
+ ```
151
+ <!-- docs-installation-end -->
152
+
153
+ <!-- sphinx-exclude-start -->
154
+ ## Examples
155
+
156
+ For detailed examples, check out the interactive Jupyter notebooks in the `notebooks/` directory:
157
+
158
+ 1. **[01_demo_without_parameterization.ipynb](notebooks/01_demo_without_parameterization.ipynb)**
159
+ Simple demo showing how to generate mobility and charging profiles using existing model parameters.
160
+
161
+ 2. **[02_demo_including_parameterization.ipynb](notebooks/02_demo_including_parameterization.ipynb)**
162
+ Complete workflow including parameterization from raw data, model generation, and validation.
163
+ <!-- sphinx-exclude-end -->
164
+
165
+
166
+
167
+
168
+
@@ -0,0 +1,128 @@
1
+ # CHAMPPy
2
+
3
+ <!-- TODO: Add Badges from https://img.shields.io -->
4
+
5
+ CHAMPPy (Charging and Mobility Profiles in Python) is a Python library to generate synthetic mobility and charging profiles for different types of electric vehicles including vans, trucks, busses and passanger cars.
6
+
7
+ <p align="center">
8
+ <img src="data/graphical_abstract.svg" width="80%" alt="Graphical Abstract">
9
+ </p>
10
+
11
+ Road transport decarbonization requires realistic charging demand models across all vehicle classes. However, many existing studies and publicly available tools focus mainly on private passenger cars, while commercial electric vehicles such as vans and trucks are often underrepresented despite their major relevance for emissions and grid impacts. CHAMPPy is an open Python package that addresses this gap by generating synthetic driving and charging profiles for different EV types, including commercial fleets. The model combines a Markov chain to represent vehicle locations over time with beta-distributed journey speeds, from which trip distances are derived, and uses dedicated algorithms to generate mobility and charging behavior. An optional clustering approach increases profile heterogeneity and is particularly useful when analyzing individual profiles.
12
+
13
+ CHAMPPy supports two workflows:
14
+
15
+ 1. Use existing parameters to quickly generate drving and charging profiles with user-defined settings (e.g., simulation period, number of vehicles, charging power, battery capacity).
16
+ 2. Re-parameterize the model with custom reference data (e.g., other countries, fleet compositions, or vehicle classes). Generate drving and charging profiles from your model parameters.
17
+
18
+ ## Links
19
+
20
+ * Documentation: TODO
21
+ * Source code: [https://github.com/ffe-munich/CHAMPPy](https://github.com/ffe-munich/CHAMPPy)
22
+ * PyPI releases: TODO
23
+ * License: [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)
24
+
25
+ ## Authors
26
+
27
+ CHAMPPy has been developed by [Florian Biedenbach](https://github.com/FloBieWan) (lead), Valentin Preis und [Daniel Godin](https://github.com/DaniGodin).
28
+
29
+ ## Repo structure
30
+
31
+ ```
32
+ CHAMPPy/
33
+ ├── src/champpy/ # Main package source code
34
+ │ ├── __init__.py
35
+ │ ├── core/ # Core functionality
36
+ │ │ ├── __init__.py
37
+ │ │ ├── charging/ # Charging profile module
38
+ │ │ │ ├── __init__.py
39
+ │ │ │ ├── charging_model.py # Model to generate charging profiles
40
+ │ │ │ └── charging_validation.py # Charging validation & plotting
41
+ │ │ └── mobility/ # Mobility profile module
42
+ │ │ ├── __init__.py
43
+ │ │ ├── mobility_cleaning.py # Data cleaning
44
+ │ │ ├── mobility_components.py # Data components
45
+ │ │ ├── mobility_data.py # Data structures
46
+ │ │ ├── mobility_model.py # Model to generate profiles
47
+ │ │ ├── mobility_validation.py # Validation & plotting
48
+ │ │ └── parameterization.py # Parameter extraction
49
+ │ ├── utils/ # Utilities
50
+ │ │ ├── __init__.py
51
+ │ │ ├── data_utils.py # Ddata helpers
52
+ │ │ ├── logging.py # Logging configuration
53
+ │ │ └── time_utils.py # Time utilities
54
+ | └── data/
55
+ │ ├── params_info.parquet # Info about existing model parameters
56
+ │ └── params.parquet # Existing model parameters
57
+ ├── notebooks/ # Jupyter notebooks
58
+ │ ├── 01_demo_without_parameterization.ipynb # Demo notebook 1
59
+ │ └── 02_demo_including_parameterization.ipynb # Demo notebook 2
60
+ ├── scripts/ # Python scripts
61
+ ├── tests/ # Test suite
62
+ ├── data/ # Data directory
63
+ ├── plots/ # Generated plots (HTML files)
64
+ ├── pyproject.toml # Project configuration
65
+ ├── LICENSE # License file
66
+ └── README.md # This file
67
+ ```
68
+
69
+ ## Installation
70
+
71
+ <!-- docs-installation-start -->
72
+
73
+ ### Prerequisites
74
+ - Python 3.11 or higher
75
+ - pip
76
+
77
+ ### Install from source
78
+
79
+ ```bash
80
+ # Clone the repository
81
+ git clone https://github.com/ffe-munich/CHAMPPy.git
82
+ cd CHAMPPy
83
+
84
+ # Create a virtual environment
85
+ python -m venv .venv
86
+
87
+ # Activate virtual environment
88
+ # On Windows:
89
+ .\.venv\Scripts\activate
90
+ # On Linux/Mac:
91
+ source .venv/bin/activate
92
+
93
+ # Install the package in development mode
94
+ pip install .
95
+ ```
96
+
97
+ ### Install from PyPI
98
+
99
+ ```bash
100
+ # Create a virtual environment
101
+ python -m venv .venv
102
+
103
+ # Activate virtual environment
104
+ # On Windows:
105
+ .\.venv\Scripts\activate
106
+ # On Linux/Mac:
107
+ source .venv/bin/activate
108
+
109
+ pip install champpy
110
+ ```
111
+ <!-- docs-installation-end -->
112
+
113
+ <!-- sphinx-exclude-start -->
114
+ ## Examples
115
+
116
+ For detailed examples, check out the interactive Jupyter notebooks in the `notebooks/` directory:
117
+
118
+ 1. **[01_demo_without_parameterization.ipynb](notebooks/01_demo_without_parameterization.ipynb)**
119
+ Simple demo showing how to generate mobility and charging profiles using existing model parameters.
120
+
121
+ 2. **[02_demo_including_parameterization.ipynb](notebooks/02_demo_including_parameterization.ipynb)**
122
+ Complete workflow including parameterization from raw data, model generation, and validation.
123
+ <!-- sphinx-exclude-end -->
124
+
125
+
126
+
127
+
128
+