{"id":13724387,"url":"https://github.com/flechtenberg/pulpo","last_synced_at":"2025-05-07T18:31:58.591Z","repository":{"id":198430080,"uuid":"690615027","full_name":"flechtenberg/pulpo","owner":"flechtenberg","description":"Python package for lifecycle optimization ","archived":false,"fork":false,"pushed_at":"2024-10-27T16:10:58.000Z","size":2585,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T10:00:18.666Z","etag":null,"topics":["brightway","ecoinvent","lca","lifecycle","optimization","pyomo"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flechtenberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-12T14:30:05.000Z","updated_at":"2024-10-27T16:11:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"df284a1d-8918-4e5f-acfe-d479aa3d32bc","html_url":"https://github.com/flechtenberg/pulpo","commit_stats":{"total_commits":37,"total_committers":1,"mean_commits":37.0,"dds":0.0,"last_synced_commit":"179599cdf460b25c8db247dac036b23f1b611f40"},"previous_names":["flechtenberg/pulpo"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flechtenberg%2Fpulpo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flechtenberg%2Fpulpo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flechtenberg%2Fpulpo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flechtenberg%2Fpulpo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flechtenberg","download_url":"https://codeload.github.com/flechtenberg/pulpo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222196150,"owners_count":16947022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brightway","ecoinvent","lca","lifecycle","optimization","pyomo"],"created_at":"2024-08-03T01:01:56.266Z","updated_at":"2025-05-07T18:31:58.544Z","avatar_url":"https://github.com/flechtenberg.png","language":"Jupyter Notebook","funding_links":[],"categories":["Industrial Ecology"],"sub_categories":["Life Cycle Assessment"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://github.com/flechtenberg/flechtenberg_images/blob/main/Pulpo-Logo_INKSCAPE.png?raw=true\" width=\"300\" /\u003e\n\n\u003ch3\u003ePython-based User-defined Lifecycle Production Optimization\u003c/h3\u003e\n\n\u003c!-- Development Tools --\u003e\n[![Jupyter](https://img.shields.io/badge/Jupyter-F37626.svg?style=flat\u0026logo=Jupyter\u0026logoColor=white)](https://jupyter.org/)\n[![Python](https://img.shields.io/badge/Python-3776AB.svg?style=flat\u0026logo=Python\u0026logoColor=white)](https://www.python.org/)\n[![Markdown](https://img.shields.io/badge/Markdown-000000.svg?style=flat\u0026logo=Markdown\u0026logoColor=white)](https://www.markdownguide.org/)\n\n\u003c!-- Project Metadata --\u003e\n[![License](https://img.shields.io/github/license/flechtenberg/pulpo?style=flat\u0026color=5D6D7E)](https://github.com/flechtenberg/pulpo/blob/main/LICENSE)\n[![Last Commit](https://img.shields.io/github/last-commit/flechtenberg/pulpo?style=flat\u0026color=5D6D7E)](https://github.com/flechtenberg/pulpo/commits/main)\n[![Commit Activity](https://img.shields.io/github/commit-activity/m/flechtenberg/pulpo?style=flat\u0026color=5D6D7E)](https://github.com/flechtenberg/pulpo/pulse)\n\n\u003c!-- Additional --\u003e\n[![PyPI - Version](https://img.shields.io/pypi/v/pulpo-dev?color=%2300549f)](https://pypi.org/project/pulpo-dev/)\n[![GitHub Stars](https://img.shields.io/github/stars/flechtenberg/pulpo?style=flat\u0026color=FFD700)](https://github.com/flechtenberg/pulpo/stargazers)\n[![launch - renku](https://renkulab.io/renku-badge.svg)](https://renkulab.io/v2/projects/fabian/pulpo-test/sessions/01JRM54S4NKMS84Y6BAYT832WH/start)\n\n\u003c/div\u003e\n\n---\n\n## 📍 Overview\n\nThis is a python package for **[Life Cycle Optimization (LCO)](https://onlinelibrary.wiley.com/doi/full/10.1111/jiec.13561)** based on life cycle inventories. `pulpo` is intended to serve as a platform for optimization tasks of varying complexity.   \n\nThe package builds on top of the **[Brightway LCA framework](https://docs.brightway.dev/en/latest)** as well as the **[optimization modeling framework Pyomo](https://www.pyomo.org/)**.\n\n---\n\n## ✨ Capabilities\n\nApplying optimization is recommended when the system of study has (1) many degrees of freedoms which would prompt the manual assessment of a manifold of scenarios, although only the \"optimal\" one is of interest and/or (2) any of the following capabilities makes sense within the goal and scope of the study:\n\n- **Specify technology and regional choices** throughout the entire supply chain (i.e. fore- and background), such as choices for the production technology of electricity or origin of metal resources. Consistently accounting for changes in the background in \"large scale\" decisions [can be significant](https://www.sciencedirect.com/science/article/pii/S2352550924002422). \n- **Specify constraints** on any activity in the life cycle inventories, which can be interpreted as tangible limitations such as raw material availability, production capacity, or environmental regulations.\n- **Optimize for or constrain any impact category** for which the **characterization factors** are available.\n- **Specify supply values** instead of final demands, which can become relevant if only production values are available (e.g. [here](https://www.pnas.org/doi/10.1073/pnas.1821029116)).\n\nThe following features are currently under development:\n\n\u003e - [ ] `ℹ️  Optimization under uncertainty [chance-constraints, stochastic optimization ...]`\n\u003e - [ ] `ℹ️  Multi-objective optimization [bi-objective epsilon constrained, goal programming ...]`\n\u003e - [ ] `ℹ️  Integration of economic and social indicators in the optimization problem formulation`\n\n\u003e - [ ] `ℹ️  Development of a GUI for simple optimization tasks`\n\u003e - [X] `ℹ️  Enable PULPO to work on both bw2 and bw25 projects`\n\u003e - [X] `ℹ️  Thorough documentation hosted on flechtenberg.github.io/pulpo/`\n\nFeature requests are more than welcome!\n\n---\n\n### 🔧 Installation\nPULPO has been deployed to the pypi index. Depending on the version of brightway projects you want to work on, install either the bw2 or bw25 version via:\n```sh\npip install pulpo-dev[bw2]\n```\nor\n```sh\npip install pulpo-dev[bw25]\n```\n\n### 🤖 Running pulpo\n\nUse this link to start a session and test PULPO\n[![launch - renku](https://renkulab.io/renku-badge.svg)](https://renkulab.io/v2/projects/fabian/pulpo-test/sessions/01JRM54S4NKMS84Y6BAYT832WH/start)\n\nFind further example notebooks for a [hydrogen case](https://github.com/flechtenberg/pulpo/blob/master/notebooks/hydrogen_showcase.ipynb), an [electricity case](https://github.com/flechtenberg/pulpo/blob/master/notebooks/electricity_showcase.ipynb), and a [plastic case](https://github.com/flechtenberg/pulpo/blob/master/notebooks/plastic_showcase.ipynb) here.\n\nThere is also a workshop repository ([here](https://github.com/flechtenberg/pulpo_workshop)), which has been created for the Brightcon 2024 conference. It contains several notebooks that guide you through the PULPO package and its functionalities, as well as an exercise.\n\n\n### 🧪 Tests\n\nCalling from the package folder: \n\n```sh\npython -m unittest discover -s tests\n```\n\n---\n## What's new in 1.3.0?\n- Switch packaging logic from setup.py to pyproject.toml and align pypi with Github versioning number\n\n---\n\n## 🤝 Contributing\nContributions are very welcome. If you would like to request a feature or report a bug please [open an Issue](https://github.com/flechtenberg/pulpo/issues). If you are confident in your coding skills don't hesitate to implement your suggestions and [send a Pull Request](https://github.com/flechtenberg/pulpo/pulls).\n\n---\n\n## 📄 License\n\nThis project is licensed under the `ℹ️  BSD 3-Clause` License. See the [LICENSE](LICENSE) file for additional info.\nCopyright (c) 2025, Fabian Lechtenberg. All rights reserved.\n\n\n---\n\n## 👏 Acknowledgments\n\nWe would like to express our gratitude to the authors and contributors of the following main packages that **PULPO** is based on:\n\n- [**pyomo**](https://github.com/Pyomo/pyomo)\n- [**brightway2**](https://github.com/brightway-lca/brightway2)\n\nIn addition, we acknowledge the pioneering ideas and contributions from the following works:\n\n- **[Computational Structure of LCA](http://link.springer.com/10.1007/978-94-015-9900-9)**\n- **[Technology Choice Model](https://pubs.acs.org/doi/10.1021/acs.est.6b04270)**\n- **[Modular LCA](http://link.springer.com/10.1007/s11367-015-1015-3)**\n\nFollow-up work, incorporating features such as top-down matrix construction for the use of entire life cycle inventory databases and supply specification, was implemented in **PULPO** and culminated in the following publication, which details the approach and outlines its implementation:\n\n\u003e **Fabian Lechtenberg, Robert Istrate, Victor Tulus, Antonio Espuña, Moisès Graells, and Gonzalo Guillén‐Gosálbez.**  \n\u003e “PULPO: A Framework for Efficient Integration of Life Cycle Inventory Models into Life Cycle Product Optimization.”  \n\u003e *Journal of Industrial Ecology*, October 10, 2024.  \n\u003e [https://doi.org/10.1111/jiec.13561](https://doi.org/10.1111/jiec.13561)\n\n\nThis article is to be cited / referred to if PULPO is used to derive results of a publication or project.\n\n---\n## Authors\n- [@flechtenberg](https://www.github.com/flechtenberg)\n- [@robyistrate](https://www.github.com/robyistrate)\n- [@vtulus](https://www.github.com/vtulus)\n---\n[↑ Return](#Top)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflechtenberg%2Fpulpo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflechtenberg%2Fpulpo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflechtenberg%2Fpulpo/lists"}