Code Monkey home page Code Monkey logo

grid2viz's People

Contributors

bdonnot avatar camiloromers avatar marota avatar mjothy avatar tezirg avatar vinault avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

grid2viz's Issues

Not loading dataframe in scenario overview - inspector

Run the notebook GetGridGenLoadRenewables.ipynb from data_generator github
Then load the logs of the do-nothing agent in grid2viz
Select sceario 0 and look at section 'scenario overview'

The dataframe in the inspector is not displaying.
Here is the traceback

Traceback (most recent call last):
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1459, in dispatch
response.set_data(self.callback_map[output]"callback")
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1339, in add_context
output_value = func(*args, **kwargs) # %% callback invoked %%
File "/home/marotant/dev/grid2viz/grid2viz/src/overview/overview_clbk.py", line 132, in update_table
df = observation_model.init_table_inspection_data(episode)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/grid2kpi/episode/observation_model.py", line 81, in init_table_inspection_data
table["IsWorkingDay"] = table["timestamp"].dt.weekday < 5
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/generic.py", line 5270, in getattr
return object.getattribute(self, name)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/accessor.py", line 187, in get
accessor_obj = self._accessor(obj)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/indexes/accessors.py", line 338, in new
raise AttributeError("Can only use .dt accessor with datetimelike values")
AttributeError: Can only use .dt accessor with datetimelike values
127.0.0.1 - - [11/Mar/2020 09:11:21] "POST /_dash-update-component HTTP/1.1" 500 -
Exception on /_dash-update-component [POST]
Traceback (most recent call last):
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1459, in dispatch
response.set_data(self.callback_map[output]"callback")
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1339, in add_context
output_value = func(*args, **kwargs) # %% callback invoked %%
File "/home/marotant/dev/grid2viz/grid2viz/src/overview/overview_clbk.py", line 132, in update_table
df = observation_model.init_table_inspection_data(episode)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/grid2kpi/episode/observation_model.py", line 81, in init_table_inspection_data
table["IsWorkingDay"] = table["timestamp"].dt.weekday < 5
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/generic.py", line 5270, in getattr
return object.getattribute(self, name)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/accessor.py", line 187, in get
accessor_obj = self._accessor(obj)
File "/home/marotant/dev/grid2viz/venv_grid2viz/lib/python3.7/site-packages/pandas/core/indexes/accessors.py", line 338, in new
raise AttributeError("Can only use .dt accessor with datetimelike values")
AttributeError: Can only use .dt accessor with datetimelike values
127.0.0.1 - - [11/Mar/2020 09:11:21] "POST /_dash-update-component HTTP/1.1" 500 -

Grid2viz and Grid2Op=0.7.1 error: ModuleNotFoundError: No module named 'grid2op.Observation.CompleteObservation'; 'grid2op.Observation' is not a package

Hi,

I was able install grid2viz using the instructions on the github page. I was able to run the built-in data from grid2viz using launch_grid2viz.py. I was also able to run grid2viz on the scenarios generated by my user defined agent from grid2op (when grid2op=0.5.8). However, when I updated to grid2op =0.7.1 (using make_new to create environment), the scenarios generated by the grid2op runner are not able to be processed by grid2viz.

I am not sure if it is an error from my end or there is some issue. I am attaching the scenario that I generated below. Please let me know if it is because of grid2op=0.7.1 or you are able to visualize the attached data using grid2viz.

Data: Link to download the scenario data generated by grid2op=0.7.1 & make_new function

More information: Grid2op =0.7.1, my agent uses the environment generated by make_new. The synatx used is : env = make_new("l2rpn_case14_sandbox",reward_class=CombinedReward)

Chronics location that being used: C:\Users\kisha\data_grid2op\l2rpn_case14_sandbox\chronics
Grid location being used: C:\Users\kisha\data_grid2op\l2rpn_case14_sandbox\grid.json
Reward class that is being used: <class 'grid2op.Reward.CombinedReward.CombinedReward'>
Action type class being used: <class 'grid2op.Action.TopologyAndDispatchAction.TopologyAndDispatchAction'>
Observation type class being used: <class 'grid2op.Observation.CompleteObservation.CompleteObservation'>
Legal action class being used: <class 'grid2op.Rules.DefaultRules.DefaultRules'>
Voltage controller class being used: <class 'grid2op.VoltageControler.ControlVoltageFromFile.ControlVoltageFromFile'>

Full trace of error:

(grid2viz) C:\Users\kisha\Grid2Viz>py C:\Users\kisha\Grid2Viz\grid2viz\main.py --path D:\baseline_me\agents_log
 * Serving Flask app "C:\Users\kisha\Grid2Viz\grid2viz\index.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\pandapower\io_utils.py:8: FutureWarning:

pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.

the config file used is located at: C:\Users\kisha\Grid2Viz\config.ini
Agents ata used are located at: D:\baseline_me\agents_log
Data used are located at: D:\baseline_me\agents_log
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [29/Apr/2020 23:48:19] "�[37mGET / HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mGET /_dash-layout HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mGET /_dash-dependencies HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mPOST /_dash-update-component HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mPOST /_dash-update-component HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mPOST /_dash-update-component HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mPOST /_dash-update-component HTTP/1.1�[0m" 200 -
127.0.0.1 - - [29/Apr/2020 23:48:20] "�[37mPOST /_dash-update-component HTTP/1.1�[0m" 200 -
Exception on /_dash-update-component [POST]
Traceback (most recent call last):
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\dash\dash.py", line 1459, in dispatch
    response.set_data(self.callback_map[output]["callback"](*args))
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\dash\dash.py", line 1339, in add_context
    output_value = func(*args, **kwargs)  # %% callback invoked %%
  File "C:\Users\kisha\Grid2Viz\grid2viz\src\episodes\episodes_clbk.py", line 32, in load_scenario_cards
    best_agent_episode = make_episode(best_agents[scenario]['agent'], scenario)
  File "C:\Users\kisha\Grid2Viz\grid2viz\src\manager.py", line 49, in make_episode
    episode = compute_episode(episode_name, agent)
  File "C:\Users\kisha\Grid2Viz\grid2viz\src\manager.py", line 89, in compute_episode
    path, episode_name
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\grid2op\EpisodeData.py", line 176, in from_disk
    os.path.join(agent_path, EpisodeData.OBS_SPACE))
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\grid2op\Observation.py", line 1369, in from_dict
    tmp = SerializableSpace.from_dict(dict_)
  File "c:\users\kisha\miniconda3\envs\grid2viz\lib\site-packages\grid2op\Space.py", line 1494, in from_dict
    exec("from {} import {}".format(".".join(actionClass_li[:-1]), actionClass_li[-1]))
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'grid2op.Observation.CompleteObservation'; 'grid2op.Observation' is not a package
127.0.0.1 - - [29/Apr/2020 23:48:21] "�[35m�[1mPOST /_dash-update-component HTTP/1.1�[0m" 500 -
You pressed Ctrl+C! Shutting down Grid2Viz!

Demo not working after install

grid2op.Exceptions.Grid2OpException.Grid2OpException: Grid2OpException "EpisodeData file not found
[Errno 2] No such file or directory: '/Users/antoinemarot/dev/grid2viz/venv_grid2viz/lib/python3.6/site-packages/grid2viz/data/agents/do-nothing-baseline/000/agent_exec_times.npz'"

=> logs not found in installed package

Agent Overview -- Action repartion

Hello, I would like to report an issue regarding the actions distrubution histogram.

  • Using the default logs provided in grid2viz/data/agents, and default install pip3 install -r requirements.txt in a brand new virtualenv

  • Select Scenario0037

  • Navigate to Agent Overview

  • Notice the action taken at step 1 on power line 12_13_19:
    grid2viz-lineaction

This action will:
	 - NOT change anything to the injections
	 - NOT perform any redispatching action
	 - NOT force any line status
	 - switch status of 1 powerlines ([19])
	 - NOT switch anything in the topology
	 - NOT force any particular bus configuration
  • However, the line distribution histogram doesn't show any action for line 12_13_19:
    grid2viz-distrib

Command line not working on Windows

Hello,

When installing the repository on a Windows system and using the command line grid2viz, I get:

C:\Users\Loïc>grid2viz
Traceback (most recent call last):
  File "D:\Anaconda3\Lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "D:\Anaconda3\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Anaconda3\Scripts\grid2viz.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'grid2viz'

However, this still works when executing from the repository directory.
There may be an issue with Windows here.

More options to analyse the scenario

In the scenario overview, it is already very nice to see what the generators and loads are doing!
Right now, i need to add generators and loads into the visualization one by one. A button to add all available generators / loads would be a time saver.

Regarding the grid, i am missing a bit the option to analyse how the grid is doing during the time steps, e.g.:

  • seeing the line and transformer loadings (and optionally the absolute flows) of every timestep (analogous to the load plot)
  • having them maybe visualized on a grid scheme graphically so i can instantly notice where the issues are in the grid and what generators/loads are close by

This could be helpful to analyze the parts of a grid (especially later in the ieee118) where issues occur most often.

Action representation as a string

The action table of the Agent Overview view displays lines and subs names as opposed to the description of the action impact (below the table) that references ids.

Below the powerline with id 1 (see impact description below the table) has name 34_36_111.

This should probably be harmonized.

image

No result shows in the Browser

Hi
I installed the package and run the command in the windows terminal. There is a page popped out in my browser but results are not presented. You can see the blue menu bar but it is just empty below. I am using the agents_path and env in the original package. Any idea about what is wrong here?

import os
agent_dir = "XXX\Grid2op_learning\Grid2Viz\grid2viz\data\agents"
env_dir = "XXX\Grid2op_learning\Grid2Viz\grid2viz\data\env_conf"
comm="grid2viz --agents_path "+agent_dir+" --env_path "+env_dir+" --port 8050"
os.system(comm)

  • Serving Flask app "grid2viz.app" (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
  • Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
    127.0.0.1 - - [04/Jun/2020 10:30:17] "GET / HTTP/1.1" 200 -

Best agent is not always the one considered

The best agent is the agent that:

  1. survived the most timesteps
  2. has the best reward for the same amount of timesteps

=> 2) is not verified for some cases.
Exemples to come

Some issues in running Grid2viz

Dear Artelys,

A great visualization tool for Grid2op.
It works perfectly if my agent takes no action or splitting nodes.
The problem is if the agent takes the "reconnect power line" action the Grid2viz can not be compiled.
Here is an example. In chronic 0 time step 527, the agent takes the following actions to reconnect the broken line 5.
action_transf_dict = self.agent_action_space.reconnect_powerline(line_id=i,bus_or=1,bus_ex=1)
'''
This action will:
- NOT change anything to the injections
- NOT perform any redispatching action
- force reconnection of 1 powerlines ([5])
- NOT switch any line status
- NOT switch anything in the topology
- Set the bus of the following element:
- assign bus 1 to line (origin) 5 [on substation 11]
- assign bus 1 to line (extremity) 5 [on substation 12]
'''

After this action, line 5 is broken again medievally due to the thermal limit. And the environment modified action (env.env_modification) is
'''
This action will:

  • set load_p to [ 24.2 103.3 15.9 49.4 8. 12.6 33.2 10.2 4.2 6.8 14.5]
  • set prod_p to [83.7 81.6 39.1 0. 82.6]
  • set load_q to [16.8 72.7 11.3 34.2 5.7 8.7 23.3 7.2 2.9 4.9 10. ]
  • set prod_v to [142.1 142.1 0.2 12. 142.1]
  • NOT perform any redispatching action
  • NOT force any line status
  • NOT switch any line status
  • NOT switch anything in the topology
  • NOT force any particular bus configuration
    '''

Finally, it will result in the Grid2viz stuck at time step 527 timestep during compiling. And the error is
'''
99%|███████████████████████████████████████▋| 527/531 [00:01<00:00, 394.56it/s]
Exception on /_dash-update-component [POST]
Traceback (most recent call last):
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/dash/dash.py", line 1459, in dispatch
response.set_data(self.callback_map[output]"callback")
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/dash/dash.py", line 1339, in add_context
output_value = func(*args, **kwargs) # %% callback invoked %%
File "/home/jiajun/Desktop/grid2viz-master/grid2viz/src/episodes/episodes_clbk.py", line 32, in load_scenario_cards
best_agent_episode = make_episode(best_agents[scenario]['agent'], scenario)
File "/home/jiajun/Desktop/grid2viz-master/grid2viz/src/manager.py", line 49, in make_episode
episode = compute_episode(episode_name, agent)
File "/home/jiajun/Desktop/grid2viz-master/grid2viz/src/manager.py", line 90, in compute_episode
), episode_name, agent)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/grid2kpi/episode/EpisodeAnalytics.py", line 27, in init
self.load, self.production, self.rho, self.action_data_table, self.computed_reward, self.flow_and_voltage_line = self._make_df_from_data()
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/grid2kpi/episode/EpisodeAnalytics.py", line 192, in _make_df_from_data
production["timestamp"] = np.repeat(self.timestamps, self.n_prods)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 2938, in setitem
self._set_item(key, value)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 3000, in _set_item
value = self._sanitize_column(key, value)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 3636, in _sanitize_column
value = sanitize_index(value, self.index, copy=False)
File "/home/jiajun/anaconda3/lib/python3.6/site-packages/pandas/core/internals/construction.py", line 611, in sanitize_index
raise ValueError("Length of values does not match length of index")
ValueError: Length of values does not match length of index
'''

Could you please help us to fix this problem?

Thanks,
Jiajun

Reading data trouble

C:\Users\Ivana>grid2viz --agents_path=Desktop\path_agents
Using default environment at c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\data\env_conf
the config file used is located at: c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\config.ini
Agents data used is located at: C:\Users\Ivana\Desktop\path_agents
Environment used is located at: c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\data\env_conf

  • Serving Flask app "grid2viz.app" (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
  • Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
    127.0.0.1 - - [02/Jun/2020 11:20:51] "GET /episodes HTTP/1.1" 200 -
    127.0.0.1 - - [02/Jun/2020 11:20:52] "GET /_dash-layout HTTP/1.1" 200 -
    127.0.0.1 - - [02/Jun/2020 11:20:52] "GET /_dash-dependencies HTTP/1.1" 200 -
    127.0.0.1 - - [02/Jun/2020 11:20:52] "GET /_favicon.ico?v=1.12.0 HTTP/1.1" 200 -
    127.0.0.1 - - [02/Jun/2020 11:20:52] "POST /_dash-update-component HTTP/1.1" 200 -
    127.0.0.1 - - [02/Jun/2020 11:20:52] "POST /_dash-update-component HTTP/1.1" 200 -
    computing df
    Environment
    0%| | 0/30 [00:00<?, ?it/s]
    Exception on /_dash-update-component [POST]
    Traceback (most recent call last):
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask\app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask_compat.py", line 39, in reraise
    raise value
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functionsrule.endpoint
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\dash\dash.py", line 1032, in dispatch
    response.set_data(func(*args, outputs_list=outputs_list))
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\dash\dash.py", line 967, in add_context
    output_value = func(*args, **kwargs) # %% callback invoked %%
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\episodes\episodes_clbk.py", line 34, in load_scenario_cards
    best_agent_episode = make_episode(best_agents[scenario]['agent'], scenario)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\manager.py", line 49, in make_episode
    episode = compute_episode(episode_name, agent)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\manager.py", line 90, in compute_episode
    episode_analytics = EpisodeAnalytics(episode_data, episode_name, agent)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\kpi\EpisodeAnalytics.py", line 24, in init
    self.load, self.production, self.rho, self.action_data_table, self.computed_reward, self.flow_and_voltage_line = self._make_df_from_data(episode_data)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\kpi\EpisodeAnalytics.py", line 103, in _make_df_from_data
    time_stamp = self.timestamp(obs)
    File "c:\users\ivana\appdata\local\programs\python\python38-32\lib\site-packages\grid2viz\src\kpi\EpisodeAnalytics.py", line 42, in timestamp
    return dt.datetime(obs.year[0], obs.month[0], obs.day[0], obs.hour_of_day[0],
    IndexError: invalid index to scalar variable.

Properly counting topological actions

In the current implementation, the count of actions for topology was not yet accurate in Agent Overview table and Histogram.

The methods impact_on and effect_on should be used in their latest version to distinguish when the action was actually intended to modify the status of a line or the topology of a substation

Bug: non-empty timesteps list in agent overview when changing scenarios

After studying a scenario and some timesteps, the list of selected timesteps in agent overview remains non empty when switching scenario. With this new scenario with different dates (during which the previously selected timesteps do not exist), if not careful to empty manually the list, it will create a bug when going to agent study
image
On this example, 8 and 9 of April do not exist for this new scenario in April

Revise Tab Explanation Interaction

Beta-testers argued that pop-ups with explanation are a bit frustrating when going from one tab to another.
They suggest to:

  • have the explanation text at the top of the Tab page before any data (so that you see it but it is not stopping the navigation, and disappear when you scroll down)
  • keep the pop ups when asking for Help

Agent Overview -- Action details pagination

Hello, I would like to report the following behavior:

  • Using the default logs provided in grid2viz/data/agents, and default install pip3 install -r requirements.txt in a brand new virtualenv

  • Select Scenario0037

  • Navigate to Agent Overview

  • Click on line 1, page 1/375 of the spreadsheet like section:
    grid2viz-page1

  • Go to page 3, click on line 1 of the section and notice that the action from page 1 is displayed:
    grid2viz-page3

  • Go to page 73, click on line 1, notice that action the action from page 1 is still displayed:
    grid2viz-page73

I believe this is just a small pagination error, where the action details are retrieved using (row index) instead of (row index, page).

The tool is great!
I hope you can solve this issue, thank you!

Reward graph ending even though there is game over

Suppose we have an agent that succeeded to finish the scenario (DoNothing here) and another one that failed (TopologyGreedy here).
When studying the successful agent, there is no problem with the graph:
grid
Then, studying the agent that failed, we can see that the graph ends sooner because of the game over, which is normal:
grid2
But then, going back to the successful agent, the graph still ends at the time when the other agent encountered a game over, even though it is not plotted here:
grid3

Data used:
"rte_case14_realistic" environment
scenario 000 (the first one)
max_iter : 300
agents: DoNothing and TopologyGreedy

This can be reproduced with:

import os
import grid2op
from grid2op.Runner import Runner
from grid2op.Agent import DoNothingAgent, TopologyGreedy
import shutil

path_agents = 'agent_logs'
max_iter = 300
env = grid2op.make('rte_case14_realistic')

for agentClass, agentName in zip([DoNothingAgent, TopologyGreedy],
                                 ["DoNothingAgent", "TopologyGreedy"]):
    path_this_agent = os.path.join(path_agents, agentName)
    shutil.rmtree(os.path.abspath(path_this_agent), ignore_errors=True)
    runner = Runner(**env.get_params_for_runner(),
                    agentClass=agentClass
                    )
    res = runner.run(path_save=path_this_agent, nb_episode=1, 
                     max_iter=max_iter)
    print("The results for the {} agent are:".format(agentName))
    for _, chron_id, cum_reward, nb_time_step, max_ts in res:
        msg_tmp = "\tFor chronics with id {}\n".format(chron_id)
        msg_tmp += "\t\t - cumulative reward: {:.6f}\n".format(cum_reward)
        msg_tmp += "\t\t - number of time steps completed: {:.0f} / {:.0f}".format(nb_time_step, max_ts)
        print(msg_tmp)

grid2op version: 0.9.1.post1

System specifications:
System edition: Windows 10 Family
System version: 18362.836
Processor: Intel(R) Core(TM) i7-6700HQ CPU @2.60GHz 2.59GHz
RAM memory: 16,0 Go
Product ID: 00325-95800-00000-AAOEM
System type: 64 bits operating system, x64 processor

Table at the bottom of Scenario Overview is empty

The table at the bottom of Scenario Overview, supposed to contain scenario time steps, appears to be empty :
grid
Even though the dates are correct:
grid2

Data used:
"rte_case14_realistic" environment
scenario 000 (the first one)
max_iter : 300
agents: DoNothing and TopologyGreedy

This can be reproduced with:

import os
import grid2op
from grid2op.Runner import Runner
from grid2op.Agent import DoNothingAgent, TopologyGreedy
import shutil

path_agents = 'agent_logs'
max_iter = 300
env = grid2op.make('rte_case14_realistic')

for agentClass, agentName in zip([DoNothingAgent, TopologyGreedy],
                                 ["DoNothingAgent", "TopologyGreedy"]):
    path_this_agent = os.path.join(path_agents, agentName)
    shutil.rmtree(os.path.abspath(path_this_agent), ignore_errors=True)
    runner = Runner(**env.get_params_for_runner(),
                    agentClass=agentClass
                    )
    res = runner.run(path_save=path_this_agent, nb_episode=1, 
                     max_iter=max_iter)
    print("The results for the {} agent are:".format(agentName))
    for _, chron_id, cum_reward, nb_time_step, max_ts in res:
        msg_tmp = "\tFor chronics with id {}\n".format(chron_id)
        msg_tmp += "\t\t - cumulative reward: {:.6f}\n".format(cum_reward)
        msg_tmp += "\t\t - number of time steps completed: {:.0f} / {:.0f}".format(nb_time_step, max_ts)
        print(msg_tmp)

grid2op version: 0.9.1.post1

System specifications:
System edition: Windows 10 Family
System version: 18362.836
Processor: Intel(R) Core(TM) i7-6700HQ CPU @2.60GHz 2.59GHz
RAM memory: 16,0 Go
Product ID: 00325-95800-00000-AAOEM
System type: 64 bits operating system, x64 processor

Readme issue

Hello,

Some new modifications has been done to integrate a "command line interface" with grid2viz. But i think the "readme" does not mention this function, which requires, I think, less manual settings than the historic way.

Would it be possible to reflect these changes in the readme ?

Also, the image of the application displayed (especially for the layout of the grid) should be redone with the proper layout of the graph i think. It's hard to see the application has this capability with the image displayed.

Benjamin

Reward graph is always the same for 2 agents while score are different

In Agent Overview, the reward graph between 2 agent always look identical (except when a time of game over is mentioned). It is weird as it should differ at least sometimes.
For instance in the attached agents, the two have different scores overall on scenario jun14_2

image

image

Is the reward curve for each agent properly displayed ?

This might be a resolution problem has we cannot really zoom in very accurately. See proposal of ploting instant & cumulated reward on 2 different plots #50 (comment)

Agent Overview / Agent Study not enabled

Having loaded my individual scenario, i can click on it on the scenario selection. Then i'm guided to the scenario overview. My agent is now set as the ref. agent, i guess because no other agents exist.

Clicking in either Agent Overview or Agent Study will result in nothing happening. There are some exceptions thrown, for example if i click Agent Overview:

Exception on /_dash-update-component [POST]
Traceback (most recent call last):
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/grid2op/EpisodeData.py", line 155, in from_disk
with open(os.path.join(episode_path, EpisodeData.PARAMS)) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/data/agents/nodisc_powerlinegreedy/000/_parameters.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1459, in dispatch
response.set_data(self.callback_map[output]"callback")
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/dash/dash.py", line 1339, in add_context
output_value = func(*args, **kwargs) # %% callback invoked %%
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/index.py", line 135, in display_page
return macro.layout(timestamps, scenario, study_agent), "macro"
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/src/macro/macro_lyt.py", line 261, in layout
indicator_line(scenario, study_agent),
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/src/macro/macro_lyt.py", line 19, in indicator_line
episode = make_episode(study_agent, scenario)
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/src/manager.py", line 49, in make_episode
episode = compute_episode(episode_name, agent)
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/src/manager.py", line 89, in compute_episode
path, episode_name
File "/home/jmenke/Documents/PythonProjects/Grid2Viz/venv_grid2viz/lib/python3.7/site-packages/grid2op/EpisodeData.py", line 173, in from_disk
raise Grid2OpException(f"EpisodeData file not found \n {str(ex)}")
grid2op.Exceptions.Grid2OpException: Grid2OpException "EpisodeData file not found
[Errno 2] No such file or directory: '/home/jmenke/Documents/PythonProjects/Grid2Viz/grid2viz/data/agents/nodisc_powerlinegreedy/000/_parameters.json'"
127.0.0.1 - - [01/Apr/2020 09:22:53] "POST /_dash-update-component HTTP/1.1" 500 -

Is the nodisc_powerlinegreedy a static value in the code? My agent's logs are in another folder

Add Text Directions for user in each tab

In the blue navbar, we could add some short instructions for the user to guide him in its navigation.

  1. " Choose a scenario - click "Open" to study it"
  2. " Next, continue to Agent Overview"
  3. " Select Timesteps and go to Agent Study "
  4. We already have the timestep dropdown list - no need for text for now

image

Saving space when saving cache?

There is about a factor 10 size reduction when zipping cache folder.
It might be useful to compress dill files to save some disk space if not slowing down too much the cache loading process

Bug when selecting a scenario (because of matplotlib plots ?)

When launching grid2viz (on the demo dataset for example) and selecting a scenario, an error occur on MacOs.

"Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!"

Probably related to the matplotblib plot in the Scenario overview and related to that matplotlib/matplotlib#14304

"If you are running a webserver and using it to save Matplotlib make sure to set the backend to a non-interactive one (matplotlib.use('agg') or matplotlib.pyplot.switch_backend('Agg')) so that your server does not try to create (and then destroy) GUI windows that will never be seen (or if they are will be more of a nuisance)."

"Agent Study" not showing

Grid2viz fails to switch from the "Agent Overview" page to the "Agent Study" page.

This occurs with the following traceback:

Traceback (most recent call last):
  File "D:\Anaconda3\Lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "D:\Anaconda3\Lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "D:\Anaconda3\Lib\site-packages\flask\app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "D:\Anaconda3\Lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "D:\Anaconda3\Lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "D:\Anaconda3\Lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "D:\Anaconda3\Lib\site-packages\dash\dash.py", line 1032, in dispatch
    response.set_data(func(*args, outputs_list=outputs_list))
  File "D:\Anaconda3\Lib\site-packages\dash\dash.py", line 967, in add_context
    output_value = func(*args, **kwargs)  # %% callback invoked %%
File "D:\Anaconda3\Lib\site-packages\Grid2Viz\grid2viz\app.py", line 150, in register_page_lyt
    return micro.layout(user_selected_timestamp, study_agent, ref_agent, scenario), "micro"
  File "D:\Anaconda3\Lib\site-packages\Grid2Viz\grid2viz\src\micro\micro_lyt.py", line 247, in layout
    network_graph = make_network(new_episode).get_plot_observation(new_episode.observations[center_indx])
  File "D:\Anaconda3\Lib\site-packages\Grid2Viz\grid2viz\src\manager.py", line 26, in make_network
    substation_layout=network_layout, observation_space=episode.observation_space)
  File "d:\scripts_python\grid2op\grid2op\Plot\PlotPlotly.py", line 239, in __init__
    bus_radius=bus_radius)
  File "d:\scripts_python\grid2op\grid2op\Plot\BasePlot.py", line 64, in __init__
    "Your layout is invalid".format(len(substation_layout), observation_space.n_sub))
grid2op.Exceptions.PlotExceptions.PlotError: Grid2OpException PlotError "You provided a layout with 0 elements while there are 14 substations on the powergrid. Your layout is invalid"127.0.0.1 - - [22/May/2020 13:33:02] "
POST /_dash-update-component HTTP/1.1" 200 -
127.0.0.1 - - [22/May/2020 13:33:02] "POST /_dash-update-component HTTP/1.1" 500 -

Data used:
"rte_case14_realistic" environment
scenario 000 (the first one)
max_iter : 300
agents: DoNothing and TopologyGreedy

This can be reproduced with:

import os
import grid2op
from grid2op.Runner import Runner
from grid2op.Agent import DoNothingAgent, TopologyGreedy
import shutil

path_agents = 'agent_logs'
max_iter = 300
env = grid2op.make('rte_case14_realistic')

for agentClass, agentName in zip([DoNothingAgent, TopologyGreedy],
                                 ["DoNothingAgent", "TopologyGreedy"]):
    path_this_agent = os.path.join(path_agents, agentName)
    shutil.rmtree(os.path.abspath(path_this_agent), ignore_errors=True)
    runner = Runner(**env.get_params_for_runner(),
                    agentClass=agentClass
                    )
    res = runner.run(path_save=path_this_agent, nb_episode=1, 
                     max_iter=max_iter)
    print("The results for the {} agent are:".format(agentName))
    for _, chron_id, cum_reward, nb_time_step, max_ts in res:
        msg_tmp = "\tFor chronics with id {}\n".format(chron_id)
        msg_tmp += "\t\t - cumulative reward: {:.6f}\n".format(cum_reward)
        msg_tmp += "\t\t - number of time steps completed: {:.0f} / {:.0f}".format(nb_time_step, max_ts)
        print(msg_tmp)

grid2op version: 0.9.1.post1

System specifications:
System edition: Windows 10 Family
System version: 18362.836
Processor: Intel(R) Core(TM) i7-6700HQ CPU @2.60GHz 2.59GHz
RAM memory: 16,0 Go
Product ID: 00325-95800-00000-AAOEM
System type: 64 bits operating system, x64 processor

Enable select "all" when looking at time series plot

As of today, for each time-serie plot, there is the option to select one-by-one the time-serie we'd like to see.

But most often we'd like to start by looking at all of them. To do that, we have to click n times for now. We would like to do it with only one click.

Adding a grid plot on scenario overview with basic info

On scenario overview, having a layout of the grid and knowing where productions and loads are, what type they are, with possibly their max value in the scenario, could be quite informative.

This could be a different "onglet" with the load curve: you could either see the load curve or the grid plot

Scenarios mismatch

Hello, I have troubles inspecting some logs produced using grid2op.Runner. This happens when the runner doesn't use the same set of scenarios (picked at random) between two runs.

Here is a test case so you can reproduce the error:

  • Using the default logs provided in grid2viz/data/agents, and default install pip3 install -r requirements.txt in a brand new virtualenv

  • Import new logs generated by grid2op.Runner / Run the following from root

cp -rf  ./grid2viz/data/agents/nodisc_powerlinegreedy/ ./grid2viz/data/agents/same_agent_different_run
mv  ./grid2viz/data/agents/same_agent_different_run/0037/ ./grid2viz/data/agents/same_agent_different_run/0038
  • Start grid2viz
  • Observe that Scenario0038 has only one agent in ScenarioSelection
    grid2viz-scenario0038
  • Navigate to ScenarioOverview / Open Scenario0038
  • Select same_agent_different_run in the drop down list
    grdi2vis-scenario0038overview
  • Navigate to AgentOverview
  • The error happens here, where grid2viz fails to load Scenario0038 from nodisc_powerlinegreedy
Exception on /_dash-update-component [POST]
Traceback (most recent call last):
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/grid2op/EpisodeData.py", line 155, in from_disk
    with open(os.path.join(episode_path, EpisodeData.PARAMS)) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/tezirg/Code/grid2viz.mjothy/grid2viz/data/agents/nodisc_powerlinegreedy/0038/_parameters.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/dash/dash.py", line 1459, in dispatch
    response.set_data(self.callback_map[output]["callback"](*args))
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/dash/dash.py", line 1339, in add_context
    output_value = func(*args, **kwargs)  # %% callback invoked %%
  File "/home/tezirg/Code/grid2viz.mjothy/grid2viz/index.py", line 135, in display_page
    return macro.layout(timestamps, scenario, study_agent), "macro"
  File "/home/tezirg/Code/grid2viz.mjothy/grid2viz/src/macro/macro_lyt.py", line 261, in layout
    indicator_line(scenario, study_agent),
  File "/home/tezirg/Code/grid2viz.mjothy/grid2viz/src/macro/macro_lyt.py", line 19, in indicator_line
    episode = make_episode(study_agent, scenario)
  File "/home/tezirg/Code/grid2viz.mjothy/grid2viz/src/manager.py", line 49, in make_episode
    episode = compute_episode(episode_name, agent)
  File "/home/tezirg/Code/grid2viz.mjothy/grid2viz/src/manager.py", line 89, in compute_episode
    path, episode_name
  File "/home/tezirg/Code/grid2viz.mjothy/venv_grid2viz/lib/python3.6/site-packages/grid2op/EpisodeData.py", line 173, in from_disk
    raise Grid2OpException(f"EpisodeData file not found \n {str(ex)}")
grid2op.Exceptions.Grid2OpException: Grid2OpException "EpisodeData file not found 
 [Errno 2] No such file or directory: '/home/tezirg/Code/grid2viz.mjothy/grid2viz/data/agents/nodisc_powerlinegreedy/0038/_parameters.json'"

Enhancement: when working with a subgrid, load profile can look a bit weird

When the grid is in fact a subgrid with interconnections to other grids, the Import/Export are considered as loads. When accounting for them, this gives sometime a strange Load Profile.
Il would be better to distinguish Import/Export from Grid Load. For that, it might be better to rely on a grid2Op concept of interconnection, not yet implemented.

image
Example of a weird Load profile for a month of february

Selecting timestamps at the time axis extremity - bug

In agent overview, when selecting a timestep to study at the beginning of the scenario or at the end, we can run into a timestamp that does not fit the expected format, and create a bug:
'time data '2012-02-23' does not match format '%Y-%m-%d %H:%M'

See the timestamp list in the screenshot
Capture d’écran 2020-07-02 à 11 40 26

Synchronisation Graph "Agent Overview" / Overview

Choosing:

  • scenario 0037
  • Ref Agent:nodisc_powerlinegreedy
  • Studied Agent:withdisc_deter

There is a problem with the synchronisation of plotly graphs in Agent Overview section, Overview subsection:

  • reward graph and action graph are on the same timescale, but not maintenance and overflow graphs from the start
  • If you zoom in on the reward graph, maintenance and overflow graphs don't display well
  • if you zoom in on the overflow graph, the maintenance graph is not synchronized

uupdate the call to "flask"

Hello, in the "main" file the command "flask" is called, but on some machine, especially when working on a computer where the python package is installed in the "user" environment, and not globally (because you don't have proper access rights for example) the command "flask" might not be found, though the "flask" package is installed properly. This will lead to this error:

/usr/lib/python3.6/runpy.py:125: RuntimeWarning: 'grid2viz.main' found in sys.modules after import of package 'grid2viz', but prior to execution of 'grid2viz.main'; this may result in unpredictable behaviour
  warn(RuntimeWarning(msg))
INFO Using the default provided environment
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/benjamin/.local/lib/python3.6/site-packages/grid2viz/main.py", line 56, in <module>
    main(args)
  File "/home/benjamin/.local/lib/python3.6/site-packages/grid2viz/main.py", line 43, in main
    proc = subprocess.Popen(my_cmd, env=my_env)
  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'flask': 'flask'

To fix that, i think updating the call to "sys.executable -m flask" instead of simply "flask" will solve this issue.

Add troubleshooting section in Readme

Hello,

Some Mac users have been experimenting troubles when launching the app. It would be useful to add in the readme a troubleshooting sector with this case and probably more reported by other users.

Particularly and for other Mac users, the message received when laughing the app s the following:

socket.gaierror: [Errno 8] nodename nor servname provided, or not known

In order to overcome the issue, users have to update the file located at /etc/hosts with the following formation:

127.0.0.1 value_get_after_print_$HOST_in_the_terminal

For instance:
127.0.0.1 x86_64-apple-darwin.....

source:
https://stackoverflow.com/questions/39970606/gaierror-errno-8-nodename-nor-servname-provided-or-not-known-with-macos-sie

New Feature: display Hazards

In addition to overflows and maintenance, we should display number of hazards.
Useful especially for NeurIPS track 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.