import intake
import hvplot.pandas
import hvplot.xarray
import cook_inlet_catalogs as cic
import holoviews as hv
CTD Transects (GWA): Six repeat transects in Cook Inlet¶
The Kachemak Bay Research Reserve (KBRR) and NOAA Kasitsna Bay Laboratory jointly work to complete oceanographic monitoring in Kachemak Bay and lower Cook Inlet, in order to provide the physical data needed for comprehensive restoration monitoring in the Exxon Valdez oil spill (EVOS) affected area. This project utilized small boat oceanographic and plankton surveys at existing KBRR water quality monitoring stations to assess spatial, seasonal and inter-annual variability in water mass movement. In addition, this work leveraged information from previous oceanographic surveys in the region, provided environmental information that aided a concurrent Gulf Watch benthic monitoring project, and benefited from a new NOAA ocean circulation model for Cook Inlet.
Surveys are conducted annually along five primary transects; two in Kachemak Bay and three in lower Cook Inlet, Alaska. Oceanographic data were collected via vertical CTD casts from surface to bottom, zooplankton and phytoplankton tows were made in the upper water column, and seabird and marine mammal observations were performed opportunistically. We also collect meteorological data and water quality measurements in Homer Harbor and Anchor Point year-round at stations as part of our National Estuarine Research Reserve (NERR) System-wide Monitoring program in Seldovia and Homer harbors, and in ice-free months at a mooring near the head of Kachemak Bay.
Project files and further description can be found here: https://gulf-of-alaska.portal.aoos.org/#metadata/4e28304c-22a1-4976-8881-7289776e4173/project
cat = intake.open_catalog(cic.utils.cat_path("ctd_transects_gwa"))
Plot all datasets in catalog¶
dd, ddlabels = cic.utils.combine_datasets_for_map(cat)
dd.hvplot(**cat.metadata["map"]) * ddlabels.hvplot(**cat.metadata["maplabels"])
List available datasets in the catalog¶
dataset_ids = list(cat)
dataset_ids
['transect_3-2012-05-02',
'transect_3-2012-07-29',
'transect_3-2012-10-29',
'transect_3-2013-04-20',
'transect_3-2013-07-19',
'transect_3-2013-11-08',
'transect_3-2014-04-11',
'transect_3-2014-07-22',
'transect_3-2014-10-13',
'transect_3-2015-02-22',
'transect_3-2015-04-12',
'transect_3-2015-11-04',
'transect_3-2016-02-14',
'transect_3-2016-04-11',
'transect_3-2016-08-29',
'transect_3-2017-04-19',
'transect_3-2017-07-25',
'transect_3-2018-06-25',
'transect_3-2018-07-26',
'transect_3-2018-09-13',
'transect_3-2019-02-08',
'transect_3-2019-05-14',
'transect_3-2019-07-25',
'transect_3-2019-09-16',
'transect_3-2020-07-29',
'transect_3-2021-04-16',
'transect_3-2021-07-16',
'transect_4-2012-05-02',
'transect_4-2012-05-31',
'transect_4-2012-06-05_A',
'transect_4-2012-06-05_B',
'transect_4-2012-07-31',
'transect_4-2012-08-15',
'transect_4-2012-10-29',
'transect_4-2013-02-12',
'transect_4-2013-04-21',
'transect_4-2013-06-06',
'transect_4-2013-07-19',
'transect_4-2013-10-29',
'transect_4-2014-02-15',
'transect_4-2014-04-11',
'transect_4-2014-07-21',
'transect_4-2014-08-13',
'transect_4-2014-10-13',
'transect_4-2015-02-12',
'transect_4-2015-02-24',
'transect_4-2015-04-08',
'transect_4-2015-08-14',
'transect_4-2015-09-24',
'transect_4-2015-10-19',
'transect_4-2015-11-03',
'transect_4-2015-11-04',
'transect_4-2015-12-10',
'transect_4-2016-02-09',
'transect_4-2016-04-11',
'transect_4-2016-07-27',
'transect_4-2016-10-13',
'transect_4-2016-12-13',
'transect_4-2017-04-20',
'transect_4-2017-07-25',
'transect_4-2017-10-17',
'transect_4-2018-04-23',
'transect_4-2018-06-25',
'transect_4-2018-07-24',
'transect_4-2018-09-13',
'transect_4-2019-02-07',
'transect_4-2019-05-14',
'transect_4-2019-07-25',
'transect_4-2019-09-16',
'transect_4-2020-02-14',
'transect_4-2020-07-23',
'transect_4-2020-09-21',
'transect_4-2021-02-17',
'transect_4-2021-04-16',
'transect_4-2021-07-16',
'transect_4-2021-09-17',
'transect_4-2022-03-01',
'transect_4-2022-04-13',
'transect_4-2022-07-23',
'transect_6-2012-05-03',
'transect_6-2012-07-30',
'transect_6-2012-10-28',
'transect_6-2013-04-19',
'transect_6-2013-07-21',
'transect_6-2013-11-06',
'transect_6-2014-04-06',
'transect_6-2014-07-23',
'transect_6-2014-10-18',
'transect_6-2015-02-23',
'transect_6-2015-04-08',
'transect_6-2015-08-14',
'transect_6-2016-02-15',
'transect_6-2016-04-10',
'transect_6-2016-08-31',
'transect_6-2016-12-12',
'transect_6-2017-04-18',
'transect_6-2017-07-26',
'transect_6-2017-11-02',
'transect_6-2018-07-18',
'transect_6-2018-09-17',
'transect_6-2019-02-08',
'transect_6-2019-05-12',
'transect_6-2019-07-25',
'transect_6-2020-07-24',
'transect_6-2020-09-20',
'transect_6-2021-02-16',
'transect_6-2021-04-14',
'transect_6-2021-07-21',
'transect_6-2021-10-05',
'transect_6-2022-02-28',
'transect_6-2022-04-12',
'transect_6-2022-07-21',
'transect_7-2012-07-30',
'transect_7-2012-10-28',
'transect_7-2013-04-20',
'transect_7-2013-07-18',
'transect_7-2014-02-17',
'transect_7-2014-04-07',
'transect_7-2014-07-24',
'transect_7-2014-10-17',
'transect_7-2014-10-18',
'transect_7-2015-02-24',
'transect_7-2015-04-13',
'transect_7-2015-08-14',
'transect_7-2016-02-16',
'transect_7-2016-08-30',
'transect_7-2016-12-13',
'transect_7-2017-04-19',
'transect_7-2017-07-26',
'transect_7-2017-11-02',
'transect_7-2018-03-27',
'transect_7-2018-07-18',
'transect_7-2018-09-17',
'transect_7-2019-02-08',
'transect_7-2019-05-12',
'transect_7-2019-07-25',
'transect_7-2019-09-19',
'transect_7-2020-07-24',
'transect_7-2020-09-20',
'transect_7-2021-02-16',
'transect_7-2021-04-14',
'transect_7-2021-07-21',
'transect_7-2021-10-05',
'transect_7-2022-02-28',
'transect_7-2022-04-12',
'transect_7-2022-07-21',
'transect_9-2012-02-14',
'transect_9-2012-03-14',
'transect_9-2012-04-10',
'transect_9-2012-04-26',
'transect_9-2012-05-31_A',
'transect_9-2012-05-31_B',
'transect_9-2012-06-05_A',
'transect_9-2012-06-05_B',
'transect_9-2012-06-27',
'transect_9-2012-07-02',
'transect_9-2012-07-21',
'transect_9-2012-08-03',
'transect_9-2012-08-15',
'transect_9-2012-08-26',
'transect_9-2012-08-31',
'transect_9-2012-09-21_A',
'transect_9-2012-09-21_B',
'transect_9-2012-09-21_C',
'transect_9-2012-09-21_D',
'transect_9-2012-09-21_E',
'transect_9-2012-10-12',
'transect_9-2012-10-29',
'transect_9-2013-01-04',
'transect_9-2013-02-12',
'transect_9-2013-03-15',
'transect_9-2013-04-21',
'transect_9-2013-05-21',
'transect_9-2013-06-06',
'transect_9-2013-06-19',
'transect_9-2013-06-28',
'transect_9-2013-07-05',
'transect_9-2013-07-09',
'transect_9-2013-07-22',
'transect_9-2013-08-07',
'transect_9-2013-08-30',
'transect_9-2013-09-25',
'transect_9-2013-10-29',
'transect_9-2013-12-03',
'transect_9-2014-01-09',
'transect_9-2014-02-15',
'transect_9-2014-03-28',
'transect_9-2014-04-11',
'transect_9-2014-05-28',
'transect_9-2014-06-18',
'transect_9-2014-07-21',
'transect_9-2014-08-13',
'transect_9-2014-10-19',
'transect_9-2014-11-25',
'transect_9-2014-12-17',
'transect_9-2015-01-16',
'transect_9-2015-02-12',
'transect_9-2015-02-24',
'transect_9-2015-03-31',
'transect_9-2015-04-08',
'transect_9-2015-05-28',
'transect_9-2015-06-26',
'transect_9-2015-07-10',
'transect_9-2015-07-29',
'transect_9-2015-08-14',
'transect_9-2015-09-04',
'transect_9-2015-09-24',
'transect_9-2015-10-19',
'transect_9-2015-11-04',
'transect_9-2015-12-10',
'transect_9-2016-01-07',
'transect_9-2016-02-09',
'transect_9-2016-04-07',
'transect_9-2016-05-12',
'transect_9-2016-06-16',
'transect_9-2016-07-27',
'transect_9-2016-09-23',
'transect_9-2016-10-13',
'transect_9-2016-11-10',
'transect_9-2016-12-13',
'transect_9-2017-01-11',
'transect_9-2017-02-07',
'transect_9-2017-03-28',
'transect_9-2017-04-20',
'transect_9-2017-05-30',
'transect_9-2017-06-28',
'transect_9-2017-07-24',
'transect_9-2017-08-24',
'transect_9-2017-09-22',
'transect_9-2017-10-17',
'transect_9-2017-11-07',
'transect_9-2017-12-14',
'transect_9-2018-01-17',
'transect_9-2018-03-02',
'transect_9-2018-03-27',
'transect_9-2018-04-23',
'transect_9-2018-05-24',
'transect_9-2018-06-22',
'transect_9-2018-07-24',
'transect_9-2018-08-23',
'transect_9-2018-09-13',
'transect_9-2018-10-17',
'transect_9-2018-11-08',
'transect_9-2018-12-06',
'transect_9-2019-02-07',
'transect_9-2019-03-19',
'transect_9-2019-04-24',
'transect_9-2019-05-14',
'transect_9-2019-06-19',
'transect_9-2019-07-23',
'transect_9-2019-09-16',
'transect_9-2019-10-30',
'transect_9-2019-11-15',
'transect_9-2019-12-12',
'transect_9-2020-02-06',
'transect_9-2020-03-18',
'transect_9-2020-06-04',
'transect_9-2020-07-24',
'transect_9-2020-08-14',
'transect_9-2020-09-21',
'transect_9-2020-10-15',
'transect_9-2020-12-28',
'transect_9-2021-01-13',
'transect_9-2021-02-17',
'transect_9-2021-03-23',
'transect_9-2021-04-16',
'transect_9-2021-05-06',
'transect_9-2021-06-21',
'transect_9-2021-07-16',
'transect_9-2021-08-17',
'transect_9-2021-09-17',
'transect_9-2021-10-21',
'transect_9-2021-11-14',
'transect_9-2021-12-18',
'transect_9-2022-01-31',
'transect_9-2022-03-01',
'transect_9-2022-03-22',
'transect_9-2022-04-13',
'transect_9-2022-05-23',
'transect_9-2022-06-24',
'transect_9-2022-07-23',
'transect_9-2022-08-24',
'transect_AlongBay-2012-08-15',
'transect_AlongBay-2013-02-12',
'transect_AlongBay-2013-02-13_A',
'transect_AlongBay-2013-02-13_B',
'transect_AlongBay-2013-06-06',
'transect_AlongBay-2014-03-28',
'transect_AlongBay-2014-05-28',
'transect_AlongBay-2014-08-14',
'transect_AlongBay-2015-07-10',
'transect_AlongBay-2015-08-14',
'transect_AlongBay-2016-01-07',
'transect_AlongBay-2016-05-12',
'transect_AlongBay-2016-06-16',
'transect_AlongBay-2016-07-27',
'transect_AlongBay-2017-01-11',
'transect_AlongBay-2017-02-07',
'transect_AlongBay-2017-03-28',
'transect_AlongBay-2017-04-20',
'transect_AlongBay-2017-05-30',
'transect_AlongBay-2017-06-28',
'transect_AlongBay-2017-07-24',
'transect_AlongBay-2017-07-26',
'transect_AlongBay-2017-08-24',
'transect_AlongBay-2017-09-22',
'transect_AlongBay-2017-10-20',
'transect_AlongBay-2017-11-02',
'transect_AlongBay-2017-11-07',
'transect_AlongBay-2017-12-14',
'transect_AlongBay-2018-01-17',
'transect_AlongBay-2018-03-02',
'transect_AlongBay-2018-03-27',
'transect_AlongBay-2018-04-23',
'transect_AlongBay-2018-05-24',
'transect_AlongBay-2018-06-22',
'transect_AlongBay-2018-07-18',
'transect_AlongBay-2018-08-23',
'transect_AlongBay-2018-09-17',
'transect_AlongBay-2018-10-17',
'transect_AlongBay-2018-11-08',
'transect_AlongBay-2018-12-06',
'transect_AlongBay-2019-02-07',
'transect_AlongBay-2019-03-19',
'transect_AlongBay-2019-04-24',
'transect_AlongBay-2019-05-14',
'transect_AlongBay-2019-06-19',
'transect_AlongBay-2019-07-23',
'transect_AlongBay-2019-10-30',
'transect_AlongBay-2019-11-15',
'transect_AlongBay-2019-12-12',
'transect_AlongBay-2020-02-06',
'transect_AlongBay-2020-03-18',
'transect_AlongBay-2020-06-04',
'transect_AlongBay-2020-07-08',
'transect_AlongBay-2020-07-23',
'transect_AlongBay-2020-08-14',
'transect_AlongBay-2020-09-20',
'transect_AlongBay-2020-10-15',
'transect_AlongBay-2020-12-28',
'transect_AlongBay-2021-01-13',
'transect_AlongBay-2021-02-16',
'transect_AlongBay-2021-03-23',
'transect_AlongBay-2021-04-14',
'transect_AlongBay-2021-04-16',
'transect_AlongBay-2021-05-06',
'transect_AlongBay-2021-06-21',
'transect_AlongBay-2021-07-21',
'transect_AlongBay-2021-08-17',
'transect_AlongBay-2021-10-04',
'transect_AlongBay-2021-10-05',
'transect_AlongBay-2021-10-21',
'transect_AlongBay-2021-11-14',
'transect_AlongBay-2021-12-18',
'transect_AlongBay-2022-01-31',
'transect_AlongBay-2022-02-28',
'transect_AlongBay-2022-03-21',
'transect_AlongBay-2022-04-12',
'transect_AlongBay-2022-05-23',
'transect_AlongBay-2022-06-24',
'transect_AlongBay-2022-07-21',
'transect_AlongBay-2022-08-24']
Select one dataset to investigate¶
try:
dataset_id = dataset_ids[2]
except:
dataset_id = dataset_ids[0]
print(dataset_id)
dd = cat[dataset_id].read()
dd
transect_3-2012-10-29
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
Cell In[5], line 7
4 dataset_id = dataset_ids[0]
5 print(dataset_id)
----> 7 dd = cat[dataset_id].read()
8 dd
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/readers.py:121, in BaseReader.read(self, *args, **kwargs)
119 kw.update(kwargs)
120 args = kw.pop("args", ()) or args
--> 121 return self._read(*args, **kw)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/convert.py:631, in Pipeline._read(self, discover, **kwargs)
629 data = self._read_stage_n(i, data=data, **kw)
630 else:
--> 631 data = self._read_stage_n(i, discover=discover, **kw)
632 return data
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/convert.py:620, in Pipeline._read_stage_n(self, stage, discover, **kwargs)
618 return func.discover(*arg, **kw2)
619 else:
--> 620 return func.read(*arg, **kw2)
621 else:
622 return func(*arg, **kw2)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/readers.py:121, in BaseReader.read(self, *args, **kwargs)
119 kw.update(kwargs)
120 args = kw.pop("args", ()) or args
--> 121 return self._read(*args, **kw)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/readers.py:176, in FileReader._read(self, data, **kw)
174 if self.storage_options and data.storage_options:
175 kw["storage_options"] = data.storage_options
--> 176 return self._func(**kw)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/parsers/readers.py:1026, in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)
1013 kwds_defaults = _refine_defaults_read(
1014 dialect,
1015 delimiter,
(...) 1022 dtype_backend=dtype_backend,
1023 )
1024 kwds.update(kwds_defaults)
-> 1026 return _read(filepath_or_buffer, kwds)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/parsers/readers.py:620, in _read(filepath_or_buffer, kwds)
617 _validate_names(kwds.get("names", None))
619 # Create the parser.
--> 620 parser = TextFileReader(filepath_or_buffer, **kwds)
622 if chunksize or iterator:
623 return parser
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/parsers/readers.py:1620, in TextFileReader.__init__(self, f, engine, **kwds)
1617 self.options["has_index_names"] = kwds["has_index_names"]
1619 self.handles: IOHandles | None = None
-> 1620 self._engine = self._make_engine(f, self.engine)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/parsers/readers.py:1880, in TextFileReader._make_engine(self, f, engine)
1878 if "b" not in mode:
1879 mode += "b"
-> 1880 self.handles = get_handle(
1881 f,
1882 mode,
1883 encoding=self.options.get("encoding", None),
1884 compression=self.options.get("compression", None),
1885 memory_map=self.options.get("memory_map", False),
1886 is_text=is_text,
1887 errors=self.options.get("encoding_errors", "strict"),
1888 storage_options=self.options.get("storage_options", None),
1889 )
1890 assert self.handles is not None
1891 f = self.handles.handle
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/common.py:728, in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
725 codecs.lookup_error(errors)
727 # open URLs
--> 728 ioargs = _get_filepath_or_buffer(
729 path_or_buf,
730 encoding=encoding,
731 compression=compression,
732 mode=mode,
733 storage_options=storage_options,
734 )
736 handle = ioargs.filepath_or_buffer
737 handles: list[BaseBuffer]
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/pandas/io/common.py:430, in _get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode, storage_options)
427 pass
429 try:
--> 430 file_obj = fsspec.open(
431 filepath_or_buffer, mode=fsspec_mode, **(storage_options or {})
432 ).open()
433 # GH 34626 Reads from Public Buckets without Credentials needs anon=True
434 except tuple(err_types_to_retry_with_anon):
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/core.py:491, in open(urlpath, mode, compression, encoding, errors, protocol, newline, expand, **kwargs)
433 """Given a path or paths, return one ``OpenFile`` object.
434
435 Parameters
(...) 488 https://filesystem-spec.readthedocs.io/en/latest/api.html#other-known-implementations
489 """
490 expand = DEFAULT_EXPAND if expand is None else expand
--> 491 out = open_files(
492 urlpath=[urlpath],
493 mode=mode,
494 compression=compression,
495 encoding=encoding,
496 errors=errors,
497 protocol=protocol,
498 newline=newline,
499 expand=expand,
500 **kwargs,
501 )
502 if not out:
503 raise FileNotFoundError(urlpath)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/core.py:295, in open_files(urlpath, mode, compression, encoding, errors, name_function, num, protocol, newline, auto_mkdir, expand, **kwargs)
216 def open_files(
217 urlpath,
218 mode="rb",
(...) 228 **kwargs,
229 ):
230 """Given a path or paths, return a list of ``OpenFile`` objects.
231
232 For writing, a str path must contain the "*" character, which will be filled
(...) 293 https://filesystem-spec.readthedocs.io/en/latest/api.html#other-known-implementations
294 """
--> 295 fs, fs_token, paths = get_fs_token_paths(
296 urlpath,
297 mode,
298 num=num,
299 name_function=name_function,
300 storage_options=kwargs,
301 protocol=protocol,
302 expand=expand,
303 )
304 if fs.protocol == "file":
305 fs.auto_mkdir = auto_mkdir
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/core.py:667, in get_fs_token_paths(urlpath, mode, num, name_function, storage_options, protocol, expand)
665 inkwargs["fo"] = urls
666 paths, protocol, _ = chain[0]
--> 667 fs = filesystem(protocol, **inkwargs)
668 if isinstance(urlpath, (list, tuple, set)):
669 pchains = [
670 _un_chain(stringify_path(u), storage_options or {})[0] for u in urlpath
671 ]
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/registry.py:322, in filesystem(protocol, **storage_options)
315 warnings.warn(
316 "The 'arrow_hdfs' protocol has been deprecated and will be "
317 "removed in the future. Specify it as 'hdfs'.",
318 DeprecationWarning,
319 )
321 cls = get_filesystem_class(protocol)
--> 322 return cls(**storage_options)
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/spec.py:81, in _Cached.__call__(cls, *args, **kwargs)
79 return cls._cache[token]
80 else:
---> 81 obj = super().__call__(*args, **kwargs)
82 # Setting _fs_token here causes some static linters to complain.
83 obj._fs_token_ = token
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/implementations/cached.py:762, in SimpleCacheFileSystem.__init__(self, **kwargs)
760 for key in ["cache_check", "expiry_time", "check_files"]:
761 kw[key] = False
--> 762 super().__init__(**kw)
763 for storage in self.storage:
764 if not os.path.exists(storage):
File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/fsspec/implementations/cached.py:137, in CachingFileSystem.__init__(self, target_protocol, cache_storage, cache_check, check_files, expiry_time, target_options, fs, same_names, compression, cache_mapper, **kwargs)
135 else:
136 storage = cache_storage
--> 137 os.makedirs(storage[-1], exist_ok=True)
138 self.storage = storage
139 self.kwargs = target_options or {}
File <frozen os>:215, in makedirs(name, mode, exist_ok)
File <frozen os>:215, in makedirs(name, mode, exist_ok)
File <frozen os>:225, in makedirs(name, mode, exist_ok)
PermissionError: [Errno 13] Permission denied: '/home/kristen'
Plot one dataset¶
keys = list(cat[dataset_id].metadata["plots"].keys())
print(keys)
plots = []
for key in keys:
plot_kwargs = cat[dataset_id].metadata["plots"][key]
if "clim" in plot_kwargs and isinstance(plot_kwargs["clim"], list):
plot_kwargs["clim"] = tuple(plot_kwargs["clim"])
if "dynamic" in plot_kwargs:
plot_kwargs["dynamic"] = False
plots.append(cat[dataset_id].ToHvPlot(**plot_kwargs).read())
hv.Layout(plots).cols(1)