In [1]:
# Reload when code changed:
%load_ext autoreload
%autoreload 2
%pwd
import os 
import sys
path = "../"
sys.path.append(path)
#os.path.abspath("../")
print(os.path.abspath(path))


D:\github\ekostat_calculator

In [2]:
import pandas as pd
import numpy as np
import json
import timeit

import core
import importlib
importlib.reload(core)
import logging
importlib.reload(core) 
try:
    logging.shutdown()
    importlib.reload(logging)
except:
    pass
from event_handler import EventHandler
print(core.__file__)
pd.__version__


..\core\__init__.py
Out[2]:
'0.19.2'

Load directories


In [3]:
root_directory = "../" #os.getcwd()
workspace_directory = root_directory + '/workspaces' 
resource_directory = root_directory + '/resources'
alias = 'lena'
user_id = 'test_user' #kanske ska vara off_line user?
workspace_alias = 'lena_indicator'

Initiate EventHandler


In [99]:
ekos = EventHandler(root_directory)


2018-04-27 16:26:28,096	event_handler.py	64	__init__	DEBUG	Start EventHandler: event_handler
2018-04-27 16:26:28,099	event_handler.py	65	__init__	DEBUG	
2018-04-27 16:26:28,102	event_handler.py	66	__init__	INFO	TEST info logger
2018-04-27 16:26:28,136	event_handler.py	67	__init__	WARNING	TEST warning logger
2018-04-27 16:26:28,136	event_handler.py	68	__init__	ERROR	TEST error logger
2018-04-27 16:26:28,136	event_handler.py	69	__init__	DEBUG	TEST debug logger
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
dict_keys(['main_event_handler', 'subset_30062c90-2a60-4ee1-9944-f00329db1174', 'subset_default_subset', 'workspace_147f5d47-773c-43f0-b337-57208718d0cf'])
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
event_handler _ main_event_handler

Load existing workspace


In [100]:
ekos.load_workspace(user_id, alias = workspace_alias)
# Här får jag ofta felmeddelande:
# AttributeError: module 'core' has no attribute 'ParameterMapping'


2018-04-27 16:26:35,883	event_handler.py	1492	load_workspace	DEBUG	Trying to load workspace "147f5d47-773c-43f0-b337-57208718d0cf" with alias "lena_indicator"
====================================================================================================
Initiating WorkSpace: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf
Parent directory is: ..//workspaces
Resource directory is: ..//resources
=== 30062c90-2a60-4ee1-9944-f00329db1174
status ['editable', 'readable', 'deleted']
!!! A
!!! 30062c90-2a60-4ee1-9944-f00329db1174
!!! ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets
----------------------------------------------------------------------------------------------------
Initiating Subset: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/30062c90-2a60-4ee1-9944-f00329db1174
===
..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/30062c90-2a60-4ee1-9944-f00329db1174
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/30062c90-2a60-4ee1-9944-f00329db1174/step_1
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/30062c90-2a60-4ee1-9944-f00329db1174/step_2
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/30062c90-2a60-4ee1-9944-f00329db1174/step_3
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
dict_keys(['main_event_handler', 'subset_30062c90-2a60-4ee1-9944-f00329db1174', 'subset_default_subset', 'workspace_147f5d47-773c-43f0-b337-57208718d0cf'])
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
30062c90-2a60-4ee1-9944-f00329db1174 _ main_event_handler
30062c90-2a60-4ee1-9944-f00329db1174 _ subset_30062c90-2a60-4ee1-9944-f00329db1174
=== default_subset
!!! default_subset
!!! default_subset
!!! ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets
----------------------------------------------------------------------------------------------------
Initiating Subset: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/default_subset
===
..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/default_subset
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/default_subset/step_1
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/default_subset/step_2
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/subsets/default_subset/step_3
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
dict_keys(['main_event_handler', 'subset_30062c90-2a60-4ee1-9944-f00329db1174', 'subset_default_subset', 'workspace_147f5d47-773c-43f0-b337-57208718d0cf'])
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
default_subset _ main_event_handler
default_subset _ subset_30062c90-2a60-4ee1-9944-f00329db1174
default_subset _ subset_default_subset
load_water_body_station_filter
Initiating WorkStep: ..//workspaces/147f5d47-773c-43f0-b337-57208718d0cf/step_0
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
dict_keys(['main_event_handler', 'subset_30062c90-2a60-4ee1-9944-f00329db1174', 'subset_default_subset', 'workspace_147f5d47-773c-43f0-b337-57208718d0cf'])
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
147f5d47-773c-43f0-b337-57208718d0cf _ main_event_handler
147f5d47-773c-43f0-b337-57208718d0cf _ subset_30062c90-2a60-4ee1-9944-f00329db1174
147f5d47-773c-43f0-b337-57208718d0cf _ subset_default_subset
147f5d47-773c-43f0-b337-57208718d0cf _ workspace_147f5d47-773c-43f0-b337-57208718d0cf
Out[100]:
True

In [101]:
workspace_uuid = ekos.get_unique_id_for_alias(user_id, workspace_alias)
print(workspace_uuid)


147f5d47-773c-43f0-b337-57208718d0cf

In [102]:
#ekos.import_default_data(user_id, workspace_alias = workspace_alias, force = True)

Load all data in workspace


In [103]:
#ekos.get_workspace(user_id, unique_id = workspace_uuid, alias = workspace_alias).delete_alldata_export()

In [104]:
#%%timeit
ekos.load_data(user_id = user_id, unique_id = workspace_uuid)
w = ekos.get_workspace(user_id, unique_id = workspace_uuid, alias = workspace_alias)
len(w.data_handler.get_all_column_data_df())


2018-04-27 16:26:41,796	workspaces.py	1607	load_all_data	DEBUG	Data has been loaded from existing all_data.pickle file.
2018-04-27 16:26:41,812	event_handler.py	927	get_workspace	DEBUG	Getting workspace "147f5d47-773c-43f0-b337-57208718d0cf" with alias "lena_indicator"
Out[104]:
106094

Step 0

Apply first data filter


In [105]:
w.apply_data_filter(step = 0) # This sets the first level of data filter in the IndexHandler

Step 1 Set subset filter


In [106]:
subset_uuid = ekos.get_unique_id_for_alias(user_id, workspace_alias = workspace_alias, subset_alias = 'A')
print(w.get_subset_list())

f1 = w.get_data_filter_object(subset = subset_uuid, step=1) 
print(f1.include_list_filter)

w.apply_data_filter(subset = subset_uuid, step = 1)

df_step1 = w.get_filtered_data(step = 1, subset = subset_uuid)
print(df_step1.columns)
#df_step1[['SDATE', 'YEAR', 'MONTH', 'POSITION', 'VISS_EU_CD', 'WATER_TYPE_AREA', 'DEPH', 'MNDEP', 'MXDEP','BQIm']].dropna(subset = ['BQIm'])


2018-04-27 16:26:46,282	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_1
['30062c90-2a60-4ee1-9944-f00329db1174', 'default_subset']
{'MYEAR': ['2013', '2014', '2015', '2016', '2017', '2018', '2019'], 'STATN': [], 'WATER_BODY': []}
Index(['AMON', 'BIOV_CONC_ALL', 'BQIm', 'CPHL_BTL', 'CPHL_INTEG', 'DEPH',
       'DIN', 'DOXY_BTL', 'DOXY_CTD', 'LATIT_DD', 'LONGI_DD', 'MNDEP', 'MXDEP',
       'MYEAR', 'NTOT', 'NTRA', 'NTRI', 'NTRZ', 'PHOS', 'PTOT', 'Q_AMON',
       'Q_BIOV_CONC_ALL', 'Q_BQIm', 'Q_CPHL_BTL', 'Q_CPHL_INTEG', 'Q_DOXY_BTL',
       'Q_DOXY_CTD', 'Q_NTOT', 'Q_NTRA', 'Q_NTRI', 'Q_NTRZ', 'Q_PHOS',
       'Q_PTOT', 'Q_SALT_BTL', 'Q_SALT_CTD', 'Q_SECCHI', 'Q_TEMP_BTL',
       'Q_TEMP_CTD', 'SALT_BTL', 'SALT_CTD', 'SDATE', 'SEA_BASIN', 'SECCHI',
       'SERNO', 'SHARKID_MD5', 'SHIPC', 'STATN', 'STIME', 'TEMP_BTL',
       'TEMP_CTD', 'VISS_EU_CD', 'WATER_BODY_NAME', 'WATER_DISTRICT',
       'WATER_TYPE_AREA', 'WLTYP', 'origin_dtype', 'origin_file_path', 'MONTH',
       'YEAR', 'POSITION', 'visit_id_str', 'SALT', 'Q_SALT', 'source_SALT',
       'TEMP', 'Q_TEMP', 'source_TEMP', 'DOXY', 'Q_DOXY', 'source_DOXY',
       'CPHL_INTEG_CALC', 'CPHL_INTEG_CALC_depths', 'CPHL_INTEG_CALC_values'],
      dtype='object')

Step 2


In [107]:
w.get_step_object(step = 2, subset = subset_uuid)._indicator_setting_files['oxygen']


Out[107]:
<core.filters.SettingsFile at 0xb2bcfd0>

In [108]:
indicator_list = w.get_available_indicators(subset= 'A', step=2)


2018-04-27 16:26:49,832	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:49,986	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
subset A
subset A
2018-04-27 16:26:50,119	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:50,319	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
subset A
subset A
2018-04-27 16:26:50,469	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:50,606	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
subset A
subset A
2018-04-27 16:26:50,769	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:50,904	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
subset A
subset A
2018-04-27 16:26:51,068	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:51,222	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
"['TOT_COVER_ALL'] not in index"
subset A
subset A
2018-04-27 16:26:51,436	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:26:51,610	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
subset A
subset A

Apply indicator filter


In [109]:
wb_list = df_step1.VISS_EU_CD.unique()
print('number of waterbodies in step 1: {}'.format(len(wb_list)))
typeA_list = [row.split('-')[0].strip().lstrip('0') for row in df_step1.WATER_TYPE_AREA.unique()]
print('number of type areas in step 1: {}'.format(len(typeA_list)))


number of waterbodies in step 1: 310
number of type areas in step 1: 27

In [110]:
#list(zip(typeA_list, df_step1.WATER_TYPE_AREA.unique()))
indicator_list = ['oxygen']#,'bqi','din_winter','ntot_summer', 'ntot_winter', 'dip_winter', 'ptot_summer', 'ptot_winter', 'biov', 'chl', 'secchi']
for indicator in indicator_list:
    w.apply_indicator_data_filter(step = 2, 
                          subset = subset_uuid, 
                          indicator = indicator)


2018-04-27 16:26:55,308	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
Water body SE584340-174401
Water body SE581700-113000
Water body SE561400-161201
Water body SE654470-222700
Water body SE633000-195000
Water body SE625180-181655
Water body SE654820-222660
Water body SE625000-180075
Water body SE628750-183300
Water body SE631346-184241
Water body SE631646-185280
Water body SE583730-164501
Water body SE582705-163350
Water body SE582050-165820
Water body SE582147-111771
Water body SE580688-114860
Water body SE575500-113750
Water body SE574050-114780
Water body SE625900-174360
Water body SE630383-183500
Water body SE633550-200700
Water body SE636570-203590
Water body SE633043-193300
Water body SE552170-130626
Water body SE562000-123800
Water body SE591400-183200
Water body SE591200-183600
Water body SE592040-184000
Water body SE592245-184400
Water body SE600740-183460
Water body SE601070-182870
Water body SE631610-184500
Water body SE625500-175153
Water body SE622126-172430
Water body SE622339-172190
Water body SE652920-222650
Water body SE656620-222480
Water body SE656300-222750
Water body SE655120-220380
Water body SE655180-218660
Water body SE636150-199220
Water body SE635040-204196
Water body SE637070-204260
Water body SE636910-204040
Water body SE602120-181610
Water body SE582000-115270
Water body SE575700-114240
Water body SE581740-114820
Water body SE563330-124600
Water body SE654860-219880
Water body SE647050-213980
Water body SE575340-113000
Water body SE654500-232000
Water body SE652400-223501
Water body SE653900-223280
Water body SE582000-112350
Water body SE581260-113220
Water body SE574000-114230
Water body SE585100-110600
Water body SE572540-114801
Water body SE555545-124332
Water body SE561005-150250
Water body SE580610-113615
Water body SE580325-113500
Water body SE580500-114725
Water body SE581120-112680
Water body SE581365-112910
Water body SE584750-111185
Water body SE584890-110950
Water body SE582630-113515
Water body SE584450-111445
Water body SE584670-111300
Water body SE582150-112530
Water body SE585600-110880
Water body SE585200-111140
Water body SE583710-111535
Water body SE582665-111706
Water body SE582850-111760
Water body SE584030-111400
Water body SE581853-112736
Water body SE582230-112255
Water body SE573500-115150
Water body SE571000-184001
Water body SE585990-111125
Water body SE570000-120701
Water body SE582700-110451
Water body SE584200-105901
Water body SE554040-125750
Water body SE554500-125001
Water body SE575150-162700
Water body SE575370-164220
Water body SE573940-163560
Water body SE565400-163600
Water body SE570080-163430
Water body SE565800-163000
Water body SE570340-163710
Water body SE570500-163750
Water body SE573500-163500
Water body SE563825-161810
Water body SE564250-162500
Water body SE659024-162417
Water body SE572205-163500
Water body SE571552-162848
Water body SE572500-164500
Water body SE583718-161687
Water body SE583926-161744
Water body SE583000-165600
Water body SE560940-151740
Water body SE560500-154880
Water body SE560810-153980
Water body SE560780-153500
Water body SE560795-154730
Water body SE560775-153055
Water body SE560700-155801
Water body SE582460-164500
Water body SE581520-165000
Water body SE560825-144215
Water body SE621688-144133
Water body SE560900-145280
Water body SE560205-143545
Water body SE581000-164020
Water body SE580585-164720
Water body SE580735-165296
Water body SE580000-164060
Water body SE554800-142001
Water body SE562450-122751
Water body SE602400-183190
Water body SE603870-181301
Water body SE601300-182880
Water body SE603190-174000
Water body SE601660-183550
Water body SE594100-185690
Water body SE593750-184900
Water body SE593820-185500
Water body SE593300-183600
Water body SE592420-182210
Water body SE590400-174090
Water body SE590990-174015
Water body SE658507-162696
Water body SE585200-174000
Water body SE585345-174950
Water body SE590550-174540
Water body SE583970-170280
Water body SE584430-170665
Water body SE584227-171600
Water body SE584390-172085
Water body SE584400-172270
Water body SE584600-173200
Water body SE584820-172920
Water body SE584905-172980
Water body SE585075-173130
Water body SE585040-173535
Water body SE584870-174310
Water body SE583875-170270
Water body SE584085-171600
Water body SE658352-163189
Water body SE591090-182300
Water body SE591160-182400
Water body SE590385-180890
Water body SE584960-175280
Water body SE591050-182740
Water body SE590000-183000
Water body SE591300-182800
Water body SE594200-192000
Water body SE592640-184500
Water body SE593000-190500
Water body SE593180-191280
Water body SE594845-191240
Water body SE594800-190655
Water body SE591655-183200
Water body SE591745-182250
Water body SE594670-185500
Water body SE594800-190220
Water body SE601310-183700
Water body SE601000-183510
Water body SE600565-184600
Water body SE601300-184180
Water body SE585797-181090
Water body SE574931-113131
Water body SE561030-122821
Water body SE554810-125240
Water body SE552500-124461
Water body SE572472-120302
Water body SE572135-120141
Water body SE570900-164501
Water body SE644150-211000
Water body SE594340-190448
Water body SE592400-180800
Water body SE593750-183962
Water body SE634110-201920
Water body SE634210-202020
Water body SE643700-211940
Water body SE645000-212100
Water body SE651818-212790
Water body SE651475-214300
Water body SE651800-214740
Water body SE651500-213108
Water body SE645500-212000
Water body SE653176-222000
Water body SE728806-179329
Water body SE623890-178030
Water body SE622500-172430
Water body SE622860-173000
Water body SE622000-172300
Water body SE624870-175500
Water body SE624615-180500
Water body SE624335-180000
Water body SE623810-180350
Water body SE623340-175556
Water body SE634950-202940
Water body SE590740-174135
Water body SE631840-191130
Water body SE614165-171500
Water body SE613760-171000
Water body SE613500-172500
Water body SE613591-171000
Water body SE613500-171000
Water body SE613240-171000
Water body SE635660-199490
Water body SE574160-113351
Water body SE580240-112501
Water body SE573300-113801
Water body SE657412-164249
Water body SE657608-164193
Water body SE595000-185600
Water body SE612303-171075
Water body SE622795-174565
Water body SE623300-176210
Water body SE630210-187470
Water body SE592600-181600
Water body SE592575-181770
Water body SE623980-175600
Water body SE645000-213500
Water body SE604200-174400
Water body SE592790-183000
Water body SE637640-204160
Water body SE652020-211930
Water body SE644730-210650
Water body SE641840-211540
Water body SE634230-201605
Water body SE563000-123351
Water body SE604250-173000
Water body SE611676-171000
Water body SE580000-164500
Water body SE590020-114520
Water body SE590860-113810
Water body SE590900-112300
Water body SE590670-111380
Water body SE593500-190000
Water body SE571720-120640
Water body SE635300-205251
Water body SE582500-113890
Water body SE637310-204860
Water body SE634740-203020
Water body SE646360-213700
Water body SE643920-211500
Water body SE584725-111050
Water body SE650280-213110
Water body SE654640-233190
Water body SE654575-234250
Water body SE562290-124131
Water body SE592000-190500
Water body SE570900-121060
Water body SE571240-121000
Water body SE564500-122601
Water body SE601440-184000
Water body SE612791-171130
Water body SE572072-115880
Water body SE573322-115478
Water body SE572227-115662
Water body SE573044-115355
Water body SE572308-115550
Water body SE580500-111801
Water body SE574170-190001
Water body SE584400-116000
Water body SE583625-111300
Water body SE572000-180001
Water body SE572350-180930
Water body SE583121-171401
Water body SE633400-195000
Water body SE611000-171500
Water body SE611213-171063
Water body SE611600-171500
Water body SE581280-170070
Water body SE581240-165220
Water body SE581820-165500
Water body SE619690-175690
Water body SE612520-172080
Water body SE605660-172380
Water body SE622011-146303
Water body SE561480-148220
Water body SE561150-147620
Water body SE560740-144375
Water body SE603000-181500
Water body SE561000-153320
Water body SE561000-150390
Water body SE560385-154500
Water body SE560200-143175
Water body SE654200-222920
Water body SE654000-222430
Water body SE650750-213500
Water body SE650460-213400
Water body SE625416-182696
Water body SE628480-183070
Water body SE593500-191660
Water body SE593330-192540
Water body SE593000-192000
Water body SE611766-171305
Water body SE575150-190400
Water body SE654291-224000

In [111]:
w.index_handler.booleans['step_0'][subset_uuid]['step_1']['step_2']['SE584340-174401'].keys()


Out[111]:
dict_keys(['boolean', 'oxygen'])

In [112]:
wb = 'SE583926-161744' #typomr 22
#wb = 'SE654470-222700' #typomr 13
wb = 'SE582000-112350' #type_area 1-n
type_area = '2'#'01s - Västkustens inre kustvatten'
#w.index_handler.booleans['step_0'][subset_uuid]['step_1']['step_2'][type_area]['din_winter']['boolean']
indicator = 'oxygen'

In [113]:
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = 'indicator').MONTH.unique())
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = 'indicator').DEPH.min(),
        w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = 'indicator').DEPH.max())
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = 'indicator').VISS_EU_CD.unique())
w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb).WATER_TYPE_AREA.unique()


2018-04-27 16:27:21,368	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:27:21,368	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:27:21,369	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:27:21,369	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
2018-04-27 16:27:21,369	workspaces.py	1412	get_filtered_data	DEBUG	STEP: step_2
[12 11 10  9  8  7  6  5  4  3  2  1]
0.0 48.0
['SE582000-112350']
Out[113]:
array(['01n - Västkustens inre kustvatten'], dtype=object)

In [114]:
w.mapping_objects['quality_element'].cfg['indicators']
[item.strip() for item in w.mapping_objects['quality_element'].cfg['indicators'].loc[indicator][0].split(', ')]


Out[114]:
['DOXY']

Step 3 Load Indicator objects step 3....


In [115]:
w.get_step_object(step = 3, subset = subset_uuid).indicator_setup(subset_unique_id = subset_uuid, indicator_list = [indicator]) 
#, indicator_list = ['din_winter', 'dip_winter']


********
oxygen
----
water_body None, type_area 1s, variable MIN_NR_YEARS
num 1, suf s, suf? ['s' 'n']
0    3
Name: MIN_NR_YEARS, dtype: object <class 'pandas.core.series.Series'>
['3'] <class 'numpy.ndarray'>
[3]
----
water_body None, type_area 1s, variable REF_VALUE
num 1, suf s, suf? ['s' 'n']
0    10
Name: REF_VALUE, dtype: object <class 'pandas.core.series.Series'>
['10'] <class 'numpy.ndarray'>
value 10 in refvalue_column
['10']

In [116]:
w.get_step_object(step = 3, subset = subset_uuid).indicator_objects[indicator].get_ref_value_type(water_body = wb)


SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: REF_VALUE, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable REF_VALUE
num 1, suf n, suf? ['s' 'n']
1    10
Name: REF_VALUE, dtype: object <class 'pandas.core.series.Series'>
['10'] <class 'numpy.ndarray'>
value 10 in refvalue_column
['10']
Out[116]:
'str'

In [117]:
ind_obj = w.get_step_object(step = 3, subset = subset_uuid).indicator_objects[indicator]

In [118]:
ind_obj.set_water_body_indicator_df(water_body = wb)


SE582000-112350

In [119]:
ind_obj.get_water_body_indicator_df(wb).dropna(subset = ['DOXY'])#.POSITION.unique()


Out[119]:
SDATE YEAR MONTH POSITION VISS_EU_CD WATER_TYPE_AREA DEPH DOXY source_DOXY
5211 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 7.06 DOXY_BTL
5212 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 7.10 DOXY_BTL
5213 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 6.94 DOXY_BTL
5214 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 6.82 DOXY_BTL
5215 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 6.40 DOXY_BTL
5216 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 6.13 DOXY_BTL
5217 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 6.00 DOXY_BTL
5218 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 5.92 DOXY_BTL
5219 2017-12-06 2017 12 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 45.0 5.83 DOXY_BTL
5340 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 6.06 DOXY_BTL
5341 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 6.04 DOXY_BTL
5342 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 6.09 DOXY_BTL
5343 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 6.04 DOXY_BTL
5344 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 5.89 DOXY_BTL
5345 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 5.88 DOXY_BTL
5346 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 5.62 DOXY_BTL
5347 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 4.99 DOXY_BTL
5348 2017-11-07 2017 11 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 46.0 4.84 DOXY_BTL
5460 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 5.07 DOXY_BTL
5461 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 5.04 DOXY_BTL
5462 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 5.06 DOXY_BTL
5463 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 5.16 DOXY_BTL
5464 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 5.30 DOXY_BTL
5465 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 5.30 DOXY_BTL
5466 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 5.17 DOXY_BTL
5467 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 3.58 DOXY_BTL
5468 2017-10-10 2017 10 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 44.0 3.62 DOXY_BTL
5595 2017-09-06 2017 9 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 5.89 DOXY_BTL
5596 2017-09-06 2017 9 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 5.84 DOXY_BTL
5597 2017-09-06 2017 9 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 5.82 DOXY_BTL
... ... ... ... ... ... ... ... ... ...
32734 2013-04-02 2013 4 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 5.74 DOXY_BTL
32735 2013-04-02 2013 4 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 5.65 DOXY_BTL
32736 2013-04-02 2013 4 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 45.0 5.78 DOXY_BTL
33207 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 8.59 DOXY_BTL
33208 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 8.52 DOXY_BTL
33209 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 8.38 DOXY_BTL
33210 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 7.71 DOXY_BTL
33211 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 6.35 DOXY_BTL
33212 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 6.16 DOXY_BTL
33213 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 6.17 DOXY_BTL
33214 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 6.15 DOXY_BTL
33215 2013-03-06 2013 3 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 42.0 6.15 DOXY_BTL
33970 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 7.22 DOXY_BTL
33971 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 6.57 DOXY_BTL
33972 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 6.73 DOXY_BTL
33973 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 6.43 DOXY_BTL
33974 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 6.56 DOXY_BTL
33975 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 6.48 DOXY_BTL
33976 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 5.98 DOXY_BTL
33977 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 5.79 DOXY_BTL
33978 2013-02-07 2013 2 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 45.0 5.78 DOXY_BTL
34413 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 0.0 8.29 DOXY_BTL
34414 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 2.0 7.96 DOXY_BTL
34415 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 5.0 7.90 DOXY_BTL
34416 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 10.0 7.57 DOXY_BTL
34417 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 15.0 6.55 DOXY_BTL
34418 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 20.0 6.04 DOXY_BTL
34419 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 30.0 5.46 DOXY_BTL
34420 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 40.0 5.14 DOXY_BTL
34421 2013-01-08 2013 1 58.34_11.40 SE582000-112350 01n - Västkustens inre kustvatten 45.0 5.09 DOXY_BTL

526 rows × 9 columns


In [120]:
df = ind_obj.get_filtered_data(subset = ind_obj.subset, step = 'step_2', water_body = wb)[ind_obj.column_list]

In [28]:
#lowest_quantile =
H = core.Hypsograph(file_path = 'D:/github/ekostat_calculator/resources/mappings/hypsographs.txt')
tol_BW = 5
maxD = H.get_max_depth_of_water_body(wb)
for key, group in df.dropna(subset = ['DOXY']).groupby(['POSITION']):
    group.reset_index()
    boolean = group['DEPH'] > maxD-tol_BW
    #print(group.loc[boolean,'DOXY'])
    q = group.loc[group['DEPH'] > maxD-tol_BW,'DOXY'].quantile(0.25)
    result = group.loc[group['DOXY'] < q,'DOXY'].mean()
    print('mean',group.loc[group['DOXY'] < q,'DOXY'].mean())
    print(key, q)
#lowest_quantile


mean 3.889574468085106
58.34_11.40 4.5

In [49]:
#df[df['MONTH'].isin(list(range(1,5+1)))]

In [127]:
#ind_obj.ref_settings.get_value(variable = 'REF_VALUE_LIMIT', type_area = type_area)
ind_obj.ref_settings.get_ref_value(type_area = type_area, water_body = wb)
#ind_obj.ref_settings.get_value(variable = 'HG_VALUE_LIMIT', water_body = 'SE581740-114820') # Havstensfjorden 'SE581740-114820'
#ind_obj.ref_settings.get_value(variable = 'PB_VALUE_LIMIT', water_body = wb)


SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: REF_VALUE, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable REF_VALUE
num 1, suf n, suf? ['s' 'n']
1    10
Name: REF_VALUE, dtype: object <class 'pandas.core.series.Series'>
['10'] <class 'numpy.ndarray'>
value 10 in refvalue_column
['10']
Out[127]:
10

In [128]:
ind_obj.calculate_status(water_body = wb)


            SDATE  YEAR  MONTH     POSITION       VISS_EU_CD  \
5219   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5348   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5468   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5603   2017-09-06  2017      9  58.34_11.40  SE582000-112350   
5700   2017-08-03  2017      8  58.34_11.40  SE582000-112350   
5930   2017-07-04  2017      7  58.34_11.40  SE582000-112350   
6105   2017-06-07  2017      6  58.34_11.40  SE582000-112350   
6248   2017-05-03  2017      5  58.34_11.40  SE582000-112350   
6432   2017-04-03  2017      4  58.34_11.40  SE582000-112350   
6611   2017-02-07  2017      2  58.34_11.40  SE582000-112350   
6913   2017-01-09  2017      1  58.34_11.40  SE582000-112350   
7134   2016-12-06  2016     12  58.34_11.40  SE582000-112350   
7614   2016-10-04  2016     10  58.34_11.40  SE582000-112350   
7806   2016-09-06  2016      9  58.34_11.40  SE582000-112350   
8341   2016-08-02  2016      8  58.34_11.40  SE582000-112350   
8884   2016-07-05  2016      7  58.34_11.40  SE582000-112350   
9279   2016-06-07  2016      6  58.34_11.40  SE582000-112350   
9489   2016-05-03  2016      5  58.34_11.40  SE582000-112350   
9695   2016-04-05  2016      4  58.34_11.40  SE582000-112350   
9900   2016-03-02  2016      3  58.34_11.40  SE582000-112350   
10233  2016-02-03  2016      2  58.34_11.40  SE582000-112350   
10550  2016-01-12  2016      1  58.34_11.40  SE582000-112350   
11110  2015-12-01  2015     12  58.34_11.40  SE582000-112350   
11391  2015-11-04  2015     11  58.34_11.40  SE582000-112350   
11923  2015-10-07  2015     10  58.34_11.40  SE582000-112350   
15516  2015-06-09  2015      6  58.34_11.40  SE582000-112350   
16187  2015-05-05  2015      5  58.34_11.40  SE582000-112350   
16751  2015-04-08  2015      4  58.34_11.40  SE582000-112350   
17351  2015-03-04  2015      3  58.34_11.40  SE582000-112350   
18042  2015-02-04  2015      2  58.34_11.40  SE582000-112350   
18999  2014-12-02  2014     12  58.34_11.40  SE582000-112350   
19383  2014-11-04  2014     11  58.34_11.40  SE582000-112350   
19966  2014-10-07  2014     10  58.34_11.40  SE582000-112350   
21688  2014-08-05  2014      8  58.34_11.40  SE582000-112350   
23800  2014-06-04  2014      6  58.34_11.40  SE582000-112350   
24213  2014-05-06  2014      5  58.34_11.40  SE582000-112350   
24736  2014-04-02  2014      4  58.34_11.40  SE582000-112350   
25479  2014-03-06  2014      3  58.34_11.40  SE582000-112350   
26545  2014-01-07  2014      1  58.34_11.40  SE582000-112350   
26984  2013-12-04  2013     12  58.34_11.40  SE582000-112350   
27403  2013-11-05  2013     11  58.34_11.40  SE582000-112350   
28078  2013-10-01  2013     10  58.34_11.40  SE582000-112350   
28638  2013-09-02  2013      9  58.34_11.40  SE582000-112350   
29605  2013-08-06  2013      8  58.34_11.40  SE582000-112350   
31299  2013-06-04  2013      6  58.34_11.40  SE582000-112350   
32061  2013-05-06  2013      5  58.34_11.40  SE582000-112350   
32736  2013-04-02  2013      4  58.34_11.40  SE582000-112350   
33978  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
34421  2013-01-08  2013      1  58.34_11.40  SE582000-112350   

                         WATER_TYPE_AREA  DEPH  DOXY source_DOXY  
5219   01n - Västkustens inre kustvatten  45.0  5.83    DOXY_BTL  
5348   01n - Västkustens inre kustvatten  46.0  4.84    DOXY_BTL  
5468   01n - Västkustens inre kustvatten  44.0  3.62    DOXY_BTL  
5603   01n - Västkustens inre kustvatten  45.0  4.15    DOXY_BTL  
5700   01n - Västkustens inre kustvatten  45.0  4.57    DOXY_BTL  
5930   01n - Västkustens inre kustvatten  46.0  5.18    DOXY_BTL  
6105   01n - Västkustens inre kustvatten  46.0  4.69    DOXY_BTL  
6248   01n - Västkustens inre kustvatten  46.0  5.00    DOXY_BTL  
6432   01n - Västkustens inre kustvatten  46.0  6.50    DOXY_BTL  
6611   01n - Västkustens inre kustvatten  46.0  6.49    DOXY_BTL  
6913   01n - Västkustens inre kustvatten  48.0  6.21    DOXY_BTL  
7134   01n - Västkustens inre kustvatten  47.0  5.61    DOXY_BTL  
7614   01n - Västkustens inre kustvatten  47.0  4.27    DOXY_BTL  
7806   01n - Västkustens inre kustvatten  45.0  3.42    DOXY_BTL  
8341   01n - Västkustens inre kustvatten  47.0  3.06    DOXY_BTL  
8884   01n - Västkustens inre kustvatten  45.0  4.68    DOXY_BTL  
9279   01n - Västkustens inre kustvatten  44.0  5.05    DOXY_BTL  
9489   01n - Västkustens inre kustvatten  46.0  6.22    DOXY_BTL  
9695   01n - Västkustens inre kustvatten  44.0  6.18    DOXY_BTL  
9900   01n - Västkustens inre kustvatten  45.0  6.24    DOXY_BTL  
10233  01n - Västkustens inre kustvatten  45.0  6.79    DOXY_BTL  
10550  01n - Västkustens inre kustvatten  45.0  5.69    DOXY_BTL  
11110  01n - Västkustens inre kustvatten  46.0  6.00    DOXY_BTL  
11391  01n - Västkustens inre kustvatten  45.0  4.36    DOXY_BTL  
11923  01n - Västkustens inre kustvatten  47.0  3.78    DOXY_BTL  
15516  01n - Västkustens inre kustvatten  47.0  6.00    DOXY_BTL  
16187  01n - Västkustens inre kustvatten  47.0  6.40    DOXY_BTL  
16751  01n - Västkustens inre kustvatten  46.0  5.40    DOXY_BTL  
17351  01n - Västkustens inre kustvatten  45.0  6.50    DOXY_BTL  
18042  01n - Västkustens inre kustvatten  46.0  6.50    DOXY_BTL  
18999  01n - Västkustens inre kustvatten  46.0  4.50    DOXY_BTL  
19383  01n - Västkustens inre kustvatten  45.0  4.80    DOXY_BTL  
19966  01n - Västkustens inre kustvatten  45.0  2.80    DOXY_BTL  
21688  01n - Västkustens inre kustvatten  44.0  4.45    DOXY_BTL  
23800  01n - Västkustens inre kustvatten  47.0  5.34    DOXY_BTL  
24213  01n - Västkustens inre kustvatten  44.0  5.24    DOXY_BTL  
24736  01n - Västkustens inre kustvatten  45.0  6.08    DOXY_BTL  
25479  01n - Västkustens inre kustvatten  48.0  6.49    DOXY_BTL  
26545  01n - Västkustens inre kustvatten  47.0  6.52    DOXY_BTL  
26984  01n - Västkustens inre kustvatten  45.0  5.54    DOXY_BTL  
27403  01n - Västkustens inre kustvatten  47.0  4.49    DOXY_BTL  
28078  01n - Västkustens inre kustvatten  47.0  3.26    DOXY_BTL  
28638  01n - Västkustens inre kustvatten  46.0  4.37    DOXY_BTL  
29605  01n - Västkustens inre kustvatten  47.0  5.19    DOXY_BTL  
31299  01n - Västkustens inre kustvatten  46.0  6.24    DOXY_BTL  
32061  01n - Västkustens inre kustvatten  44.0  6.33    DOXY_BTL  
32736  01n - Västkustens inre kustvatten  45.0  5.78    DOXY_BTL  
33978  01n - Västkustens inre kustvatten  45.0  5.78    DOXY_BTL  
34421  01n - Västkustens inre kustvatten  45.0  5.09    DOXY_BTL  
SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: REF_VALUE, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable REF_VALUE
num 1, suf n, suf? ['s' 'n']
1    10
Name: REF_VALUE, dtype: object <class 'pandas.core.series.Series'>
['10'] <class 'numpy.ndarray'>
value 10 in refvalue_column
['10']
SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: HG_VALUE_LIMIT, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable HG_VALUE_LIMIT
num 1, suf n, suf? ['s' 'n']
1    3.5
Name: HG_VALUE_LIMIT, dtype: object <class 'pandas.core.series.Series'>
['3.5'] <class 'numpy.ndarray'>
[3.5]
SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: GM_VALUE_LIMIT, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable GM_VALUE_LIMIT
num 1, suf n, suf? ['s' 'n']
1    2.1
Name: GM_VALUE_LIMIT, dtype: object <class 'pandas.core.series.Series'>
['2.1'] <class 'numpy.ndarray'>
[2.1]
SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: MP_VALUE_LIMIT, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable MP_VALUE_LIMIT
num 1, suf n, suf? ['s' 'n']
1    1
Name: MP_VALUE_LIMIT, dtype: object <class 'pandas.core.series.Series'>
['1'] <class 'numpy.ndarray'>
[1.0]
SE582000-112350
['unspecified' 'SE581740-114820' 'SE581260-113220' 'SE581700-113000'
 'SE582000-115270' 'SE563000-123351' 'SE561030-122821' 'SE562450-122751'
 'SE562000-123800' 'SE555545-124332' 'SE592000-184700' 'SE658352-163189'
 'SE591800-181360' 'SE592290-181600']
. . . . .
Series([], Name: PB_VALUE_LIMIT, dtype: object)
0
. . . . .
----
water_body SE582000-112350, type_area 1-n, variable PB_VALUE_LIMIT
num 1, suf n, suf? ['s' 'n']
1    0
Name: PB_VALUE_LIMIT, dtype: object <class 'pandas.core.series.Series'>
['0'] <class 'numpy.ndarray'>
[0.0]
****** 10 ******
-------***-------
<class 'float'> <class 'float'> <class 'float'> <class 'int'>

In [129]:
print(ind_obj.classification_results[wb].keys())
for key, value in ind_obj.classification_results[wb].items():
    if key == 'all_data' or key == 'mean_EQR_by_date' or key == 'number_of_values':
        pass
    else:
        print('**************************************')
        print(key)
        print(value)


dict_keys(['parameter', 'salt_parameter', 'water_body', 'all_data', 'all_ok', 'water_body_status', 'data_used', 'global_EQR', 'status', 'value', 'test1_resultlist', 'test2_resultlist'])
**************************************
parameter
DOXY
**************************************
salt_parameter
None
**************************************
water_body
SE582000-112350
**************************************
all_ok
False
**************************************
water_body_status
None
**************************************
data_used
            SDATE  YEAR  MONTH     POSITION       VISS_EU_CD  \
5211   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5212   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5213   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5214   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5215   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5216   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5217   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5218   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5219   2017-12-06  2017     12  58.34_11.40  SE582000-112350   
5340   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5341   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5342   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5343   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5344   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5345   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5346   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5347   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5348   2017-11-07  2017     11  58.34_11.40  SE582000-112350   
5460   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5461   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5462   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5463   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5464   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5465   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5466   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5467   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5468   2017-10-10  2017     10  58.34_11.40  SE582000-112350   
5595   2017-09-06  2017      9  58.34_11.40  SE582000-112350   
5596   2017-09-06  2017      9  58.34_11.40  SE582000-112350   
5597   2017-09-06  2017      9  58.34_11.40  SE582000-112350   
...           ...   ...    ...          ...              ...   
32734  2013-04-02  2013      4  58.34_11.40  SE582000-112350   
32735  2013-04-02  2013      4  58.34_11.40  SE582000-112350   
32736  2013-04-02  2013      4  58.34_11.40  SE582000-112350   
33207  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33208  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33209  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33210  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33211  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33212  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33213  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33214  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33215  2013-03-06  2013      3  58.34_11.40  SE582000-112350   
33970  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33971  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33972  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33973  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33974  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33975  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33976  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33977  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
33978  2013-02-07  2013      2  58.34_11.40  SE582000-112350   
34413  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34414  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34415  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34416  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34417  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34418  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34419  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34420  2013-01-08  2013      1  58.34_11.40  SE582000-112350   
34421  2013-01-08  2013      1  58.34_11.40  SE582000-112350   

                         WATER_TYPE_AREA  DEPH  DOXY source_DOXY  
5211   01n - Västkustens inre kustvatten   0.0  7.06    DOXY_BTL  
5212   01n - Västkustens inre kustvatten   2.0  7.10    DOXY_BTL  
5213   01n - Västkustens inre kustvatten   5.0  6.94    DOXY_BTL  
5214   01n - Västkustens inre kustvatten  10.0  6.82    DOXY_BTL  
5215   01n - Västkustens inre kustvatten  15.0  6.40    DOXY_BTL  
5216   01n - Västkustens inre kustvatten  20.0  6.13    DOXY_BTL  
5217   01n - Västkustens inre kustvatten  30.0  6.00    DOXY_BTL  
5218   01n - Västkustens inre kustvatten  40.0  5.92    DOXY_BTL  
5219   01n - Västkustens inre kustvatten  45.0  5.83    DOXY_BTL  
5340   01n - Västkustens inre kustvatten   0.0  6.06    DOXY_BTL  
5341   01n - Västkustens inre kustvatten   2.0  6.04    DOXY_BTL  
5342   01n - Västkustens inre kustvatten   5.0  6.09    DOXY_BTL  
5343   01n - Västkustens inre kustvatten  10.0  6.04    DOXY_BTL  
5344   01n - Västkustens inre kustvatten  15.0  5.89    DOXY_BTL  
5345   01n - Västkustens inre kustvatten  20.0  5.88    DOXY_BTL  
5346   01n - Västkustens inre kustvatten  30.0  5.62    DOXY_BTL  
5347   01n - Västkustens inre kustvatten  40.0  4.99    DOXY_BTL  
5348   01n - Västkustens inre kustvatten  46.0  4.84    DOXY_BTL  
5460   01n - Västkustens inre kustvatten   0.0  5.07    DOXY_BTL  
5461   01n - Västkustens inre kustvatten   2.0  5.04    DOXY_BTL  
5462   01n - Västkustens inre kustvatten   5.0  5.06    DOXY_BTL  
5463   01n - Västkustens inre kustvatten  10.0  5.16    DOXY_BTL  
5464   01n - Västkustens inre kustvatten  15.0  5.30    DOXY_BTL  
5465   01n - Västkustens inre kustvatten  20.0  5.30    DOXY_BTL  
5466   01n - Västkustens inre kustvatten  30.0  5.17    DOXY_BTL  
5467   01n - Västkustens inre kustvatten  40.0  3.58    DOXY_BTL  
5468   01n - Västkustens inre kustvatten  44.0  3.62    DOXY_BTL  
5595   01n - Västkustens inre kustvatten   0.0  5.89    DOXY_BTL  
5596   01n - Västkustens inre kustvatten   2.0  5.84    DOXY_BTL  
5597   01n - Västkustens inre kustvatten   5.0  5.82    DOXY_BTL  
...                                  ...   ...   ...         ...  
32734  01n - Västkustens inre kustvatten  30.0  5.74    DOXY_BTL  
32735  01n - Västkustens inre kustvatten  40.0  5.65    DOXY_BTL  
32736  01n - Västkustens inre kustvatten  45.0  5.78    DOXY_BTL  
33207  01n - Västkustens inre kustvatten   0.0  8.59    DOXY_BTL  
33208  01n - Västkustens inre kustvatten   2.0  8.52    DOXY_BTL  
33209  01n - Västkustens inre kustvatten   5.0  8.38    DOXY_BTL  
33210  01n - Västkustens inre kustvatten  10.0  7.71    DOXY_BTL  
33211  01n - Västkustens inre kustvatten  15.0  6.35    DOXY_BTL  
33212  01n - Västkustens inre kustvatten  20.0  6.16    DOXY_BTL  
33213  01n - Västkustens inre kustvatten  30.0  6.17    DOXY_BTL  
33214  01n - Västkustens inre kustvatten  40.0  6.15    DOXY_BTL  
33215  01n - Västkustens inre kustvatten  42.0  6.15    DOXY_BTL  
33970  01n - Västkustens inre kustvatten   0.0  7.22    DOXY_BTL  
33971  01n - Västkustens inre kustvatten   2.0  6.57    DOXY_BTL  
33972  01n - Västkustens inre kustvatten   5.0  6.73    DOXY_BTL  
33973  01n - Västkustens inre kustvatten  10.0  6.43    DOXY_BTL  
33974  01n - Västkustens inre kustvatten  15.0  6.56    DOXY_BTL  
33975  01n - Västkustens inre kustvatten  20.0  6.48    DOXY_BTL  
33976  01n - Västkustens inre kustvatten  30.0  5.98    DOXY_BTL  
33977  01n - Västkustens inre kustvatten  40.0  5.79    DOXY_BTL  
33978  01n - Västkustens inre kustvatten  45.0  5.78    DOXY_BTL  
34413  01n - Västkustens inre kustvatten   0.0  8.29    DOXY_BTL  
34414  01n - Västkustens inre kustvatten   2.0  7.96    DOXY_BTL  
34415  01n - Västkustens inre kustvatten   5.0  7.90    DOXY_BTL  
34416  01n - Västkustens inre kustvatten  10.0  7.57    DOXY_BTL  
34417  01n - Västkustens inre kustvatten  15.0  6.55    DOXY_BTL  
34418  01n - Västkustens inre kustvatten  20.0  6.04    DOXY_BTL  
34419  01n - Västkustens inre kustvatten  30.0  5.46    DOXY_BTL  
34420  01n - Västkustens inre kustvatten  40.0  5.14    DOXY_BTL  
34421  01n - Västkustens inre kustvatten  45.0  5.09    DOXY_BTL  

[526 rows x 9 columns]
**************************************
global_EQR
0.811986906710311
**************************************
status
HIGH
**************************************
value
3.889574468085106
**************************************
test1_resultlist
[3.889574468085106]
**************************************
test2_resultlist
[]

In [98]:
dw_obj.classification_results[wb]['mean_EQR_by_year']#.dropna(subset = ['mean_ek_value'])


Out[98]:
number_of_dates min max mean_ek_value
YEAR
2013 2 0.197364 0.298251 0.247807
2014 2 0.255532 0.382444 0.318988
2015 2 0.226942 0.311062 0.269002
2016 2 0.289573 0.500683 0.395128

In [100]:
dw_obj.water_body_indicator_df[wb].dropna(subset = ['REFERENCE_VALUE'])


Out[100]:
SDATE YEAR MONTH POSITION VISS_EU_CD WATER_TYPE_AREA DEPH DIN SALT REFERENCE_VALUE ek_value
7031 2016-12-08 2016 12 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 5.00 6.1 2.39187 0.478374
7032 2016-12-08 2016 12 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 5.0 4.85 6.0 2.50020 0.515505
7033 2016-12-08 2016 12 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 10.0 4.92 6.0 2.50020 0.508171
10166 2016-02-09 2016 2 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 10.10 5.3 3.25851 0.322625
10167 2016-02-09 2016 2 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 5.0 9.87 5.9 2.60853 0.264289
10168 2016-02-09 2016 2 58.64_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 10.0 6.95 6.5 1.95855 0.281806
10930 2015-12-08 2015 12 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 8.38 5.5 3.04185 0.362989
10932 2015-12-08 2015 12 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 10.0 7.14 6.6 1.85022 0.259134
17901 2015-02-09 2015 2 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 13.30 5.6 2.93352 0.220565
17903 2015-02-09 2015 2 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 10.0 7.93 6.6 1.85022 0.233319
18619 2014-12-16 2014 12 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 9.37 5.0 3.58350 0.382444
25719 2014-02-25 2014 2 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 25.47 2.3 6.50841 0.255532
26807 2013-12-10 2013 12 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 6.93 6.4 2.06688 0.298251
33959 2013-02-08 2013 2 58.65_16.39 SE583926-161744 13 - Östergötlands inre kustvatten 0.5 41.21 0.8 8.13336 0.197364

In [30]:
def get_EK(x):
    y = x.DIN/x.REFERENCE_VALUE
    if y > 1:
        return 1
    else:
        return y

df = dw_obj.water_body_indicator_df[wb]
df['ek_value'] = df.apply(get_EK, axis = 1)

In [31]:
df[dw_obj.indicator_parameter]/df.REFERENCE_VALUE


Out[31]:
7057     1.002526
7058     1.011999
7059     1.075150
7349     1.193559
7350     0.852542
7351     0.895169
10343    1.795074
10344    1.262979
10345    1.235931
11065    0.914580
11066    0.937210
11067    0.911079
17831    1.114502
17832    1.042739
17833    1.155796
18397         NaN
18398         NaN
18399         NaN
18916    0.851515
18917    0.845883
18918    0.874886
26382    1.205698
26383    1.058389
26384    1.466357
27000    0.954291
27001    0.969711
27002    0.985130
34344    0.907042
34345    1.289190
34346    1.481507
dtype: float64

In [32]:
by_date = df.groupby(['SDATE', 'YEAR'],).ek_value.agg(['count', 'min', 'max', 'mean']).reset_index()
# by_date.to_csv(self.paths['results'] +'/' + self.name + water_body +'by_occation.txt', sep='\t')
by_date.rename(columns={'mean':'mean_ek_value', 'count': 'number_of_values'}, inplace=True) # Cant use "mean" below
by_date


Out[32]:
SDATE YEAR number_of_values min max mean_ek_value
0 2013-01-15 2013 3 0.907042 1.000000 0.969014
1 2013-12-04 2013 3 0.954291 0.985130 0.969711
2 2014-01-16 2014 3 1.000000 1.000000 1.000000
3 2014-12-03 2014 3 0.845883 0.874886 0.857428
4 2015-01-14 2015 0 NaN NaN NaN
5 2015-02-11 2015 3 1.000000 1.000000 1.000000
6 2015-12-02 2015 3 0.911079 0.937210 0.920956
7 2016-01-27 2016 3 1.000000 1.000000 1.000000
8 2016-11-09 2016 3 0.852542 1.000000 0.915904
9 2016-12-07 2016 3 1.000000 1.000000 1.000000

In [34]:
# Remove occations with not enough samples
# Or use count as a flag for what to display for the user?
by_date['all_ok'] = True
ix = by_date.loc[by_date['number_of_values'] < 1, 'all_ok'].index
by_date.set_value(ix, 'all_ok', False)


Out[34]:
SDATE YEAR number_of_values min max mean_ek_value all_ok
0 2013-01-15 2013 3 0.907042 1.000000 0.969014 True
1 2013-12-04 2013 3 0.954291 0.985130 0.969711 True
2 2014-01-16 2014 3 1.000000 1.000000 1.000000 True
3 2014-12-03 2014 3 0.845883 0.874886 0.857428 True
4 2015-01-14 2015 0 NaN NaN NaN False
5 2015-02-11 2015 3 1.000000 1.000000 1.000000 True
6 2015-12-02 2015 3 0.911079 0.937210 0.920956 True
7 2016-01-27 2016 3 1.000000 1.000000 1.000000 True
8 2016-11-09 2016 3 0.852542 1.000000 0.915904 True
9 2016-12-07 2016 3 1.000000 1.000000 1.000000 True

In [35]:
"""
2) Medelvärdet av EK för varje parameter beräknas för varje år.
"""
by_year = by_date.groupby('YEAR').mean_ek_value.agg(['count', 'min', 'max', 'mean']).reset_index()
by_year.rename(columns={'mean':'mean_ek_value', 'count': 'number_of_dates'}, inplace=True)
by_year['all_ok'] = True
by_year.loc[by_year['number_of_dates'] < 1, 'all_ok'] = False
# by_year.to_csv(self.paths['results'] +'/' + self.name + water_body + 'by_year.txt', sep='\t')
by_year


Out[35]:
YEAR number_of_dates min max mean_ek_value all_ok
0 2013 2 0.969014 0.969711 0.969362 True
1 2014 2 0.857428 1.000000 0.928714 True
2 2015 2 0.920956 1.000000 0.960478 True
3 2016 3 0.915904 1.000000 0.971968 True

In [36]:
by_period = by_year[['mean_ek_value']].describe()
by_period


Out[36]:
mean_ek_value
count 4.000000
mean 0.957631
std 0.019895
min 0.928714
25% 0.952537
50% 0.964920
75% 0.970014
max 0.971968

In [37]:
"""
3) Medelvärdet av EK för varje parameter och vattenförekomst (beräknas för minst
en treårsperiod)
"""
by_period = by_year[['mean_ek_value']].describe()#.agg(['count', 'min', 'max', 'mean'])
by_period = by_period.transpose()
#by_period#.loc['mean', 'mean_ek_value']
#
#by_period['count'].get_value('mean_ek_value')
by_period['all_ok']  = True
if by_period['count'].get_value('mean_ek_value') < 3:
    by_period['all_ok'] = False

by_period


Out[37]:
count mean std min 25% 50% 75% max all_ok
mean_ek_value 4.0 0.957631 0.019895 0.928714 0.952537 0.96492 0.970014 0.971968 True

In [40]:
by_period['mean'].get_value('mean_ek_value')


Out[40]:
0.95763063655011882

In [29]:
temp_df = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'],
...                   index=pd.date_range('1/1/2000', periods=10))
temp_df.iloc[3:7] = np.nan
temp_df.describe()


Out[29]:
A B C
count 6.000000 6.000000 6.000000
mean 0.206290 0.471121 -0.242431
std 0.586035 0.679945 1.721820
min -0.333494 -0.641210 -2.997678
25% -0.286442 0.214068 -1.103137
50% 0.056126 0.508677 0.315088
75% 0.657880 0.929940 0.644624
max 1.001151 1.264358 1.734323

In [30]:
def set_above_one_value(x):
    if x > 1:
        return 1
    else:
        return x
dw_obj.water_body_indicator_df[wb]['EK'] = dw_obj.water_body_indicator_df[wb]['DIN']/dw_obj.water_body_indicator_df[wb]['REFERENCE_VALUE']
dw_obj.water_body_indicator_df[wb]['EK'] = dw_obj.water_body_indicator_df[wb]['EK'].apply(set_above_one_value)
dw_obj.water_body_indicator_df[wb]['EK']


Out[30]:
7057     1.000000
7058     1.000000
7059     1.000000
7349     1.000000
7350     0.852542
7351     0.895169
10343    1.000000
10344    1.000000
10345    1.000000
11065    0.914580
11066    0.937210
11067    0.911079
17831    1.000000
17832    1.000000
17833    1.000000
18397         NaN
18398         NaN
18399         NaN
18916    0.851515
18917    0.845883
18918    0.874886
26382    1.000000
26383    1.000000
26384    1.000000
27000    0.954291
27001    0.969711
27002    0.985130
34344    0.907042
34345    1.000000
34346    1.000000
Name: EK, dtype: float64

In [31]:
dw_obj.get_filtered_data(subset = subset_uuid, step = 'step_2', type_area = 22, indicator = 'din_winter')[['DIN']].dropna()


Out[31]:
DIN
5199 4.68
5200 4.55
5201 4.54
5202 4.23
5203 4.42
5204 4.19
5205 5.59
5206 8.84
5207 6.77
5208 5.68
5209 4.39
5210 4.27
5211 4.63
5212 4.59
5213 4.59
5214 5.08
5215 5.34
5216 4.60
5217 4.31
5218 4.19
5219 4.60
5220 15.76
5221 8.59
5222 6.40
5223 6.46
5224 5.67
5225 5.34
5226 4.62
5227 5.18
5228 5.18
... ...
34530 11.72
34531 4.89
34532 4.85
34533 4.39
34534 4.22
34535 9.33
34536 10.92
34537 8.57
34538 5.36
34539 3.93
34540 5.71
34541 7.14
34542 35.71
34543 3.93
34544 4.14
34545 26.35
34546 11.60
34547 8.32
34548 8.46
34549 8.60
34550 5.55
34551 5.39
34552 5.42
34553 5.40
34554 6.17
34555 8.48
34556 11.34
34557 15.83
34558 11.80
34559 3.85

18009 rows × 1 columns


In [120]:
B2_NTOT_WINTER_SETTINGS = lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_ref_settings['ntot_winter']
lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_ref_settings['ntot_winter'].allowed_variables
# gör om till
# lv_workspace.get_indicator_ref_settings(step = , subset = , indicator = , waterbody/type)
# ger samma resultat som:
#lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_ref_settings['ntot_winter'].settings.ref_columns

lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_ref_settings['ntot_winter'].settings.get_value('EK G/M', 22)
#print(B2_NTOT_WINTER_SETTINGS)
#B2_NTOT_WINTER_SETTINGS.get_value('2', 'DEPTH_INTERVAL')


Out[120]:
'0.85'

In [124]:
av = lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_data_filter_settings['ntot_winter'].allowed_variables
lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_data_filter_settings['ntot_winter'].settings.df[av]


Out[124]:
DEPH_INTERVAL MONTH_LIST
0 0-10 1;2;3;12
1 0-10 1;2;3;12
2 0-10 1;2;3;12
3 0-10 1;2;3;12
4 0-10 1;2;3;12
5 0-10 1;2;3;12
6 0-10 1;2;3;12
7 0-10 1;2;12
8 0-10 1;2;12
9 0-10 1;2;12
10 0-10 1;2;12
11 0-10 1;2;12
12 0-10 1;2;12
13 0-10 1;2;12
14 0-10 1;2;12
15 0-10 1;2;12
16 0-10 1;2;12
17 0-10 1;2;11;12
18 0-10 1;2;11;12
19 0-10 1;2;11;12
20 0-10 1;2;11;12
21 0-10 1;2;11;12
22 0-10 1;2;11;12
23 0-10 1;2;11;12
24 0-10 1;2;11;12
25 0-10 1;2;12
26 0-10 1;2;3;12

In [119]:
lv_workspace.get_subset_object('B').get_step_object('step_2').indicator_data_filter_settings['ntot_winter'].settings.df


Out[119]:
TYPE_AREA_NUMBER TYPE_AREA_SUFFIX DEPH_INTERVAL MIN_NR_YEARS MIN_NR_VALUES TIME_DELTA_TOLERANCE POS_RADIUS_TOLERANCE DEPH_TOLERANCE MONTH_LIST EKV REF EKV H/G EKV G/M EKV M/O EKV O/D EK H/G EK G/M EK M/O EK O/D SALINITY MAX
0 1 n 0-10 3 3 3 0.1 5 1;2;3;12 -0.630*s+36 -0.715*s+40.86 -0.799*s+45.72 -1.0546*s+60.3 -1.480*s+84.6 0.88 0.79 0.6 0.43 27
1 1 s 0-10 3 3 3 0.1 5 1;2;3;12 -0.65*s+30 -0.738*s+34.05 -0.8255*s+38.1 -1.0888*s+50.25 -1.528*s+70.5 0.88 0.79 0.6 0.43 20
2 2 NaN 0-10 3 3 3 0.1 5 1;2;3;12 -0.630*s+36 -0.715*s+40.86 -0.799*s+45.72 -1.0546*s+60.3 -1.480*s+84.6 0.88 0.79 0.6 0.43 27
3 3 NaN 0-10 3 3 3 0.1 5 1;2;3;12 -0.630*s+36 -0.715*s+40.86 -0.799*s+45.72 -1.0546*s+60.3 -1.480*s+84.6 0.88 0.79 0.6 0.43 27
4 4 NaN 0-10 3 3 3 0.1 5 1;2;3;12 -0.65*s+30 -0.738*s+34.05 -0.8255*s+38.1 -1.0888*s+50.25 -1.528*s+70.5 0.88 0.79 0.6 0.43 20
5 5 NaN 0-10 3 3 3 0.1 5 1;2;3;12 0*s+17 0*s+19.295 0*s+21.59 0*s+28.475 0*s+39.95 0.89 0.77 0.61 0.43 20
6 6 NaN 0-10 3 3 3 0.1 5 1;2;3;12 0*s+17 0*s+19.295 0*s+21.59 0*s+28.475 0*s+39.95 0.89 0.77 0.61 0.43 20
7 7 NaN 0-10 3 3 3 0.1 5 1;2;12 -6*s+59 -6.6*s+64.9 -7.2*s+70.8 -9*s+88.5 -12*s+118 0.91 0.84 0.67 0.5 7
8 8 NaN 0-10 3 3 3 0.1 5 1;2;12 -6*s+59 -6.6*s+64.9 -7.2*s+70.8 -9*s+88.5 -12*s+118 0.91 0.84 0.67 0.5 7
9 9 NaN 0-10 3 3 3 0.1 5 1;2;12 -6*s+59 -6.6*s+64.9 -7.2*s+70.8 -9*s+88.5 -12*s+118 0.91 0.84 0.67 0.5 7
10 10 NaN 0-10 3 3 3 0.1 5 1;2;12 0*s+17 0*s+18.7 0*s+20.4 0*s+25.5 0*s+34 0.89 0.85 0.65 0.5 7
11 11 NaN 0-10 3 3 3 0.1 5 1;2;12 0*s+17 0*s+18.7 0*s+20.4 0*s+25.5 0*s+34 0.89 0.85 0.65 0.5 7
12 12 s 0-10 3 3 3 0.1 5 1;2;12 -2.833*s+34 -3.1167*s+37.4 -3.4*s+40.8 -4.25*s+51 -5.6667*s+68 0.91 0.83 0.66 0.5 6
13 12 n 0-10 3 3 3 0.1 5 1;2;12 -1*s+23 -1.1*s+25.3 -1.2*s+27.6 -1.5*s+34.5 -2*s+46 0.93 0.85 0.68 0.51 6
14 13 NaN 0-10 3 3 3 0.1 5 1;2;12 -2.833*s+34 -3.1167*s+37.4 -3.4*s+40.8 -4.25*s+51 -5.6667*s+68 0.91 0.83 0.66 0.5 6
15 14 NaN 0-10 3 3 3 0.1 5 1;2;12 -2.833*s+34 -3.1167*s+37.4 -3.4*s+40.8 -4.25*s+51 -5.6667*s+68 0.91 0.83 0.66 0.5 6
16 15 NaN 0-10 3 3 3 0.1 5 1;2;12 -1*s+23 -1.1*s+25.3 -1.2*s+27.6 -1.5*s+34.5 -2*s+46 0.93 0.85 0.68 0.51 6
17 16 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -1*s+23 -1.1*s+25.3 -1.2*s+27.6 -1.5*s+34.5 -2*s+46 0.93 0.85 0.68 0.51 5
18 17 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -1*s+23 -1.1*s+25.3 -1.2*s+27.6 -1.5*s+34.5 -2*s+46 0.93 0.85 0.68 0.51 5
19 18 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -0.4*s+20 -0.44*s+22 -0.48*s+24 -0.6*s+30 -0.8*s+40 0.91 0.83 0.66 0.5 5
20 19 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -0.4*s+20 -0.44*s+22 -0.48*s+24 -0.6*s+30 -0.8*s+40 0.91 0.83 0.66 0.5 5
21 20 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -0.6*s+21 -0.66*s+23.1 -0.72*s+25.2 -0.9*s+31.5 -1.2*s+42 0.91 0.83 0.67 0.5 5
22 21 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -0.6*s+21 -0.66*s+23.1 -0.72*s+25.2 -0.9*s+31.5 -1.2*s+42 0.91 0.83 0.67 0.5 5
23 22 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -1*s+21 -1.09*s+22.89 -1.18*s+24.78 -1.45*s+30.45 -1.9*s+39.9 0.93 0.85 0.68 0.51 3
24 23 NaN 0-10 3 3 3 0.1 5 1;2;11;12 -1*s+21 -1.09*s+22.89 -1.18*s+24.78 -1.45*s+30.45 -1.9*s+39.9 0.93 0.85 0.68 0.51 3
25 24 NaN 0-10 3 3 3 0.1 5 1;2;12 -1*s+23 -1.1*s+25.3 -1.2*s+27.6 -1.5*s+34.5 -2*s+46 0.93 0.85 0.68 0.51 6
26 25 NaN 0-10 3 3 3 0.1 5 1;2;3;12 -0.65*s+30 -0.738*s+34.05 -0.8255*s+38.1 -1.0888*s+50.25 -1.528*s+70.5 0.88 0.79 0.6 0.43 20

In [67]:
B2_NTOT_WINTER_SETTINGS.settings.mapping_water_body['N m Bottenvikens kustvatten']


Out[67]:
{'BASIN_NUMBER': '110002.0',
 'CENTER_LAT': '64° 42\' 35,349"',
 'CENTER_LON': '21° 24\' 5,383"',
 'EU_CD': 'SE648760-213140',
 'HID': '649640-214530',
 'TYPE_AREA_NUMBER': '23',
 'TYPE_AREA_SUFFIX': '',
 'URL_VISS': 'http://www.viss.lansstyrelsen.se/waters.aspx?waterEUID=SE648760-213140'}

Set subset time and area filter


In [35]:
f1_A = lv_workspace.get_data_filter_object(step=1, subset='A') 
f1_A.include_list_filter


Out[35]:
{'MYEAR': ['2016', '2017'],
 'SEA_AREA_NAME': ['Gullmarn centralbassäng', 'Rivö fjord'],
 'STATN': ['BJÖRKHOLMEN']}

In [136]:
lv_workspace.get_data_filter_info(step=1, subset='A')


Out[136]:
{'exclude_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN'],
 'include_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN']}

In [36]:
f1_A.exclude_list_filter


Out[36]:
{'MYEAR': ['2015', '2016'], 'SEA_AREA_NAME': [], 'STATN': ['SLÄGGÖ']}

In [21]:
f0.include_list_filter


Out[21]:
{'MYEAR': ['2016', '2017'],
 'SEA_AREA_NAME': ['Byfjorden',
  'Gullmarn centralbassäng',
  'Havstensfjorden',
  'Rivö fjord'],
 'STATN': []}

Apply subset filter


In [22]:
lv_workspace.apply_subset_filter(subset='A') # Not handled properly by the IndexHandler


Out[22]:
True

Extract filtered data


In [23]:
data_after_subset_filter = lv_workspace.get_filtered_data(level=1, subset='A') # level=0 means first filter 
print('{} rows mathing the filter criteria'.format(len(data_after_subset_filter)))
data_after_subset_filter.head()


198 rows mathing the filter criteria
Out[23]:
AMON BQIm CPHL DEPH DOXY_BTL DOXY_CTD LATIT_DD LONGI_DD MNDEP MXDEP ... SERNO SHARKID_MD5 SHIPC STATN STIME TEMP_BTL TEMP_CTD WATER_DISTRICT WATER_TYPE_AREA WLTYP
2628 0.76 NaN 0.6 0.0 7.05 58.38767 11.62667 NaN NaN ... 8.0 NaN 77SN BJÖRKHOLMEN 17:30 4.96 4.84 Västerhavets vattendistrikt 02 - Västkustens fjordar 2 - Havsområde innanför 1 NM
2629 0.72 NaN 0.5 2.0 7.12 58.38767 11.62667 NaN NaN ... 8.0 NaN 77SN BJÖRKHOLMEN 17:30 4.93 4.84 Västerhavets vattendistrikt 02 - Västkustens fjordar 2 - Havsområde innanför 1 NM
2630 0.74 NaN 0.6 5.0 7.16 58.38767 11.62667 NaN NaN ... 8.0 NaN 77SN BJÖRKHOLMEN 17:30 4.88 4.84 Västerhavets vattendistrikt 02 - Västkustens fjordar 2 - Havsområde innanför 1 NM
2631 0.65 NaN 0.5 10.0 7.11 58.38767 11.62667 NaN NaN ... 8.0 NaN 77SN BJÖRKHOLMEN 17:30 5.12 4.86 Västerhavets vattendistrikt 02 - Västkustens fjordar 2 - Havsområde innanför 1 NM
2632 0.46 NaN 0.3 15.0 6.86 58.38767 11.62667 NaN NaN ... 8.0 NaN 77SN BJÖRKHOLMEN 17:30 5.52 5.10 Västerhavets vattendistrikt 02 - Västkustens fjordar 2 - Havsområde innanför 1 NM

5 rows × 46 columns


In [24]:
# show available waterbodies
lst = data_after_subset_filter.SEA_AREA_NAME.unique()
print('Waterbodies in subset:\n{}'.format('\n'.join(lst)))


Waterbodies in subset:
Gullmarn centralbassäng

In [24]:
import numpy as np
np.where(lv_workspace.index_handler.subset_filter)


Out[24]:
(array([2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639,
        2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764,
        2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880,
        2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962,
        3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087,
        3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195,
        3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292,
        3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419,
        3493, 3494, 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503,
        3624, 3625, 3626, 3627, 3628, 3629, 3630, 3631, 3632, 3633, 3634,
        3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3726, 3727,
        3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869,
        3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989,
        4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120,
        4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275,
        4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364,
        4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512,
        4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816], dtype=int64),)

In [25]:
f = lv_workspace.get_data_filter_object(step=1, subset='A')

In [26]:
f.all_filters


Out[26]:
{'exclude_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN'],
 'include_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN']}

In [27]:
f.exclude_list_filter


Out[27]:
{'MYEAR': ['2015', '2016'], 'SEA_AREA_NAME': [], 'STATN': ['SLÄGGÖ']}

In [28]:
f.include_list_filter


Out[28]:
{'MYEAR': ['2016', '2017'],
 'SEA_AREA_NAME': ['Gullmarn centralbassäng', 'Rivö fjord'],
 'STATN': ['BJÖRKHOLMEN']}

In [29]:
s = lv_workspace.get_step_1_object('A')

In [30]:
s.data_filter.all_filters


Out[30]:
{'exclude_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN'],
 'include_list': ['MYEAR', 'SEA_AREA_NAME', 'STATN']}

In [31]:
f0 = lv_workspace.get_data_filter_object(step=0)

In [32]:
f0.exclude_list_filter


Out[32]:
{'MYEAR': ['2015', '2016'], 'SEA_AREA_NAME': [], 'STATN': []}

In [33]:
f0.include_list_filter


Out[33]:
{'MYEAR': ['2016', '2017'],
 'SEA_AREA_NAME': ['Byfjorden',
  'Gullmarn centralbassäng',
  'Havstensfjorden',
  'Rivö fjord'],
 'STATN': []}

In [ ]:

Quality factor Nutrients


In [ ]:
lv_workspace.initiate_quality_factors()

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]: