Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unhelpful error when forgetting 'file=' for resource specification #472

Open
sjvrijn opened this issue Jul 25, 2023 · 0 comments
Open

Unhelpful error when forgetting 'file=' for resource specification #472

sjvrijn opened this issue Jul 25, 2023 · 0 comments
Labels
has-workaround The issue describes a valid workaround until the primary issue is solved timeseries v0.6 Version 0.6

Comments

@sjvrijn
Copy link

sjvrijn commented Jul 25, 2023

Problem description

When I was trying to set up a simple minimal model, I got the following error:

Error in check_model_data, ~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/preprocess/checks.py:739
'>' not supported between instances of 'str' and 'int'

My first debugging efforts showed that the error occurred when demand.csv values had been loaded as strings instead of floats.
After a lot of confusion and searching, I managed to find that I had forgotten file= for my wind_resource specification instead, i.e.,

techs:
    offwind:
        ...
        constraints:
            resource: wind_resource.csv

instead of

techs:
    offwind:
        ...
        constraints:
            resource: file=wind_resource.csv

As a new user, this was very discouraging. If the error message could be improved for such a case, that would be very helpful.

Full output of `calliope run model.yaml --debug`
$ calliope run model.yaml --debug
Version 0.6.10
Calliope 0.6.10 starting at 2023-07-25 11:08:48

[2023-07-25 11:08:48] INFO     Model: initialising
[2023-07-25 11:08:48] INFO     Model: preprocessing stage 1 (model_run)
[2023-07-25 11:08:48] INFO     Model: preprocessing stage 2 (model_data)
Traceback (most recent call last):
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/cli.py", line 85, in format_exceptions
    yield
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/cli.py", line 278, in run
    model = _run_setup_model(model_file, scenario, model_format, override_dict)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/cli.py", line 211, in _run_setup_model
    model = Model(model_file, scenario=scenario, override_dict=override_dict)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/core/model.py", line 79, in __init__
    self._init_from_model_run(model_run, debug_data)
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/core/model.py", line 130, in _init_from_model_run
    self._model_data = final_timedimension_processing(_model_data)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/preprocess/time.py", line 267, in final_timedimension_processing
    model_data, final_check_comments, warns, errors = checks.check_model_data(
                                                      ^^^^^^^^^^^^^^^^^^^^^^^^
  File "~/.pyenv/versions/calliope/lib/python3.11/site-packages/calliope/preprocess/checks.py", line 739, in check_model_data
    if any(model_data.resource.sel(loc_techs_finite_resource=loc_tech).values > 0):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>' not supported between instances of 'str' and 'int'

Steps to reproduce the problem

files to reproduce

model.yaml:

import:
    - 'model_config/locations.yaml'
    - 'model_config/techs.yaml'

model:
    name: 'some minimum model'
    timeseries_data_path: 'timeseries_data'

run:
    solver: glpk
    objective_options: {'cost_class': {"monetary": 1} }

model_config/techs.yaml

techs:
    gas:
        essentials:
            name: 'gas'
            parent: supply
            carrier_out: power
        constraints:
            resource: inf
            energy_cap_max: 460
        costs:
            monetary:
                om_con: 0.04

    offwind:
        essentials:
            name: 'offwind'
            parent: supply
            carrier_out: power
        constraints:
            resource: file=wind_resource.csv  # removing 'file=' here causes an error when loading demand?!
        costs:
            monetary:
                om_con: 0.005

    demandpower:
        essentials:
            name: 'demandpower'
            parent: demand
            carrier: power

    actransmission:
        essentials:
            name: 'actransmission'
            parent: transmission
            carrier: power

model_config/locations.yaml

locations:
    windlocation:
        techs:
            offwind:
    city:
        techs:
            gas:
            demandpower:
                constraints:
                    resource: file=demand.csv
links:
    windlocation,city:
        techs:
            actransmission:
                constraints:
                    energy_cap_max: 400
demand.csv
,city
2020-01-01 00:00:00,-467.5408
2020-01-01 01:00:00,-445.4432
2020-01-01 02:00:00,-426.0224
2020-01-01 03:00:00,-414.5648
2020-01-01 04:00:00,-397.1376
2020-01-01 05:00:00,-365.0048
2020-01-01 06:00:00,-365.2400
2020-01-01 07:00:00,-372.1728
2020-01-01 08:00:00,-398.2912
2020-01-01 09:00:00,-428.8784
2020-01-01 10:00:00,-462.5120
2020-01-01 11:00:00,-475.2464
2020-01-01 12:00:00,-468.3024
2020-01-01 13:00:00,-462.6800
2020-01-01 14:00:00,-461.6384
2020-01-01 15:00:00,-629.4240
2020-01-01 16:00:00,-675.6464
2020-01-01 17:00:00,-684.2480
2020-01-01 18:00:00,-675.0416
2020-01-01 19:00:00,-654.8032
2020-01-01 20:00:00,-647.3776
2020-01-01 21:00:00,-654.0080
2020-01-01 22:00:00,-626.0640
2020-01-01 23:00:00,-592.2288
wind_resource.csv
,windlocation
2020-01-01 00:00:00,1447.2
2020-01-01 01:00:00,1447.2
2020-01-01 02:00:00,1447.2
2020-01-01 03:00:00,1447.2
2020-01-01 04:00:00,1447.2
2020-01-01 05:00:00,1447.2
2020-01-01 06:00:00,1447.2
2020-01-01 07:00:00,1447.2
2020-01-01 08:00:00,1447.2
2020-01-01 09:00:00,1447.2
2020-01-01 10:00:00,1446.9479
2020-01-01 11:00:00,1445.6401
2020-01-01 12:00:00,1401.5435
2020-01-01 13:00:00,1402.4218
2020-01-01 14:00:00,1351.7336
2020-01-01 15:00:00,1168.1503
2020-01-01 16:00:00,982.2615
2020-01-01 17:00:00,817.8503
2020-01-01 18:00:00,562.3877
2020-01-01 19:00:00,573.5871
2020-01-01 20:00:00,560.1478
2020-01-01 21:00:00,557.9080
2020-01-01 22:00:00,571.3473
2020-01-01 23:00:00,593.5242

Calliope version

$ calliope --version
Version 0.6.10
@brynpickering brynpickering added has-workaround The issue describes a valid workaround until the primary issue is solved timeseries labels Aug 1, 2023
@brynpickering brynpickering added the v0.6 Version 0.6 label Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
has-workaround The issue describes a valid workaround until the primary issue is solved timeseries v0.6 Version 0.6
Projects
None yet
Development

No branches or pull requests

2 participants