PyPSA: Python for Power System Analysis

Overview

PyPI version Conda version CI CI with conda Code coverage Documentation Status License Zenodo Chat on Gitter Examples of use


1   Python for Power System Analysis

1.1   About

PyPSA stands for "Python for Power System Analysis". It is pronounced "pipes-ah".

PyPSA is an open source toolbox for simulating and optimising modern power systems that include features such as conventional generators with unit commitment, variable wind and solar generation, storage units, coupling to other energy sectors, and mixed alternating and direct current networks. PyPSA is designed to scale well with large networks and long time series.

This project is maintained by the Energy System Modelling group at the Institute for Automation and Applied Informatics at the Karlsruhe Institute of Technology. The group is funded by the Helmholtz Association until 2024. Previous versions were developed by the Renewable Energy Group at FIAS to carry out simulations for the CoNDyNet project, financed by the German Federal Ministry for Education and Research (BMBF) as part of the Stromnetze Research Initiative.

1.2   Documentation

Documentation

Quick start

Examples

Known users of PyPSA

Documentation is in sphinx reStructuredText format in the doc sub-folder of the repository.

1.3   Functionality

PyPSA can calculate:

  • static power flow (using both the full non-linear network equations and the linearised network equations)
  • linear optimal power flow (least-cost optimisation of power plant and storage dispatch within network constraints, using the linear network equations, over several snapshots)
  • security-constrained linear optimal power flow
  • total electricity/energy system least-cost investment optimisation (using linear network equations, over several snapshots simultaneously for optimisation of generation and storage dispatch and investment in the capacities of generation, storage, transmission and other infrastructure)

It has models for:

  • meshed multiply-connected AC and DC networks, with controllable converters between AC and DC networks
  • standard types for lines and transformers following the implementation in pandapower
  • conventional dispatchable generators with unit commitment
  • generators with time-varying power availability, such as wind and solar generators
  • storage units with efficiency losses
  • simple hydroelectricity with inflow and spillage
  • coupling with other energy carriers
  • basic components out of which more complicated assets can be built, such as Combined Heat and Power (CHP) units, heat pumps, resistive Power-to-Heat (P2H), Power-to-Gas (P2G), battery electric vehicles (BEVs), Fischer-Tropsch, direct air capture (DAC), etc.; each of these is demonstrated in the examples

Other complementary libraries:

  • pandapower for more detailed modelling of distribution grids, short-circuit calculations, unbalanced load flow and more
  • PowerDynamics.jl for dynamic modelling of power grids at time scales where differential equations are relevant

1.4   Example scripts as Jupyter notebooks

There are extensive examples available as Jupyter notebooks. They are also described in the doc/examples.rst and are available as Python scripts in examples/.

1.5   Screenshots

  • PyPSA-Eur optimising capacities of generation, storage and transmission lines (9% line volume expansion allowed) for a 95% reduction in CO2 emissions in Europe compared to 1990 levels

doc/img/elec_s_256_lv1.09_Co2L-3H.png

  • SciGRID model simulating the German power system for 2015. Interactive plots also be generated with the plotly library, as shown in this Notebook

doc/img/stacked-gen_and_storage-scigrid.png

doc/img/lmp_and_line-loading.png

doc/img/reactive-power.png

  • Small meshed AC-DC toy model

doc/img/ac_dc_meshed.png

All results from a PyPSA simulation can be converted into an interactive online animation using PyPSA-animation, for an example see the PyPSA-Eur-30 example.

1.6   What PyPSA uses under the hood

PyPSA is written and tested to be compatible with Python 3.6 and 3.7. The last release supporting Python 2.7 was PyPSA 0.15.0.

It leans heavily on the following Python packages:

  • pandas for storing data about components and time series
  • numpy and scipy for calculations, such as linear algebra and sparse matrix calculations
  • pyomo for preparing optimisation problems (currently only linear)
  • plotly for interactive plotting
  • matplotlib for static plotting
  • cartopy for plotting the baselayer map
  • networkx for some network calculations
  • py.test for unit testing
  • logging for managing messages

The optimisation uses pyomo so that it is independent of the preferred solver. You can use e.g. one of the free solvers GLPK and CLP/CBC or the commercial solver Gurobi for which free academic licenses are available.

The time-expensive calculations, such as solving sparse linear equations, are carried out using the scipy.sparse libraries.

1.7   Mailing list

PyPSA has a Google Group forum / mailing list.

Anyone can join and anyone can read the posts; only members of the group can post to the list.

The intention is to have a place where announcements of new releases can be made and questions can be asked.

To discuss issues and suggest/contribute features for future development we prefer ticketing through the PyPSA Github Issues page.

1.8   Citing PyPSA

If you use PyPSA for your research, we would appreciate it if you would cite the following paper:

Please use the following BibTeX:

@article{PyPSA,
   author = {T. Brown and J. H\"orsch and D. Schlachtberger},
   title = {{PyPSA: Python for Power System Analysis}},
   journal = {Journal of Open Research Software},
   volume = {6},
   issue = {1},
   number = {4},
   year = {2018},
   eprint = {1707.09913},
   url = {https://doi.org/10.5334/jors.188},
   doi = {10.5334/jors.188}
}

If you want to cite a specific PyPSA version, each release of PyPSA is stored on Zenodo with a release-specific DOI. The release-specific DOIs can be found linked from the overall PyPSA Zenodo DOI for Version 0.17.1 and onwards:

or from the overall PyPSA Zenodo DOI for Versions up to 0.17.0:

1.9   Licence

Copyright 2015-2021 PyPSA Developers

PyPSA is licensed under the open source MIT License.

Comments
  • Introduce nomopyomo

    Introduce nomopyomo

    Introduce optimization without usage of pyomo, based on nomopyomo which is way faster and memory efficient for especially large networks.

    What happened so far:

    New Modules

    • linopf.py - includes all code for setting up the problem
    • linopt.py - includes all solver (io to solver) relevant code
    • stats.py - include code for post-optimization analysis

    Ordinary features of lopf without pyomo:

    • [x] include ramp limits
    • [x] include Storage Units
    • [x] calculate nodal imbalances
    • [x] constant term in objective function
    • [x] calculate voltage angles
    • [x] implement glpk solver
    • [x] logfile for cbc

    Additional features

    • [x] global constraints for transmission expansion volume/cost limit
    • [x] ability to fix values via '_set' for arbitrary variables, also static variables (so f.e. n.generators.p_nom_set can fix values for extendable p_nom variables)
    • [x] warm start
    • [x] add iterative lopf (ilopf), updating impedances after each solving process
    • [x] docstrings for linop{t,f}.py
    • [x] add docstrings to documentation (+ incorporate changes)
    • [x] ensure windows compatibility
    • [x] add windows and osx in travis CI

    Other changes

    • determine_network_topology now includes find_slackbus and find_cycles

    • add new lopf to tests in

      1. acdc test
      2. storage unit test
    • skip python2.7 test in travis file. I had to much python3 code syntax, and didn't see the nessecity to rewrite it as so many package give up on python2 support. But perhaps you have a different view.

    The network.lopf function got a new argument as proposed in #96, so it becomes possible now to call

    network.lopf(pyomo=False)
    
    enhancement 
    opened by FabianHofmann 65
  • Change PyPSA licence from copyleft GPLv3 to more liberal MIT

    Change PyPSA licence from copyleft GPLv3 to more liberal MIT

    In this pull request the licence for PyPSA is changed from the copyleft GNU General Public License Version 3 (GPLv3) to the more liberal MIT License. In addition, all copyright notices refer to the new list of PyPSA Developers in the documentation.

    This change is suggested by the main PyPSA developers because the benefits of a more liberal license seem to outweigh the benefits of a copyleft approach.

    Benefits of copyleft for PyPSA: The copyleft GPLv3 requires users who release software binaries based on PyPSA, even when used as a library, to also release their source code. This would benefit PyPSA if for example somebody developed a big extension, like a GUI, then they would have to release it under the GPLv3. However, we know no cases where anyone is planning such a large extension to sell commercially. Most user developments are either contributed back or kept private, rather than being sold in software bundles. If someone were to develop a commercial product on top of PyPSA, they would mostly likely rather choose liberal-licensed calliope or oemof. So the copyleft offers few advantages.

    Benefits of liberal license: We have heard of several users avoiding PyPSA because of its copyleft GPLv3 license, which forces them to release their code that depends on PyPSA under the GPLv3. We would like to maximise the usage and impact of PyPSA to accelerate the energy transition.

    The original justification for choosing GPLv3 was that it allowed us the freedom to change the license later. It makes more sense to step from a copyleft to a liberal license than the other way around.

    We also refer to the very informative discussion on the switch from GPLv3 to MIT license in the oemof developer community.

    This change requires the consent of all people who have contributed code to PyPSA. If you consent, please add a :heavy_check_mark: after your name or respond below. If you do not consent, please add a :x: after your name or respond below. Please respond by 1st August 2021. Please feel free to also discuss below. Since the major developers have agreed, we will either remove or rewrite contributions from those who do not consent. Thanks for your help!

    • @nworbmot :heavy_check_mark:
    • @coroa :heavy_check_mark:
    • @FabianHofmann :heavy_check_mark:
    • @fneum :heavy_check_mark:
    • @lisazeyen :heavy_check_mark:
    • @martacki :heavy_check_mark:
    • @bourbl :heavy_check_mark:
    • @schlachtberger :heavy_check_mark:
    • @jdedecca :heavy_check_mark:
    • @stianchris :heavy_check_mark:
    • @fonsp
    • @dcradu :heavy_check_mark:
    • @hailiangliu89 :heavy_check_mark:
    • @koen-vg :heavy_check_mark:
    • @BurningTrapezoid :heavy_check_mark:
    • @kaiweiy
    • @nmartensen :heavy_check_mark:
    • @rockstaedt :heavy_check_mark:
    • @ebbekyhl :heavy_check_mark:
    • @MinhHaDuong :heavy_check_mark:
    • @mariiabilousova :heavy_check_mark:
    • @chiaroo :heavy_check_mark:
    • @jankaeh :heavy_check_mark:
    • @miek770 :heavy_check_mark:
    • @merraksh :heavy_check_mark:
    • @euronion :heavy_check_mark:

    Checklist

    • [x] Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
    • [x] A note for the release notes doc/release_notes.rst of the upcoming release is included.
    opened by nworbmot 27
  • Multi-Horizon Investment

    Multi-Horizon Investment

    As of Version 13.1, PyPSA only considers investment in one horizon, e.g. for a single year. We'd like to implement investment over multiple horizons simultaneously, e.g. for 2020, 2025, 2030, 2035, etc., to optimise investments dynamically over several years e.g. under tightening CO2 constraints. The objective function then becomes the discounted net present value (NPV) of energy system costs. Other open models such as OSeMOSYS, Genesys, DIETER (I think) and SWITCH do this already; we can copy their implementations and avoid reinventing the wheel.

    On the data side:

    i) We need a second index for snapshots that gives the investment year, e.g. snapshots = [(2020, "windy day"), (2020, "sunny day"), (2030, "windy day"), (2030, "sunny day")] The representative weather for each investment year may change with the year (e.g. due to climate change); the number of representative snapshots for each investment year may also change.

    ii) We need different CO2/renewable constraints for different investment years.

    iii) For assets, we need to take account of build years and lifetimes for generation, storage and transmission assets, e.g. we need additional fields

    name, build year, life time, cost wind-in-2020, 2020, 20, 1200 wind-in-2025, 2025, 20, 1000 wind-in-2030, 2030, 25, 900

    Then in the code we need to activate assets in the constraints depending on whether they are around in the investment year or not. We also need to take account of the discount rate as a pre-factor to get the NPV for each investment year. Perhaps this should be linked to issue #37 of separating the snapshot_weighting from the duration of each snapshot, which was discussed on the PyPSA mailing list before. BEWARE 1): The final investment horizon has to be treated carefully, to avoid end-of-horizon effects whereby assets are only built for the final horizon and have no value for the rest of their lifetimes. Either model 20 years further (with lower intra-year resolution) or have a "salvage value" for investments made in the final investment horizon (I think OSeMOSYS had this). BEWARE 2): p_nom_max may become linked between different generators as potentials are used up.

    enhancement help wanted 
    opened by nworbmot 21
  • Integrate new optimization module based on linopy

    Integrate new optimization module based on linopy

    Changes proposed in this Pull Request

    A new sub-module "optimization" for the linopy-based optimization is introduced. The optimization module is sub-structured in

    • variables.py - for all variable definitions
    • constraints.py - for all local constraint definitions
    • global_constraints.py - for all global constraints
    • common.py - for common utility functions
    • optimize.py - for functions running the sanitiy checks, optimization and solution assignment
    • abstract.py - for optimization functions abstracted from the normal lopf, (like iterative lopf, possibly also sclopf and others)

    Remaining Todo's

    • [x] sanitize check
      • [X] nans in nominal bounds
      • [x] nans in operational bounds
      • [x] ~link efficiency < 1 #319~
      • [x] intersection of committable and extendable assets
    • [x] support multi-port links
    • [x] support min_up_time min_down_time constraints
    • [x] make p_set argument available for all static and time-dependent variables #202
    • [x] documentation

    Run it

    Run the optimization by

    n.optimize()
    

    you can also create the model and optimize afterwards

    n.optimize.create_model()
    # do whatever stuff
    n.optimize.solve_model()
    

    You can access variables in

    n.model.variables
    

    and constraints in

    n.model.constraints
    

    From there you can look up and modify the LP, like for example

    n.model.constraints['my_constraint'].lhs = n.model.constraints['my_constraint'].lhs + another_variable
    

    Happy to have some feedback @nworbmot @fneum @lisazeyen @pz-max @p-glaum

    Preview Documentation

    https://pypsa--336.org.readthedocs.build/en/336/

    Checklist

    • [x] Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
    • [x] Unit tests for new features were added.
    • [x] Newly introduced dependencies are added to environment.yaml, environment_docs.yaml and setup.py (if applicable).
    • [x] A note for the release notes doc/release_notes.rst of the upcoming release is included.
    • [x] I consent to the release of this PR's code under the MIT license.
    opened by FabianHofmann 20
  • add highs solver

    add highs solver

    Closes # (if applicable).

    Changes proposed in this Pull Request

    Add open source HiGHS solver: solver_performance_new

    Further performance check:

    • 1year, 3h resolution, 3 nodes: HiGHS 8min, Gurobi ~1min
    • 1year, 1h resolution, 3 nodes: HiGHS 50min, Gurobi ~1min

    Future work can:

    • While the above results look incredible, generally all open source solvers struggle when 1 year is simulated in hourly resolution. I.e. Gurobi solves 5 nodes for 1 year in hourly resolution in 1min, while HiGHS and others may need 2+ hours. This performance drop occurs probably because open-source solvers don't address properly the existence of "dense columns".
    • Julian Hall, corrects this statement by saying the HiGHS IPM deals with dense columns. Bottlenecks for the performance drops need to be investigated. Further, Cbc is the MIP solver, one might be better referring to Clp when only solving LPs.
    • Other work could implement problem specific tailored scaling techniques into PyPSA (to be useful for all solvers). See some ongoing discussion here: https://github.com/PyPSA/PyPSA/issues/309

    More discussions: https://forum.openmod.org/t/open-source-highs-solver-performance-boost-for-energy-system-models/2922/2

    Checklist

    • [x] Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
    • [x] A note for the release notes doc/release_notes.rst of the upcoming release is included.
    • [x] I consent to the release of this PR's code under the MIT license.
    opened by pz-max 17
  • augmentation of documentation

    augmentation of documentation

    @FabianHofmann and I discussed a few ideas for improving the PyPSA documentation:

    • [x] add autodocs for documented functions
    • [x] change theme to sphinx_rtd_theme from alabaster
    • [x] readthedocs automatic deployment
    • [x] remove some duplicate content
    • [x] add shields.io stickers
    • [x] API reference

    What one could do another time:

    • update screenshots with new colors (https://github.com/PyPSA/pypsa-eur/pull/35) and cartopy
    • sort examples

    Current state is on https://pypsa-readthedocs.readthedocs.io/

    Once merged, need to change settings on https://readthedocs.org and add correct webhook in github as well as forwarding https://pypsa.org/documentation to https://pypsa.readthedocs.io.

    enhancement 
    opened by fneum 16
  • Exclude store links from fixing p_nom at last iteration

    Exclude store links from fixing p_nom at last iteration

    The last linopf iteration fixes the link and line capacities to ensure consistency of impedances and power flow. However, when using store components, it also fixes the capacities of their respective in- and outflow links. Filtering by carrier solves this problem. This is a quick fix which has worked well for me, I'm sure there's a more elegant solution than using a for loop - however, it is nice that no error messages are displayed, using the loc approach.

    Closes # (if applicable).

    Changes proposed in this Pull Request

    Filtering by carrier before fixing p_nom links

    Checklist

    • [x] Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
    • ~[ ] Unit tests for new features were added (if applicable).~
    • ~[ ] Newly introduced dependencies are added to environment.yaml, environment_docs.yaml and setup.py (if applicable).~
    • [x] A note for the release notes doc/release_notes.rst of the upcoming release is included.
    opened by chiaroo 13
  • Non-optimal solution not writing output

    Non-optimal solution not writing output

    I am solving a lopf using the Barrier method from Gurobi (with the crossover turned off, since it takes too long otherwise) and I get just a sub-optimal solution. Then PyPSA prints:

    WARNING:pypsa.opf:WARNING! Optimization might be sub-optimal. Writing output anyway

    but it does not write any output. It seems to be problem with the format that the sub-optimal solution is given (maybe having some differences with the way an optimal solution is given).

    Side note: I am using "extendable" storage and I am mainly interested in the "p_nom_opt" that the solver would give me.

    question 
    opened by OriolRaventos 12
  • Restore pandapower importer and add tests

    Restore pandapower importer and add tests

    Changes proposed in this Pull Request

    The pandapower network importer was not working correctly. @rbolgaryn and myself working currently on fixing the importer. In particular, we are fixing the transformer and the shunt components.

    Checklist

    • [x] Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
    • [x] Unit tests for new features were added (if applicable).
    • [x] A note for the release notes doc/release_notes.rst of the upcoming release is included.
    • [x] I consent to the release of this PR's code under the MIT license.
    opened by pz-max 10
  • committable generator constraint fails when min_up_time exceeds length of snapshots

    committable generator constraint fails when min_up_time exceeds length of snapshots

    Checklist

    • [x] I am using the current master branch or the latest release. Please indicate:
    • [x] test whether potential bug persists for more than the one snapshot @camiloromers.

    Describe the Bug

    When I try to run a OPF using the network folder attached below I got the following error:

    ERROR: Rule failed when generating expression for constraint
        gen_up_time_force_0 with index 1: IndexError: index 1 is out of bounds for
        axis 0 with size 1
    ERROR: Constructing component 'gen_up_time_force_0' from data=None failed:
        IndexError: index 1 is out of bounds for axis 0 with size 1
    

    May I know what's missing in my network or any clue relating the error I am getting?

    Thanks for your help.

    [L2RPN_2020_ieee_118_pypsa.zip](https://github.com/PyPSA/PyPSA/files/4071575/L2RPN_2020_ieee_118_pypsa.zip)
    
    
    bug 
    opened by camiloromers 10
  • Faster kirchoff cycle creation (define_passive_branch_flows_with_kirchhoff)

    Faster kirchoff cycle creation (define_passive_branch_flows_with_kirchhoff)

    We have been using PyPSA, and we noticed that for larger numbers of snapshots and branches, the time to create the kirchhoff cycles was quite high. This PR significantly reduces the time, primarily by moving the time-independent attribute calculations outside of the snapshots loop.

    I have also added a new example build_model.py, which can show the speed increase. It simply creates a (randomized) larger network to induce cycles. On my computer, the new build_model script runs about 50% faster on this branch than when I run it versus master.

    Let me know if you would like any changes. One easy additional change could be to use define_sub_network_cycle_constraints for the cycles formulation as well, but I haven't been using it, so I haven't been able to check for sure that that would be reasonable.

    opened by rsmith54 10
  • plot: allow independent control of arrow size and branch width

    plot: allow independent control of arrow size and branch width

    Currently the flow argument of n.plot() hijacks the line_widths argument such that it no longer controls the line width but the arrow size. I would like to control arrow size and line widths separately.

    opened by fneum 1
  • Bug in network clustering: cannot insert bus1_s, already exists

    Bug in network clustering: cannot insert bus1_s, already exists

    Checklist

    • [x] I am using the current master branch or the latest release. Please indicate:

    Describe the Bug

    This problem arises in the function get_buses_linemap_and_lines in the following code when the lines dataframe is empty:

    return (
            buses,
            linemap,
            linemap_p,
            linemap_n,
            lines.reset_index()
            .rename(columns={"bus0_s": "bus0", "bus1_s": "bus1"}, copy=False)
            .set_index("name"),
            lines_t,
        )
    

    This seems to be due to the function aggregatelines called previously that does stuff on the lines dataframe including groupbys. That should normally drop such columns but that does not happen when the dataframe is empty. This is an error we experienced when running the pypsa-earth workflow on rwanda.

    Error Message

    If applicable, paste any terminal output to help illustrating your problem. In some cases it may also be useful to share your list of installed packages: conda list.

    Exception has occurred: ValueError       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
    cannot insert bus1_s, already exists
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/site-packages/pandas/core/frame.py", line 4814, in insert
        raise ValueError(f"cannot insert {column}, already exists")
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/site-packages/pandas/core/frame.py", line 6358, in reset_index
        new_obj.insert(
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/site-packages/pandas/util/_decorators.py", line 331, in wrapper
        return func(*args, **kwargs)
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/site-packages/pypsa/networkclustering.py", line 351, in get_buses_linemap_and_lines
        lines.reset_index()
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/site-packages/pypsa/networkclustering.py", line 378, in get_clustering_from_busmap
        buses, linemap, linemap_p, linemap_n, lines, lines_t = get_buses_linemap_and_lines(
      File "/data/davidef/git_world/pypsa-earth/scripts/cluster_network.py", line 444, in clustering_for_n_clusters
        clustering = get_clustering_from_busmap(
      File "/data/davidef/git_world/pypsa-earth/scripts/cluster_network.py", line 577, in <module>
        clustering = clustering_for_n_clusters(
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/runpy.py", line 86, in _run_code
        exec(code, run_globals)
      File "/home/davidef/miniconda3/envs/pypsa-earth/lib/python3.10/runpy.py", line 196, in _run_module_as_main (Current frame)
        return _run_code(code, main_globals, None,
    
    bug 
    opened by davide-f 0
  • Add carbon intensity to statistics module

    Add carbon intensity to statistics module

    Provide an easy way to calculate the carbon intensity of components after optimisation.

    Common units: g/kWh, kg/MWh, t/MWh

    For generators:

    n.generators_t.p / n.generators.efficiency * n.generators.carrier.map(n.carriers.co2_emissions)
    

    Needs to be generalised for all components.

    enhancement 
    opened by fneum 1
  • Idea? - implement __add__ for networks

    Idea? - implement __add__ for networks

    Hi,

    Occasionally we had the situation that there's subnetworks that could be defined separately, maybe we are also interested in solving those subnetwork separatly. Then we want to combine them into one big network. Would it be an idea to implement the class method add such that network1+network2 makes sense and gives you the combined network? Could make some workflows quite tidy. I guess there's a ton of things to consider there, overlapping buses for instance to have them connected after the merger. So at this stage just an idea.

    Best, Andreas

    enhancement 
    opened by Cellophil 1
  • Bus power equality doesn't trigger if bus doesn't exist, solves anyway

    Bus power equality doesn't trigger if bus doesn't exist, solves anyway

    Hi,

    We found a small bug, pypsa 0.21.1:

    #%%
    import pypsa
    
    n = pypsa.Network()
    n.set_snapshots(np.arange(10))
    n.add('Generator', name='test', bus='nobus', p_nom=100)
    n.add('Bus', name='bus')
    n.add('Generator', name='test2', bus='bus', p_nom=100)
    n.lopf(solver_name='glpk')
    
    #%%
    from pypsa.linopt import define_constraints, get_var, linexpr
    def extra(network, snapshots):
        define_constraints(network, linexpr((1, get_var(network, 'Generator', 'p').loc[:, 'test'])), '>=', 40, 'test')
    
    n.lopf(solver_name='glpk', extra_functionality=extra)
    

    A generator is put at a bus that doesn't exist - I guess a frequent thing in models due to data issues, and certainly captured by consistency_check. First stage solves normally and you could assume it just creates a virtual bus, equalizing power to zero there. It might be good if that was a bit stricter there...

    Second one is a bit more puzzling, you can force the generator to produce power into the void. It solves normally. Not the most frequent scenario, but maybe worth a look.

    Best, Andreas

    opened by Cellophil 0
Releases(v0.21.3)
  • v0.21.3(Dec 16, 2022)

    What's Changed

    • Update linopf.py by @TimFuermann in https://github.com/PyPSA/PyPSA/pull/515
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/516
    • Update power-to-gas-boiler-chp examples to linopy by @coroa in https://github.com/PyPSA/PyPSA/pull/504
    • constraints.py: circumvent xarray groupby with multiindex by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/522
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/519
    • Fix HiGHS parsing for HiGHS v1.4.0 by @gailin-p in https://github.com/PyPSA/PyPSA/pull/501
    • Add a standard line type to represent DC lines by @ekatef in https://github.com/PyPSA/PyPSA/pull/517

    New Contributors

    • @TimFuermann made their first contribution in https://github.com/PyPSA/PyPSA/pull/515
    • @gailin-p made their first contribution in https://github.com/PyPSA/PyPSA/pull/501
    • @ekatef made their first contribution in https://github.com/PyPSA/PyPSA/pull/517

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.21.2...v0.21.3

    Source code(tar.gz)
    Source code(zip)
  • v0.21.2(Nov 30, 2022)

    What's Changed

    • fix: fix typo sig->sign by @loongmxbt in https://github.com/PyPSA/PyPSA/pull/494
    • add models and user meeting video to docs by @pz-max in https://github.com/PyPSA/PyPSA/pull/495
    • Implement linearised unit commitment by @p-glaum in https://github.com/PyPSA/PyPSA/pull/472
    • Fix save network bug introduced by linearized unit commitment implementation by @p-glaum in https://github.com/PyPSA/PyPSA/pull/497
    • consistency_check: allow empty strings in multilink columns by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/500
    • flake8 and pylint fixes by @bje- in https://github.com/PyPSA/PyPSA/pull/453
    • add dutch nuclear study for ministry by @pz-max in https://github.com/PyPSA/PyPSA/pull/508
    • Update users.rst by @robbiemorrison in https://github.com/PyPSA/PyPSA/pull/509
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/510
    • fix broken import with pyomo 6.4.3 by @maurerle in https://github.com/PyPSA/PyPSA/pull/512

    New Contributors

    • @loongmxbt made their first contribution in https://github.com/PyPSA/PyPSA/pull/494
    • @bje- made their first contribution in https://github.com/PyPSA/PyPSA/pull/453
    • @robbiemorrison made their first contribution in https://github.com/PyPSA/PyPSA/pull/509
    • @maurerle made their first contribution in https://github.com/PyPSA/PyPSA/pull/512

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.21.1...v0.21.2

    Source code(tar.gz)
    Source code(zip)
  • v0.21.1(Nov 10, 2022)

    What's Changed

    • fix curtailment calculation by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/483
    • io: fix netcdf import for datetime snapshots by @fneum in https://github.com/PyPSA/PyPSA/pull/484
    • doc: add linopy optimisation module API reference by @fneum in https://github.com/PyPSA/PyPSA/pull/485
    • setup.py: limit linopy version by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/493
    • prepare release 0.21.1 by @fneum in https://github.com/PyPSA/PyPSA/pull/490

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.21.0...v0.21.1

    Source code(tar.gz)
    Source code(zip)
  • v0.21.0(Nov 7, 2022)

    What's Changed

    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/463
    • Integrate new optimization module based on linopy by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/336
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/464
    • Frontend stats by @p-glaum in https://github.com/PyPSA/PyPSA/pull/457
    • linopf: Allow empty lhs in nodal balance for zero rhs by @coroa in https://github.com/PyPSA/PyPSA/pull/465
    • optimization: fix postprocessing with different index type by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/471
    • fix example model text for pypsa-earth by @pz-max in https://github.com/PyPSA/PyPSA/pull/469
    • add discord reference by @pz-max in https://github.com/PyPSA/PyPSA/pull/468
    • Statistics refactor by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/473
    • statistics: fix groupby argument by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/474
    • User update by @pz-max in https://github.com/PyPSA/PyPSA/pull/475
    • Restore pandapower importer and add tests by @pz-max in https://github.com/PyPSA/PyPSA/pull/332
    • statistics: fix groupby default argument by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/476
    • io: speed up import by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/480
    • prepare release 0.21.0 by @fneum in https://github.com/PyPSA/PyPSA/pull/481

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.20.1...v0.21.0

    Source code(tar.gz)
    Source code(zip)
  • v0.20.1(Oct 6, 2022)

    What's Changed

    • minor fix of docstring for define_constraints function by @Irieo in https://github.com/PyPSA/PyPSA/pull/426
    • set n.objective to nan for failed optimisation (closes #397) by @fneum in https://github.com/PyPSA/PyPSA/pull/424
    • Add plotting example by @energyLS in https://github.com/PyPSA/PyPSA/pull/427
    • clustering bugfix: default p_nom should be sum by @martacki in https://github.com/PyPSA/PyPSA/pull/430
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/432
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/441
    • minor change to package name by @snoyes in https://github.com/PyPSA/PyPSA/pull/439
    • allow Path for importing network objects by @fneum in https://github.com/PyPSA/PyPSA/pull/443
    • Refine network representation by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/440
    • Proposed fix to issue #436 by @pgkirsch in https://github.com/PyPSA/PyPSA/pull/447
    • CI: remove windows run from conda CI by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/449
    • add redispatch example by @fneum in https://github.com/PyPSA/PyPSA/pull/446
    • Aggregation of per unit timeseries of one port components by @ClaraBuettner in https://github.com/PyPSA/PyPSA/pull/435
    • test: pass explicit axis to colorbar plot by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/451
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/450
    • add JRC as user by @fneum in https://github.com/PyPSA/PyPSA/pull/452
    • refactor consistency check, improve performance by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/454
    • Update components.py by @nnhjy in https://github.com/PyPSA/PyPSA/pull/459
    • prepare release 0.20.1 by @fneum in https://github.com/PyPSA/PyPSA/pull/460

    New Contributors

    • @Irieo made their first contribution in https://github.com/PyPSA/PyPSA/pull/426
    • @snoyes made their first contribution in https://github.com/PyPSA/PyPSA/pull/439
    • @pgkirsch made their first contribution in https://github.com/PyPSA/PyPSA/pull/447
    • @ClaraBuettner made their first contribution in https://github.com/PyPSA/PyPSA/pull/435
    • @nnhjy made their first contribution in https://github.com/PyPSA/PyPSA/pull/459

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.20.0...v0.20.1

    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Jul 26, 2022)

    What's Changed

    • add Python 3.10 to CI, remove Python 3.9 platform restrictions by @fneum in https://github.com/PyPSA/PyPSA/pull/387
    • Change message when exporting/importing networks, consider networks without a name by @euronion in https://github.com/PyPSA/PyPSA/pull/386
    • n._multi_invest set to False for networks imported from pypsa<0.18.0 by @fneum in https://github.com/PyPSA/PyPSA/pull/389
    • remove deprecated distutils module by @fneum in https://github.com/PyPSA/PyPSA/pull/391
    • Deprecate n.lopf(pyomo=True) default in favour of n.lopf(pyomo=False) by @fneum in https://github.com/PyPSA/PyPSA/pull/390
    • plot: compute boundaries in all case for consistent circle sizes by @fneum in https://github.com/PyPSA/PyPSA/pull/394
    • add pypsa.plot.add_legend* utility functions for lines, circles, patches legends by @fneum in https://github.com/PyPSA/PyPSA/pull/395
    • add support for individually normed colorbars in n.plot() by @fneum in https://github.com/PyPSA/PyPSA/pull/396
    • fix indexing when iterating over subnetworks components by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/392
    • restore compatibility for pyomo 6.4.1 by @fneum in https://github.com/PyPSA/PyPSA/pull/406
    • Update links.csv by @txelldm in https://github.com/PyPSA/PyPSA/pull/404
    • add example models using PyPSA by @lisazeyen in https://github.com/PyPSA/PyPSA/pull/403
    • plot script: fix keyword error in bus sizes by @p-glaum in https://github.com/PyPSA/PyPSA/pull/407
    • CI: fix deprecations and warnings by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/408
    • Disconnected bus: Test added, temporary fix (display in network consi… by @Cellophil in https://github.com/PyPSA/PyPSA/pull/393
    • Add meta attribute to the pypsa network object by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/413
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/414
    • networkclustering: greedy modularity maximization by @martacki in https://github.com/PyPSA/PyPSA/pull/377
    • test: skip pypower test if import fails by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/416
    • documentation fixes by @fneum in https://github.com/PyPSA/PyPSA/pull/417
    • CI: disable windows for python3.7 due to hdf5/netcdf installation fails by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/418
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/419
    • Add OTH Regensburg to PyPSA users by @energyLS in https://github.com/PyPSA/PyPSA/pull/420
    • set clustering defaults by @martacki in https://github.com/PyPSA/PyPSA/pull/423
    • pandas deprecation: set to list when calling .loc[] by @martacki in https://github.com/PyPSA/PyPSA/pull/422
    • Extend unit tests for components by @rockstaedt in https://github.com/PyPSA/PyPSA/pull/421
    • prepare release 0.20.0 by @fneum in https://github.com/PyPSA/PyPSA/pull/425

    New Contributors

    • @txelldm made their first contribution in https://github.com/PyPSA/PyPSA/pull/404
    • @Cellophil made their first contribution in https://github.com/PyPSA/PyPSA/pull/393
    • @energyLS made their first contribution in https://github.com/PyPSA/PyPSA/pull/420

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.19.3...v0.20.0

    Source code(tar.gz)
    Source code(zip)
  • v0.19.3(Apr 22, 2022)

    What's Changed

    • Add pre-commit hooks by @euronion in https://github.com/PyPSA/PyPSA/pull/365
    • apply pre-commit formats by @fneum in https://github.com/PyPSA/PyPSA/pull/375
    • doc: fix binder links by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/378
    • add scikit-learn to doc environment for spatial clustering example by @fneum in https://github.com/PyPSA/PyPSA/pull/384

    New Contributors

    • @pre-commit-ci made their first contribution in https://github.com/PyPSA/PyPSA/pull/379

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.19.2...v0.19.3

    Source code(tar.gz)
    Source code(zip)
  • v0.19.2(Mar 7, 2022)

    What's Changed

    • Fix broken link to pypsa.linopt.join_exprs() method by @fwitte in https://github.com/PyPSA/PyPSA/pull/366
    • linopt: use .loc for assigning new rows and columns in pd.DataFrame by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/367
    • add 750kV line type by @p-glaum in https://github.com/PyPSA/PyPSA/pull/369

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.19.1...v0.19.2

    Source code(tar.gz)
    Source code(zip)
  • v0.19.1(Feb 18, 2022)

    What's Changed

    • Hotfix of #360 by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/361
    • fix docs environment by @fneum in https://github.com/PyPSA/PyPSA/pull/362
    • prepare release 0.19.1 by @fneum in https://github.com/PyPSA/PyPSA/pull/363

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.19.0...v0.19.1

    Source code(tar.gz)
    Source code(zip)
  • v0.19.0(Feb 11, 2022)

    What's Changed

    • doc: add an example for spatial clustering by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/306
    • components/io: name index of df's and column pnl's to component name by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/307
    • Fix Cbc solver bug by @pz-max in https://github.com/PyPSA/PyPSA/pull/303
    • introduce hierarchical clustering by @martacki in https://github.com/PyPSA/PyPSA/pull/289
    • no comma in buses.csv and lines.csv at the end by @fneum in https://github.com/PyPSA/PyPSA/pull/313
    • add highs solver by @pz-max in https://github.com/PyPSA/PyPSA/pull/308
    • Component index name followup by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/315
    • Minor hac clustering fixes by @nmartensen in https://github.com/PyPSA/PyPSA/pull/316
    • fix broken doc links to pypsa.org/examples by @fneum in https://github.com/PyPSA/PyPSA/pull/318
    • Line clustering with time series (supersedes #260) by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/326
    • bug fix length mismatch error by @p-glaum in https://github.com/PyPSA/PyPSA/pull/328
    • Minor plotting by @nmartensen in https://github.com/PyPSA/PyPSA/pull/329
    • Fix some line parameter calculation issues in network clustering by @YifanLi86 in https://github.com/PyPSA/PyPSA/pull/323
    • fix plot in scipy example nb by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/338
    • networkclustering: remove sklean.cluster.kmeans 1.0 deprecation warning by @martacki in https://github.com/PyPSA/PyPSA/pull/339
    • linopt: fix broadcasted shape by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/340
    • Update Read the Docs configuration (automatic) by @readthedocs-assistant in https://github.com/PyPSA/PyPSA/pull/342
    • Improve documentation of customisation with linopt by @nworbmot in https://github.com/PyPSA/PyPSA/pull/334
    • bugfix: multi-link when no link is in network by @fneum in https://github.com/PyPSA/PyPSA/pull/345
    • Hotfix in networkclustering: follow up to #323 by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/347
    • Add warning message for links by @fwitte in https://github.com/PyPSA/PyPSA/pull/320
    • use builtin groupby.cumsum rather than transform for pd 1.4 compat by @fneum in https://github.com/PyPSA/PyPSA/pull/351
    • address pandas 1.4 deprectations by @fneum in https://github.com/PyPSA/PyPSA/pull/353
    • nx.Graph instead of nx.OrderedGraph and Python>=3.7 by @fneum in https://github.com/PyPSA/PyPSA/pull/350
    • linopf: prevent downcasting of int dtype by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/354
    • networkclustering: only aggregate non-empty one port components (pd 1.4) by @fneum in https://github.com/PyPSA/PyPSA/pull/352
    • linopf: solve 331 by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/355
    • pypsa/plot.py: do not plot buses with zero size by @nmartensen in https://github.com/PyPSA/PyPSA/pull/357
    • Links ramp rate by @smdumlao in https://github.com/PyPSA/PyPSA/pull/314
    • Increase overall test coverage by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/356
    • linopf: fix ramp limits for rolling horizons by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/358
    • Release 0.19 by @fneum in https://github.com/PyPSA/PyPSA/pull/359

    New Contributors

    • @pz-max made their first contribution in https://github.com/PyPSA/PyPSA/pull/303
    • @p-glaum made their first contribution in https://github.com/PyPSA/PyPSA/pull/328
    • @YifanLi86 made their first contribution in https://github.com/PyPSA/PyPSA/pull/323
    • @readthedocs-assistant made their first contribution in https://github.com/PyPSA/PyPSA/pull/342
    • @smdumlao made their first contribution in https://github.com/PyPSA/PyPSA/pull/314

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.18.1...v0.19.0

    Source code(tar.gz)
    Source code(zip)
  • v0.18.1(Oct 15, 2021)

    What's Changed

    • Update lines.csv by @phil-fzj in https://github.com/PyPSA/PyPSA/pull/281
    • networkclustering: strip string of clustered component name by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/285
    • opt: Fix constraint building for pyomo 6.1 by @coroa in https://github.com/PyPSA/PyPSA/pull/286
    • Update link to ESM group by @hertelm in https://github.com/PyPSA/PyPSA/pull/284
    • deprecate clustering methods that are not evaluated or maintained by @martacki in https://github.com/PyPSA/PyPSA/pull/287
    • doc: fix css theme by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/293
    • Fix syntax error in load definition in quickstart example by @fwitte in https://github.com/PyPSA/PyPSA/pull/294
    • Include both current and imported network file PyPSA version for convenience. by @leonsn in https://github.com/PyPSA/PyPSA/pull/295
    • Fix typo in code of Optimization without pyomo tutorial by @fwitte in https://github.com/PyPSA/PyPSA/pull/297
    • fix #298 by @FabianHofmann in https://github.com/PyPSA/PyPSA/pull/299
    • Prepare release 0.18.1 by @fneum in https://github.com/PyPSA/PyPSA/pull/300

    New Contributors

    • @phil-fzj made their first contribution in https://github.com/PyPSA/PyPSA/pull/281
    • @hertelm made their first contribution in https://github.com/PyPSA/PyPSA/pull/284
    • @fwitte made their first contribution in https://github.com/PyPSA/PyPSA/pull/294
    • @leonsn made their first contribution in https://github.com/PyPSA/PyPSA/pull/295

    Full Changelog: https://github.com/PyPSA/PyPSA/compare/v0.18.0...v0.18.1

    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Aug 12, 2021)

    This release contains new features for pathway optimisation, improvements of the documentation's examples section as well as compatibility and bug fixes.

    Please see the release notes for a more detailed description.

    Source code(tar.gz)
    Source code(zip)
  • v0.17.1(Jul 15, 2020)

  • v0.17.0(Jul 14, 2020)

  • v0.16.1(Jul 14, 2020)

  • v0.16.0(Jul 14, 2020)

  • v0.15.0(Jul 14, 2020)

  • v0.14.1(Jul 14, 2020)

  • v0.14.0(Jul 14, 2020)

  • v0.13.2(Jul 14, 2020)

  • v0.13.1(Jul 14, 2020)

  • v0.13.0(Jul 14, 2020)

  • v0.12.0(Jul 14, 2020)

  • v0.11.0(Jul 14, 2020)

  • v0.10.0(Jul 14, 2020)

A set of functions and analysis classes for solvation structure analysis

SolvationAnalysis The macroscopic behavior of a liquid is determined by its microscopic structure. For ionic systems, like batteries and many enzymes,

MDAnalysis 19 Nov 24, 2022
Statistical Analysis 📈 focused on statistical analysis and exploration used on various data sets for personal and professional projects.

Statistical Analysis ?? This repository focuses on statistical analysis and the exploration used on various data sets for personal and professional pr

Andy Pham 1 Sep 3, 2022
A computer algebra system written in pure Python

SymPy See the AUTHORS file for the list of authors. And many more people helped on the SymPy mailing list, reported bugs, helped organize SymPy's part

SymPy 9.9k Dec 31, 2022
Sensitivity Analysis Library in Python (Numpy). Contains Sobol, Morris, Fractional Factorial and FAST methods.

Sensitivity Analysis Library (SALib) Python implementations of commonly used sensitivity analysis methods. Useful in systems modeling to calculate the

SALib 663 Jan 5, 2023
🧪 Panel-Chemistry - exploratory data analysis and build powerful data and viz tools within the domain of Chemistry using Python and HoloViz Panel.

???? ??. The purpose of the panel-chemistry project is to make it really easy for you to do DATA ANALYSIS and build powerful DATA AND VIZ APPLICATIONS within the domain of Chemistry using using Python and HoloViz Panel.

Marc Skov Madsen 97 Dec 8, 2022
Tablexplore is an application for data analysis and plotting built in Python using the PySide2/Qt toolkit.

Tablexplore is an application for data analysis and plotting built in Python using the PySide2/Qt toolkit.

Damien Farrell 81 Dec 26, 2022
Repositori untuk menyimpan material Long Course STMKGxHMGI tentang Geophysical Python for Seismic Data Analysis

Long Course "Geophysical Python for Seismic Data Analysis" Instruktur: Dr.rer.nat. Wiwit Suryanto, M.Si Dipersiapkan oleh: Anang Sahroni Waktu: Sesi 1

Anang Sahroni 0 Dec 4, 2021
A data analysis using python and pandas to showcase trends in school performance.

A data analysis using python and pandas to showcase trends in school performance. A data analysis to showcase trends in school performance using Panda

Jimmy Faccioli 0 Sep 7, 2021
HyperSpy is an open source Python library for the interactive analysis of multidimensional datasets

HyperSpy is an open source Python library for the interactive analysis of multidimensional datasets that can be described as multidimensional arrays o

HyperSpy 411 Dec 27, 2022
A collection of learning outcomes data analysis using Python and SQL, from DQLab.

Data Analyst with PYTHON Data Analyst berperan dalam menghasilkan analisa data serta mempresentasikan insight untuk membantu proses pengambilan keputu

null 6 Oct 11, 2022
DaDRA (day-druh) is a Python library for Data-Driven Reachability Analysis.

DaDRA (day-druh) is a Python library for Data-Driven Reachability Analysis. The main goal of the package is to accelerate the process of computing estimates of forward reachable sets for nonlinear dynamical systems.

null 2 Nov 8, 2021
BioMASS - A Python Framework for Modeling and Analysis of Signaling Systems

Mathematical modeling is a powerful method for the analysis of complex biological systems. Although there are many researches devoted on produ

BioMASS 22 Dec 27, 2022
Python-based Space Physics Environment Data Analysis Software

pySPEDAS pySPEDAS is an implementation of the SPEDAS framework for Python. The Space Physics Environment Data Analysis Software (SPEDAS) framework is

SPEDAS 98 Dec 22, 2022
Python Project on Pro Data Analysis Track

Udacity-BikeShare-Project: Python Project on Pro Data Analysis Track Basic Data Exploration with pandas on Bikeshare Data Basic Udacity project using

Belal Mohammed 0 Nov 10, 2021
Weather analysis with Python, SQLite, SQLAlchemy, and Flask

Surf's Up Weather analysis with Python, SQLite, SQLAlchemy, and Flask Overview The purpose of this analysis was to examine weather trends (precipitati

Art Tucker 1 Sep 5, 2021
Stock Analysis dashboard Using Streamlit and Python

StDashApp Stock Analysis Dashboard Using Streamlit and Python If you found the content useful and want to support my work, you can buy me a coffee! Th

StreamAlpha 27 Dec 9, 2022
Python implementation of Principal Component Analysis

Principal Component Analysis Principal Component Analysis (PCA) is a dimension-reduction algorithm. The idea is to use the singular value decompositio

Ignacio Darago 1 Nov 6, 2021
Powerful, efficient particle trajectory analysis in scientific Python.

freud Overview The freud Python library provides a simple, flexible, powerful set of tools for analyzing trajectories obtained from molecular dynamics

Glotzer Group 195 Dec 20, 2022
A Python adaption of Augur to prioritize cell types in perturbation analysis.

A Python adaption of Augur to prioritize cell types in perturbation analysis.

Theis Lab 2 Mar 29, 2022