Remove old stuff
This commit is contained in:
parent
76ec160d6a
commit
2f077bd522
@ -1,7 +0,0 @@
|
|||||||
# stac-catalog
|
|
||||||
|
|
||||||
```
|
|
||||||
# Make and activate a python environment
|
|
||||||
pip install -r requirements.txt
|
|
||||||
./run.sh
|
|
||||||
```
|
|
@ -1,130 +0,0 @@
|
|||||||
# * Format of the rules is:
|
|
||||||
|
|
||||||
# [a1, a2, a3 ...[b1, b2, b3... [c1, c2, c3...]]]
|
|
||||||
|
|
||||||
# - The first level (a) defines which attributes are used to name the top level directory
|
|
||||||
# - The second level (b) defines which attributes are used to name the data files
|
|
||||||
# - The third level (c) defines which attributes are used as index keys
|
|
||||||
|
|
||||||
# * Rules can be grouped
|
|
||||||
|
|
||||||
# [a1, a2, a3 ...
|
|
||||||
# [b1, b2, b3... [c1, c2, c3...]]
|
|
||||||
# [B1, B2, B3... [C1, C2, C3...]]
|
|
||||||
# ]
|
|
||||||
|
|
||||||
# * A list of values can be given for an attribute
|
|
||||||
# [ ..., stream=enfo/efov, ... ]
|
|
||||||
# This will be used when matching rules.
|
|
||||||
|
|
||||||
# * Attributes can be typed
|
|
||||||
# Globally, at the begining of this file:
|
|
||||||
|
|
||||||
# refdate: Date;
|
|
||||||
|
|
||||||
# or in the context of a rule:
|
|
||||||
# [type=cl, ... [date:ClimateMonth, ...]]
|
|
||||||
|
|
||||||
# Typing attributes is done when the user's requests or the GRIB values need to be modified before directories, files and indexes are created. For example, ClimateMonth will transform 2010-04-01 to 'may' internally.
|
|
||||||
|
|
||||||
# * Attributes can be optional
|
|
||||||
# [ step, levelist?, param ]
|
|
||||||
# They will be replaced internally by an empty value. It is also posiible to provide a default subtitution value: e.g. [domain?g] will consider the domain to be 'g' if missing.
|
|
||||||
|
|
||||||
# * Attributes can be removed:
|
|
||||||
# [grid-]
|
|
||||||
# This is useful to remove attributes present in the GRIB that should not be ignored
|
|
||||||
|
|
||||||
# * Rules are matched:
|
|
||||||
|
|
||||||
# - If the attributes are present in the GRIB/Request, or marked optional or ignored
|
|
||||||
# - If a list of possible value is provided, one of them must match, for example
|
|
||||||
# [ class, expver, stream=enfo/efov, date, time, domain ]
|
|
||||||
# will match either stream=enfo or stream=efov, all other attributes will be matched if they exist in the GRIB or user's request
|
|
||||||
|
|
||||||
# * On archive:
|
|
||||||
# - Attributes are extracted from the GRIB (namespace 'mars'), possibly modified by the attribute type
|
|
||||||
# - Only the first rule is used, so order is important
|
|
||||||
# - All GRIB attributes must be used by the rules, otherwise an error is raised
|
|
||||||
|
|
||||||
# * On retrieve:
|
|
||||||
# - Attributes are extracted from the user's request, possibly modified by the attribute type (e.g. for handling of U/V)
|
|
||||||
# - All the matching rules are considered
|
|
||||||
# - Only attributes listed in the rules are used to extract values from the user's request
|
|
||||||
|
|
||||||
|
|
||||||
# Default types
|
|
||||||
|
|
||||||
param: Param;
|
|
||||||
step: Step;
|
|
||||||
date: Date;
|
|
||||||
hdate: Date;
|
|
||||||
refdate: Date;
|
|
||||||
latitude: Double;
|
|
||||||
longitude: Double;
|
|
||||||
levelist: Double;
|
|
||||||
grid: Grid;
|
|
||||||
expver: Expver;
|
|
||||||
|
|
||||||
time: Time;
|
|
||||||
fcmonth: Integer;
|
|
||||||
|
|
||||||
number: Integer;
|
|
||||||
frequency: Integer;
|
|
||||||
direction: Integer;
|
|
||||||
channel: Integer;
|
|
||||||
|
|
||||||
instrument: Integer;
|
|
||||||
ident: Integer;
|
|
||||||
|
|
||||||
diagnostic: Integer;
|
|
||||||
iteration: Integer;
|
|
||||||
system: Integer;
|
|
||||||
method: Integer;
|
|
||||||
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# These are the rules for the Climate DT
|
|
||||||
|
|
||||||
# clte/wave
|
|
||||||
[ class=d1, dataset=climate-dt, activity, experiment, generation, model, realization, expver, stream=clte/wave, date
|
|
||||||
[ resolution, type, levtype
|
|
||||||
[ time, levelist?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# clmn
|
|
||||||
[ class=d1, dataset=climate-dt, activity, experiment, generation, model, realization, expver, stream=clmn, year
|
|
||||||
[ month, resolution, type, levtype
|
|
||||||
[ levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# These are the rules for the Extremes DT
|
|
||||||
# oper/wave/lwda/lwwv
|
|
||||||
[ class=d1, dataset=extremes-dt, expver, stream=oper/wave/lwda/lwwv, date, time
|
|
||||||
[ resolution?, type, levtype
|
|
||||||
[ step, levelist?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
########################################################
|
|
||||||
# These are the rules for the On-Demand Extremes DT
|
|
||||||
# oper/wave
|
|
||||||
[ class=d1, dataset=on-demand-extremes-dt, expver, stream=oper/wave, date, time
|
|
||||||
[ type, levtype
|
|
||||||
[ step, levelist?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
########################################################
|
|
||||||
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
#
|
|
||||||
# These are the rules for rd
|
|
||||||
# oper/wave/lwda/lwwv
|
|
||||||
[ class=rd, expver, stream=oper/wave/lwda/lwwv/dcda/enfo, date, time, domain?
|
|
||||||
[ type, levtype
|
|
||||||
[ number?, step, levelist?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class=rd, expver, stream=mnth, domain?
|
|
||||||
[ type, levtype
|
|
||||||
[ date , time, step?, levelist?, param ]]
|
|
||||||
]
|
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@
|
|||||||
FROM python:3.12-slim
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
RUN pip install -r requirements.txt
|
|
||||||
|
|
||||||
CMD ["fastapi", "run", "main.py"]
|
|
@ -1 +0,0 @@
|
|||||||
from .fdb_schema_parser import FDBSchema, FDBSchemaFile, KeySpec, Key
|
|
@ -1,375 +0,0 @@
|
|||||||
import dataclasses
|
|
||||||
import json
|
|
||||||
from dataclasses import dataclass, field
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
import pe
|
|
||||||
from pe.actions import Pack
|
|
||||||
from pe.operators import Class, Star
|
|
||||||
|
|
||||||
from .fdb_types import FDB_type_to_implementation, FDBType
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class KeySpec:
|
|
||||||
"""
|
|
||||||
Represents the specification of a single key in an FDB schema file. For example in
|
|
||||||
```
|
|
||||||
[ class, expver, stream=lwda, date, time, domain?
|
|
||||||
[ type=ofb/mfb/oai
|
|
||||||
[ obsgroup, reportype ]]]
|
|
||||||
```
|
|
||||||
class, expver, type=ofdb/mfb/oai etc are the KeySpecs
|
|
||||||
|
|
||||||
These can have additional information such as: flags like `domain?`, allowed values like `type=ofb/mfb/oai`
|
|
||||||
or specify type information with `date: ClimateMonthly`
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
key: str
|
|
||||||
type: FDBType = field(default_factory=FDBType)
|
|
||||||
flag: str | None = None
|
|
||||||
values: tuple = field(default_factory=tuple)
|
|
||||||
comment: str = ""
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
repr = self.key
|
|
||||||
if self.flag:
|
|
||||||
repr += self.flag
|
|
||||||
# if self.type:
|
|
||||||
# repr += f":{self.type}"
|
|
||||||
if self.values:
|
|
||||||
repr += "=" + "/".join(self.values)
|
|
||||||
return repr
|
|
||||||
|
|
||||||
def matches(self, key, value):
|
|
||||||
# Sanity check!
|
|
||||||
if self.key != key:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Some keys have a set of allowed values type=ofb/mfb/oai
|
|
||||||
if self.values:
|
|
||||||
if value not in self.values:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Check the formatting of values like Time or Date
|
|
||||||
if self.type and not self.type.validate(value):
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def is_optional(self):
|
|
||||||
if self.flag is None:
|
|
||||||
return False
|
|
||||||
return "?" in self.flag
|
|
||||||
|
|
||||||
def is_allable(self):
|
|
||||||
if self.flag is None:
|
|
||||||
return False
|
|
||||||
return "*" in self.flag
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class Comment:
|
|
||||||
"Represents a comment node in the schema"
|
|
||||||
|
|
||||||
value: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class FDBSchemaTypeDef:
|
|
||||||
"Mapping between FDB schema key names and FDB Schema Types, i.e expver is of type Expver"
|
|
||||||
|
|
||||||
key: str
|
|
||||||
type: str
|
|
||||||
|
|
||||||
|
|
||||||
# This is the schema grammar written in PEG format
|
|
||||||
fdb_schema = pe.compile(
|
|
||||||
r"""
|
|
||||||
FDB < Line+ EOF
|
|
||||||
Line < Schema / Comment / TypeDef / empty
|
|
||||||
|
|
||||||
# Comments
|
|
||||||
Comment <- "#" ~non_eol*
|
|
||||||
non_eol <- [\x09\x20-\x7F] / non_ascii
|
|
||||||
non_ascii <- [\x80-\uD7FF\uE000-\U0010FFFF]
|
|
||||||
|
|
||||||
# Default Type Definitions
|
|
||||||
TypeDef < String ":" String ";"
|
|
||||||
|
|
||||||
# Schemas are the main attraction
|
|
||||||
# They're a tree of KeySpecs.
|
|
||||||
Schema < "[" KeySpecs (","? Schema)* "]"
|
|
||||||
|
|
||||||
# KeySpecs can be just a name i.e expver
|
|
||||||
# Can also have a type expver:int
|
|
||||||
# Or a flag expver?
|
|
||||||
# Or values expver=xxx
|
|
||||||
KeySpecs < KeySpec_ws ("," KeySpec_ws)*
|
|
||||||
KeySpec_ws < KeySpec
|
|
||||||
KeySpec <- key:String (flag:Flag)? (type:Type)? (values:Values)? ([ ]* comment:Comment)?
|
|
||||||
Flag <- ~("?" / "-" / "*")
|
|
||||||
Type <- ":" [ ]* String
|
|
||||||
Values <- "=" Value ("/" Value)*
|
|
||||||
|
|
||||||
# Low level stuff
|
|
||||||
Value <- ~([-a-zA-Z0-9_]+)
|
|
||||||
String <- ~([a-zA-Z0-9_]+)
|
|
||||||
EOF <- !.
|
|
||||||
empty <- ""
|
|
||||||
""",
|
|
||||||
actions={
|
|
||||||
"Schema": Pack(tuple),
|
|
||||||
"KeySpec": KeySpec,
|
|
||||||
"Values": Pack(tuple),
|
|
||||||
"Comment": Comment,
|
|
||||||
"TypeDef": FDBSchemaTypeDef,
|
|
||||||
},
|
|
||||||
ignore=Star(Class("\t\f\r\n ")),
|
|
||||||
# flags=pe.DEBUG,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def post_process(entries):
|
|
||||||
"Take the raw output from the PEG parser and split it into type definitions and schema entries."
|
|
||||||
typedefs = {}
|
|
||||||
schemas = []
|
|
||||||
for entry in entries:
|
|
||||||
match entry:
|
|
||||||
case c if isinstance(c, Comment):
|
|
||||||
pass
|
|
||||||
case t if isinstance(t, FDBSchemaTypeDef):
|
|
||||||
typedefs[t.key] = t.type
|
|
||||||
case s if isinstance(s, tuple):
|
|
||||||
schemas.append(s)
|
|
||||||
case _:
|
|
||||||
raise ValueError
|
|
||||||
return typedefs, tuple(schemas)
|
|
||||||
|
|
||||||
|
|
||||||
def determine_types(types, node):
|
|
||||||
"Recursively walk a schema tree and insert the type information."
|
|
||||||
if isinstance(node, tuple):
|
|
||||||
return [determine_types(types, n) for n in node]
|
|
||||||
return dataclasses.replace(node, type=types.get(node.key, FDBType()))
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Key:
|
|
||||||
key: str
|
|
||||||
value: Any
|
|
||||||
key_spec: KeySpec
|
|
||||||
reason: str
|
|
||||||
|
|
||||||
def str_value(self):
|
|
||||||
return self.key_spec.type.format(self.value)
|
|
||||||
|
|
||||||
def __bool__(self):
|
|
||||||
return self.reason in {"Matches", "Skipped", "Select All"}
|
|
||||||
|
|
||||||
def emoji(self):
|
|
||||||
return {"Matches": "✅", "Skipped": "⏭️", "Select All": "★"}.get(
|
|
||||||
self.reason, "❌"
|
|
||||||
)
|
|
||||||
|
|
||||||
def info(self):
|
|
||||||
return f"{self.emoji()} {self.key:<12}= {str(self.value):<12} ({self.key_spec}) {self.reason if not self else ''}"
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"{self.key}={self.key_spec.type.format(self.value)}"
|
|
||||||
|
|
||||||
def as_json(self):
|
|
||||||
return dict(
|
|
||||||
key=self.key,
|
|
||||||
value=self.str_value(),
|
|
||||||
reason=self.reason,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FDBSchema:
|
|
||||||
"""
|
|
||||||
Represents a parsed FDB Schema file.
|
|
||||||
Has methods to validate and convert request dictionaries to a mars request form with validation and type information.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, string, defaults: dict[str, str] = {}):
|
|
||||||
"""
|
|
||||||
1. Use a PEG parser on a schema string,
|
|
||||||
2. Separate the output into schemas and typedefs
|
|
||||||
3. Insert any concrete implementations of types from fdb_types.py defaulting to generic string type
|
|
||||||
4. Walk the schema tree and annotate it with type information.
|
|
||||||
"""
|
|
||||||
m = fdb_schema.match(string)
|
|
||||||
g = list(m.groups())
|
|
||||||
self._str_types, schemas = post_process(g)
|
|
||||||
self.types = {
|
|
||||||
key: FDB_type_to_implementation[type]
|
|
||||||
for key, type in self._str_types.items()
|
|
||||||
}
|
|
||||||
self.schemas = determine_types(self.types, schemas)
|
|
||||||
self.defaults = defaults
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return json.dumps(
|
|
||||||
dict(schemas=self.schemas, defaults=self.defaults), indent=4, default=repr
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def consume_key(
|
|
||||||
cls, key_spec: KeySpec, request: dict[str, Any]
|
|
||||||
) -> Key:
|
|
||||||
key = key_spec.key
|
|
||||||
try:
|
|
||||||
value = request[key]
|
|
||||||
except KeyError:
|
|
||||||
if key_spec.is_optional():
|
|
||||||
return Key(key_spec.key, "", key_spec, "Skipped")
|
|
||||||
if key_spec.is_allable():
|
|
||||||
return Key(key_spec.key, "", key_spec, "Select All")
|
|
||||||
else:
|
|
||||||
return Key(
|
|
||||||
key_spec.key, "", key_spec, "Key Missing"
|
|
||||||
)
|
|
||||||
|
|
||||||
if key_spec.matches(key, value):
|
|
||||||
return Key(
|
|
||||||
key_spec.key,
|
|
||||||
key_spec.type.parse(value),
|
|
||||||
key_spec,
|
|
||||||
"Matches",
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return Key(
|
|
||||||
key_spec.key, value, key_spec, "Incorrect Value"
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _DFS_match(
|
|
||||||
cls, tree: list, request: dict[str, Any]
|
|
||||||
) -> tuple[bool | list, list[Key]]:
|
|
||||||
"""Do a DFS on the schema tree, returning the deepest matching path
|
|
||||||
At each stage return whether we matched on this path, and the path itself.
|
|
||||||
|
|
||||||
When traversing the tree there are three cases to consider:
|
|
||||||
1. base case []
|
|
||||||
2. one schema [k, k, k, [k, k, k]]
|
|
||||||
3. list of schemas [[k,k,k], [k,k,k], [k,k,k]]
|
|
||||||
"""
|
|
||||||
# Case 1: Base Case
|
|
||||||
if not tree:
|
|
||||||
return True, []
|
|
||||||
|
|
||||||
# Case 2: [k, k, k, [k, k, k]]
|
|
||||||
if isinstance(tree[0], KeySpec):
|
|
||||||
node, *tree = tree
|
|
||||||
# Check if this node is in the request
|
|
||||||
match_result = cls.consume_key(node, request)
|
|
||||||
|
|
||||||
# If if isn't then terminate this path here
|
|
||||||
if not match_result:
|
|
||||||
return False, [match_result,] # fmt: skip
|
|
||||||
|
|
||||||
# Otherwise continue walking the tree and return the best result
|
|
||||||
matched, path = cls._DFS_match(tree, request)
|
|
||||||
|
|
||||||
# Don't put the key in the path if it's optional and we're skipping it.
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
path = [match_result,] + path # fmt: skip
|
|
||||||
|
|
||||||
return matched, path
|
|
||||||
|
|
||||||
# Case 3: [[k, k, k], [k, k, k]]
|
|
||||||
branches = []
|
|
||||||
for branch in tree:
|
|
||||||
matched, branch_path = cls._DFS_match(branch, request)
|
|
||||||
|
|
||||||
# If this branch matches, terminate the DFS and use this.
|
|
||||||
if matched:
|
|
||||||
return branch, branch_path
|
|
||||||
else:
|
|
||||||
branches.append(branch_path)
|
|
||||||
|
|
||||||
# If no branch matches, return the one with the deepest match
|
|
||||||
return False, max(branches, key=len)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _DFS_match_all(
|
|
||||||
cls, tree: list, request: dict[str, Any]
|
|
||||||
) -> list[list[Key]]:
|
|
||||||
"""Do a DFS on the schema tree, returning all matching paths or partial matches.
|
|
||||||
At each stage return all matching paths and the deepest partial matches.
|
|
||||||
|
|
||||||
When traversing the tree there are three cases to consider:
|
|
||||||
1. base case []
|
|
||||||
2. one schema [k, k, k, [k, k, k]]
|
|
||||||
3. list of schemas [[k,k,k], [k,k,k], [k,k,k]]
|
|
||||||
"""
|
|
||||||
# Case 1: Base Case
|
|
||||||
if not tree:
|
|
||||||
return [[]]
|
|
||||||
|
|
||||||
# Case 2: [k, k, k, [k, k, k]]
|
|
||||||
if isinstance(tree[0], KeySpec):
|
|
||||||
node, *tree = tree
|
|
||||||
# Check if this node is in the request
|
|
||||||
request_values = request.get(node.key, None)
|
|
||||||
|
|
||||||
if request_values is None:
|
|
||||||
# If the key is not in the request, return a partial match with Key Missing
|
|
||||||
return [[Key(node.key, "", node, "Key Missing")]]
|
|
||||||
|
|
||||||
# If the request value is a list, try to match each value
|
|
||||||
if isinstance(request_values, list):
|
|
||||||
all_matches = []
|
|
||||||
for value in request_values:
|
|
||||||
match_result = cls.consume_key(node, {node.key: value})
|
|
||||||
|
|
||||||
if match_result:
|
|
||||||
sub_matches = cls._DFS_match_all(tree, request)
|
|
||||||
for match in sub_matches:
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
match.insert(0, match_result)
|
|
||||||
all_matches.append(match)
|
|
||||||
|
|
||||||
return all_matches if all_matches else [[Key(node.key, "", node, "No Match Found")]]
|
|
||||||
else:
|
|
||||||
# Handle a single value
|
|
||||||
match_result = cls.consume_key(node, request)
|
|
||||||
|
|
||||||
# If it isn't then return a partial match with Key Missing
|
|
||||||
if not match_result:
|
|
||||||
return [[Key(node.key, "", node, "Key Missing")]]
|
|
||||||
|
|
||||||
# Continue walking the tree and get all matches
|
|
||||||
all_matches = cls._DFS_match_all(tree, request)
|
|
||||||
|
|
||||||
# Prepend the current match to all further matches
|
|
||||||
for match in all_matches:
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
match.insert(0, match_result)
|
|
||||||
|
|
||||||
return all_matches
|
|
||||||
|
|
||||||
# Case 3: [[k, k, k], [k, k, k]]
|
|
||||||
all_branch_matches = []
|
|
||||||
for branch in tree:
|
|
||||||
branch_matches = cls._DFS_match_all(branch, request)
|
|
||||||
all_branch_matches.extend(branch_matches)
|
|
||||||
|
|
||||||
# Return all of the deepest partial matches or complete matches
|
|
||||||
return all_branch_matches
|
|
||||||
|
|
||||||
def match_all(self, request: dict[str, Any]):
|
|
||||||
request = request | self.defaults
|
|
||||||
return self._DFS_match_all(self.schemas, request)
|
|
||||||
|
|
||||||
def match(self, request: dict[str, Any]):
|
|
||||||
request = request | self.defaults
|
|
||||||
return self._DFS_match(self.schemas, request)
|
|
||||||
|
|
||||||
|
|
||||||
class FDBSchemaFile(FDBSchema):
|
|
||||||
def __init__(self, path: str):
|
|
||||||
with open(path, "r") as f:
|
|
||||||
return super().__init__(f.read())
|
|
@ -1,83 +0,0 @@
|
|||||||
from dataclasses import dataclass
|
|
||||||
from typing import Any
|
|
||||||
import re
|
|
||||||
from collections import defaultdict
|
|
||||||
from datetime import datetime, date, time
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class FDBType:
|
|
||||||
"""
|
|
||||||
Holds information about how to format and validate a given FDB Schema type like Time or Expver
|
|
||||||
This base type represents a string and does no validation or formatting. It's the default type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
name: str = "String"
|
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
|
||||||
return self.name
|
|
||||||
|
|
||||||
def validate(self, s: Any) -> bool:
|
|
||||||
try:
|
|
||||||
self.parse(s)
|
|
||||||
return True
|
|
||||||
except (ValueError, AssertionError):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def format(self, s: Any) -> str:
|
|
||||||
return str(s).lower()
|
|
||||||
|
|
||||||
def parse(self, s: str) -> Any:
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Expver_FDBType(FDBType):
|
|
||||||
name: str = "Expver"
|
|
||||||
|
|
||||||
def parse(self, s: str) -> str:
|
|
||||||
assert bool(re.match(".{4}", s))
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Time_FDBType(FDBType):
|
|
||||||
name: str = "Time"
|
|
||||||
time_format = "%H%M"
|
|
||||||
|
|
||||||
def format(self, t: time) -> str:
|
|
||||||
return t.strftime(self.time_format)
|
|
||||||
|
|
||||||
def parse(self, s: datetime | str | int) -> time:
|
|
||||||
if isinstance(s, str):
|
|
||||||
assert len(s) == 4
|
|
||||||
return datetime.strptime(s, self.time_format).time()
|
|
||||||
if isinstance(s, datetime):
|
|
||||||
return s.time()
|
|
||||||
return self.parse(f"{s:04}")
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Date_FDBType(FDBType):
|
|
||||||
name: str = "Date"
|
|
||||||
date_format: str = "%Y%m%d"
|
|
||||||
|
|
||||||
def format(self, d: Any) -> str:
|
|
||||||
if isinstance(d, date):
|
|
||||||
return d.strftime(self.date_format)
|
|
||||||
if isinstance(d, int):
|
|
||||||
return f"{d:08}"
|
|
||||||
else:
|
|
||||||
return d
|
|
||||||
|
|
||||||
def parse(self, s: datetime | str | int) -> date:
|
|
||||||
if isinstance(s, str):
|
|
||||||
return datetime.strptime(s, self.date_format).date()
|
|
||||||
elif isinstance(s, datetime):
|
|
||||||
return s.date()
|
|
||||||
return self.parse(f"{s:08}")
|
|
||||||
|
|
||||||
|
|
||||||
FDB_type_to_implementation = defaultdict(lambda: FDBType()) | {
|
|
||||||
cls.name: cls() for cls in [Expver_FDBType, Time_FDBType, Date_FDBType]
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
162
backend/main.py
162
backend/main.py
@ -1,162 +0,0 @@
|
|||||||
from collections import defaultdict
|
|
||||||
from typing import Any, Dict
|
|
||||||
import yaml
|
|
||||||
import os
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Request
|
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
|
||||||
from fastapi.staticfiles import StaticFiles
|
|
||||||
from fdb_schema import FDBSchemaFile
|
|
||||||
from fastapi.responses import RedirectResponse
|
|
||||||
from fastapi.templating import Jinja2Templates
|
|
||||||
import json
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
import os
|
|
||||||
os.environ["FDB5_CONFIG_FILE"] = "/home/eouser/destine_remoteFDB_config.yaml"
|
|
||||||
|
|
||||||
import pyfdb
|
|
||||||
|
|
||||||
fdb = pyfdb.FDB()
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
app.add_middleware(
|
|
||||||
CORSMiddleware,
|
|
||||||
allow_origins=["*"],
|
|
||||||
allow_credentials=True,
|
|
||||||
allow_methods=["*"],
|
|
||||||
allow_headers=["*"],
|
|
||||||
)
|
|
||||||
|
|
||||||
app.mount("/app", StaticFiles(directory="./webapp"), name="static")
|
|
||||||
templates = Jinja2Templates(directory="./webapp")
|
|
||||||
|
|
||||||
config = {
|
|
||||||
"message": "",
|
|
||||||
"fdb_schema": "standard_fdb_schema",
|
|
||||||
"mars_language": "language.yaml"
|
|
||||||
}
|
|
||||||
if os.path.exists("../config.yaml"):
|
|
||||||
with open("../config.yaml", "r") as f:
|
|
||||||
config = config | yaml.safe_load(f)
|
|
||||||
|
|
||||||
print("Loading compressed_cache.json")
|
|
||||||
with open("../cache/compressed_cache.json", "r") as f:
|
|
||||||
list_cache = json.load(f)
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
|
||||||
async def redirect_to_app(request: Request):
|
|
||||||
return templates.TemplateResponse("index.html", {"request": request, "config": config})
|
|
||||||
|
|
||||||
with open(config["mars_language"], "r") as f:
|
|
||||||
mars_language = yaml.safe_load(f)["_field"]
|
|
||||||
|
|
||||||
###### Load FDB Schema
|
|
||||||
schema = FDBSchemaFile(config["fdb_schema"])
|
|
||||||
|
|
||||||
def request_to_dict(request: Request) -> Dict[str, Any]:
|
|
||||||
# Convert query parameters to dictionary format
|
|
||||||
request_dict = dict(request.query_params)
|
|
||||||
for key, value in request_dict.items():
|
|
||||||
# Convert comma-separated values into lists
|
|
||||||
if "," in value:
|
|
||||||
request_dict[key] = value.split(",")
|
|
||||||
return request_dict
|
|
||||||
|
|
||||||
@app.get("/tree")
|
|
||||||
async def get_tree(request: Request):
|
|
||||||
# Convert query parameters to dictionary format
|
|
||||||
request_dict = request_to_dict(request)
|
|
||||||
|
|
||||||
# Run the schema matching logic
|
|
||||||
matches = schema.match_all(request_dict)
|
|
||||||
|
|
||||||
# Only take the longest matches
|
|
||||||
max_len = max(len(m) for m in matches)
|
|
||||||
matches = [m for m in matches if len(m) == max_len]
|
|
||||||
|
|
||||||
# Take the ends of all partial matches, ignore those that are full matches
|
|
||||||
# Full matches are indicated by the last key having boolean value True
|
|
||||||
key_frontier = defaultdict(list)
|
|
||||||
for match in matches:
|
|
||||||
if not match[-1]:
|
|
||||||
key_frontier[match[-1].key].append([m for m in match[:-1]])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def make_link(key_name, paths):
|
|
||||||
"""Take a MARS Key and information about which paths matched up to this point and use it to make a STAC Link"""
|
|
||||||
first_path = [str(p) for p in paths[0]]
|
|
||||||
href_template = f"/tree?{'&'.join(first_path)}{'&' if first_path else ''}{key_name}={{}}"
|
|
||||||
optional = [p[-1].key_spec.is_optional() for p in paths if len(p) > 0]
|
|
||||||
optional_str = "Yes" if all(optional) and len(optional) > 0 else ("Sometimes" if any(optional) else "No")
|
|
||||||
values_from_mars_language = mars_language.get(key_name, {}).get("values", [])
|
|
||||||
values = [v[0] if isinstance(v, list) else v for v in values_from_mars_language]
|
|
||||||
|
|
||||||
if all(isinstance(v, list) for v in values_from_mars_language):
|
|
||||||
value_descriptions = [v[-1] if len(v) > 1 else "" for v in values_from_mars_language]
|
|
||||||
else:
|
|
||||||
value_descriptions = [""] * len(values)
|
|
||||||
|
|
||||||
return {
|
|
||||||
"title": key_name,
|
|
||||||
"generalized_datacube:href_template": href_template,
|
|
||||||
"rel": "child",
|
|
||||||
"type": "application/json",
|
|
||||||
"generalized_datacube:dimension" : {
|
|
||||||
"type" : mars_language.get(key_name, {}).get("type", ""),
|
|
||||||
"description": mars_language.get(key_name, {}).get("description", ""),
|
|
||||||
"values" : values,
|
|
||||||
"value_descriptions" : value_descriptions,
|
|
||||||
"optional" : any(optional),
|
|
||||||
"multiple": True,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# "paths": set(tuple(f"{m.key}={m.value}" for m in p) for p in paths),
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def value_descriptions(key, values):
|
|
||||||
return {
|
|
||||||
v[0] : v[-1] for v in mars_language.get(key, {}).get("values", [])
|
|
||||||
if len(v) > 1 and v[0] in values
|
|
||||||
}
|
|
||||||
|
|
||||||
descriptions = {
|
|
||||||
key : {
|
|
||||||
"key" : key,
|
|
||||||
"values" : values,
|
|
||||||
"description" : mars_language.get(key, {}).get("description", ""),
|
|
||||||
"value_descriptions" : value_descriptions(key,values),
|
|
||||||
}
|
|
||||||
for key, values in request_dict.items()
|
|
||||||
}
|
|
||||||
|
|
||||||
# Format the response as a STAC collection
|
|
||||||
stac_collection = {
|
|
||||||
"type": "Collection",
|
|
||||||
"stac_version": "1.0.0",
|
|
||||||
"id": "partial-matches",
|
|
||||||
"description": "STAC collection representing potential children of this request",
|
|
||||||
"links": [
|
|
||||||
make_link(key_name, paths)
|
|
||||||
for key_name, paths in key_frontier.items()
|
|
||||||
],
|
|
||||||
"debug": {
|
|
||||||
"request": request_dict,
|
|
||||||
"descriptions": descriptions,
|
|
||||||
"matches" : matches,
|
|
||||||
# "paths" : [
|
|
||||||
# {
|
|
||||||
# "path" : {o.key : o.str_value() for o in path},
|
|
||||||
# "list" : [i["keys"] for i in fdb.list({o.key : o.str_value() for o in path}, keys=True)],
|
|
||||||
# "key" : key,
|
|
||||||
# } for key, paths in key_frontier.items() for path in paths
|
|
||||||
# ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stac_collection
|
|
@ -1,2 +0,0 @@
|
|||||||
fastapi[standard]
|
|
||||||
pe
|
|
@ -1,590 +0,0 @@
|
|||||||
|
|
||||||
# * Format of the rules is:
|
|
||||||
|
|
||||||
# [a1, a2, a3 ...[b1, b2, b3... [c1, c2, c3...]]]
|
|
||||||
|
|
||||||
# - The first level (a) defines which attributes are used to name the top level directory
|
|
||||||
# - The second level (b) defines which attributes are used to name the data files
|
|
||||||
# - The third level (c) defines which attributes are used as index keys
|
|
||||||
|
|
||||||
# * Rules can be grouped
|
|
||||||
|
|
||||||
# [a1, a2, a3 ...
|
|
||||||
# [b1, b2, b3... [c1, c2, c3...]]
|
|
||||||
# [B1, B2, B3... [C1, C2, C3...]]
|
|
||||||
# ]
|
|
||||||
|
|
||||||
# * A list of values can be given for an attribute
|
|
||||||
# [ ..., stream=enfo/efov, ... ]
|
|
||||||
# This will be used when matching rules.
|
|
||||||
|
|
||||||
# * Attributes can be typed
|
|
||||||
# Globally, at the begining of this file:
|
|
||||||
|
|
||||||
# refdate: Date;
|
|
||||||
|
|
||||||
# or in the context of a rule:
|
|
||||||
# [type=cl, ... [date:ClimateMonth, ...]]
|
|
||||||
|
|
||||||
# Typing attributes is done when the user's requests or the GRIB values need to be modified before directories, files and indexes are created. For example, ClimateMonth will transform 2010-04-01 to 'may' internally.
|
|
||||||
|
|
||||||
# * Attributes can be optional
|
|
||||||
# [ step, levelist?, param ]
|
|
||||||
# They will be replaced internally by an empty value. It is also posiible to provide a default subtitution value: e.g. [domain?g] will consider the domain to be 'g' if missing.
|
|
||||||
|
|
||||||
# * Attributes can be removed:
|
|
||||||
# [grid-]
|
|
||||||
# This is useful to remove attributes present in the GRIB that should not be ignored
|
|
||||||
|
|
||||||
# * Rules are matched:
|
|
||||||
|
|
||||||
# - If the attributes are present in the GRIB/Request, or marked optional or ignored
|
|
||||||
# - If a list of possible value is provided, one of them must match, for example
|
|
||||||
# [ class, expver, stream=enfo/efov, date, time, domain ]
|
|
||||||
# will match either stream=enfo or stream=efov, all other attributes will be matched if they exist in the GRIB or user's request
|
|
||||||
|
|
||||||
# * On archive:
|
|
||||||
# - Attributes are extracted from the GRIB (namespace 'mars'), possibly modified by the attribute type
|
|
||||||
# - Only the first rule is used, so order is important
|
|
||||||
# - All GRIB attributes must be used by the rules, otherwise an error is raised
|
|
||||||
|
|
||||||
# * On retrieve:
|
|
||||||
# - Attributes are extracted from the user's request, possibly modified by the attribute type (e.g. for handling of U/V)
|
|
||||||
# - All the matching rules are considered
|
|
||||||
# - Only attributes listed in the rules are used to extract values from the user's request
|
|
||||||
|
|
||||||
|
|
||||||
# Default types
|
|
||||||
|
|
||||||
param: Param;
|
|
||||||
step: Step;
|
|
||||||
date: Date;
|
|
||||||
hdate: Date;
|
|
||||||
refdate: Date;
|
|
||||||
latitude: Double;
|
|
||||||
longitude: Double;
|
|
||||||
levelist: Double;
|
|
||||||
grid: Grid;
|
|
||||||
expver: Expver;
|
|
||||||
|
|
||||||
time: Time;
|
|
||||||
fcmonth: Integer;
|
|
||||||
|
|
||||||
number: Integer;
|
|
||||||
frequency: Integer;
|
|
||||||
direction: Integer;
|
|
||||||
channel: Integer;
|
|
||||||
|
|
||||||
instrument: Integer;
|
|
||||||
ident: Integer;
|
|
||||||
|
|
||||||
diagnostic: Integer;
|
|
||||||
iteration: Integer;
|
|
||||||
system: Integer;
|
|
||||||
method: Integer;
|
|
||||||
|
|
||||||
# ???????
|
|
||||||
|
|
||||||
# reference: Integer;
|
|
||||||
# fcperiod: Integer;
|
|
||||||
|
|
||||||
# opttime: Integer;
|
|
||||||
# leadtime: Integer;
|
|
||||||
|
|
||||||
# quantile: ??????
|
|
||||||
# range: ??????
|
|
||||||
|
|
||||||
# band: Integer;
|
|
||||||
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# These rules must be first, otherwise fields of These
|
|
||||||
# classes will be index with the default rule for oper
|
|
||||||
[ class=ti/s2, expver, stream, date, time, model
|
|
||||||
[ origin, type, levtype, hdate?
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class=ms, expver, stream, date, time, country=de
|
|
||||||
[ domain, type, levtype, dbase, rki, rty, ty
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class=ms, expver, stream, date, time, country=it
|
|
||||||
[ domain, type, levtype, model, bcmodel, icmodel:First3
|
|
||||||
[ step, levelist?, param ]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class=el, expver, stream, date, time, domain
|
|
||||||
[ origin, type, levtype
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# The are the rules matching most of the fields
|
|
||||||
# oper/dcda
|
|
||||||
[ class, expver, stream=oper/dcda/scda, date, time, domain?
|
|
||||||
|
|
||||||
[ type=im/sim
|
|
||||||
[ step?, ident, instrument, channel ]]
|
|
||||||
|
|
||||||
[ type=ssd
|
|
||||||
[ step, param, ident, instrument, channel ]]
|
|
||||||
|
|
||||||
[ type=4i, levtype
|
|
||||||
[ step, iteration, levelist, param ]]
|
|
||||||
|
|
||||||
[ type=me, levtype
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
|
|
||||||
[ type=ef, levtype
|
|
||||||
[ step, levelist?, param, channel? ]]
|
|
||||||
|
|
||||||
[ type=ofb/mfb
|
|
||||||
[ obsgroup, reportype ]]
|
|
||||||
|
|
||||||
[ type, levtype
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
# dcwv/scwv/wave
|
|
||||||
[ class, expver, stream=dcwv/scwv/wave, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, param, frequency?, direction? ]]]
|
|
||||||
|
|
||||||
# enfo
|
|
||||||
[ class, expver, stream=enfo/efov, date, time, domain
|
|
||||||
|
|
||||||
[ type, levtype=dp, product?, section?
|
|
||||||
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
|
|
||||||
[ type=tu, levtype, reference
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype
|
|
||||||
[ step, quantile?, number?, levelist?, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
# waef/weov
|
|
||||||
[ class, expver, stream=waef/weov, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, number?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# enda
|
|
||||||
[ class, expver, stream=enda, date, time, domain
|
|
||||||
|
|
||||||
[ type=ef/em/es/ses, levtype
|
|
||||||
[ step, number?, levelist?, param, channel? ]]
|
|
||||||
|
|
||||||
[ type=ssd
|
|
||||||
[ step, number, param, ident, instrument, channel ]]
|
|
||||||
|
|
||||||
|
|
||||||
[ type, levtype
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# ewda
|
|
||||||
[ class, expver, stream=ewda, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, number?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# elda
|
|
||||||
[ class, expver, stream=elda, date, time, domain?
|
|
||||||
|
|
||||||
[ type=ofb/mfb
|
|
||||||
[ obsgroup, reportype ]]
|
|
||||||
|
|
||||||
[ type, levtype, anoffset
|
|
||||||
[ step, number?, levelist?, iteration?, param, channel? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# ewda
|
|
||||||
[ class, expver, stream=ewla, date, time, domain
|
|
||||||
[ type, levtype, anoffset
|
|
||||||
[ step, number?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
########################################################
|
|
||||||
# elda
|
|
||||||
[ class, expver, stream=lwda, date, time, domain?
|
|
||||||
|
|
||||||
[ type=ssd, anoffset
|
|
||||||
[ step, param, ident, instrument, channel ]]
|
|
||||||
|
|
||||||
[type=me, levtype, anoffset
|
|
||||||
[ number, step, levelist?, param]]
|
|
||||||
|
|
||||||
[ type=4i, levtype, anoffset
|
|
||||||
[ step, iteration, levelist, param ]]
|
|
||||||
|
|
||||||
[ type=ofb/mfb
|
|
||||||
[ obsgroup, reportype ]]
|
|
||||||
|
|
||||||
[ type, levtype, anoffset
|
|
||||||
[ step, levelist?, param]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# ewda
|
|
||||||
[ class, expver, stream=lwwv, date, time, domain
|
|
||||||
[ type, levtype, anoffset
|
|
||||||
[ step, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
########################################################
|
|
||||||
# amap
|
|
||||||
[ class, expver, stream=amap, date, time, domain
|
|
||||||
[ type, levtype, origin
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
# maed
|
|
||||||
[ class, expver, stream=maed, date, time, domain
|
|
||||||
[ type, levtype, origin
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
# mawv
|
|
||||||
[ class, expver, stream=mawv, date, time, domain
|
|
||||||
[ type, levtype, origin
|
|
||||||
[ step, param, frequency?, direction? ]]]
|
|
||||||
|
|
||||||
# cher
|
|
||||||
[ class, expver, stream=cher, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, levelist, param ]]]
|
|
||||||
|
|
||||||
|
|
||||||
# efhc
|
|
||||||
[ class, expver, stream=efhc, refdate, time, domain
|
|
||||||
[ type, levtype, date
|
|
||||||
[ step, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# efho
|
|
||||||
[ class, expver, stream=efho, date, time, domain
|
|
||||||
[ type, levtype, hdate
|
|
||||||
[ step, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
|
|
||||||
# efhs
|
|
||||||
[ class, expver, stream=efhs, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, quantile?, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# wehs
|
|
||||||
[ class, expver, stream=wehs, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, quantile?, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# kwbc
|
|
||||||
[ class, expver, stream=kwbc, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# ehmm
|
|
||||||
[ class, expver, stream=ehmm, date, time, domain
|
|
||||||
[ type, levtype, hdate
|
|
||||||
[ fcmonth, levelist?, param ]]]
|
|
||||||
|
|
||||||
|
|
||||||
# ammc/cwao/edzw/egrr/lfpw/rjtd/toga
|
|
||||||
[ class, expver, stream=ammc/cwao/edzw/egrr/lfpw/rjtd/toga/fgge, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
|
|
||||||
# enfh
|
|
||||||
[ class, expver, stream=enfh, date, time, domain
|
|
||||||
|
|
||||||
[ type, levtype=dp, hdate, product?, section?
|
|
||||||
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype, hdate
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# enwh
|
|
||||||
[ class, expver, stream=enwh, date, time, domain
|
|
||||||
[ type, levtype, hdate
|
|
||||||
[ step, number?, param, frequency?, direction? ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# sens
|
|
||||||
[ class, expver, stream=sens, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, diagnostic, iteration, levelist?, param ]]]
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# esmm
|
|
||||||
[ class, expver, stream=esmm, date, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ fcmonth, levelist?, param ]]]
|
|
||||||
# ewhc
|
|
||||||
[ class, expver, stream=ewhc, refdate, time, domain
|
|
||||||
[ type, levtype, date
|
|
||||||
[ step, number?, param, frequency?, direction? ]]]
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# ewho
|
|
||||||
[ class, expver, stream=ewho, date, time, domain
|
|
||||||
[ type, levtype, hdate
|
|
||||||
[ step, number?, param, frequency?, direction? ]]]
|
|
||||||
|
|
||||||
# mfam
|
|
||||||
[ class, expver, stream=mfam, date, time, domain
|
|
||||||
|
|
||||||
[ type=pb/pd, levtype, origin, system?, method
|
|
||||||
[ fcperiod, quantile, levelist?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcperiod, number?, levelist?, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
# mfhm
|
|
||||||
[ class, expver, stream=mfhm, refdate, time, domain
|
|
||||||
[ type, levtype, origin, system?, method, date?
|
|
||||||
[ fcperiod, number?, levelist?, param ]]]
|
|
||||||
# mfhw
|
|
||||||
[ class, expver, stream=mfhw, refdate, time, domain
|
|
||||||
[ type, levtype, origin, system?, method, date
|
|
||||||
[ step, number?, param ]]]
|
|
||||||
# mfwm
|
|
||||||
[ class, expver, stream=mfwm, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcperiod, number, param ]]]
|
|
||||||
# mhwm
|
|
||||||
[ class, expver, stream=mhwm, refdate, time, domain
|
|
||||||
[ type, levtype, origin, system?, method, date
|
|
||||||
[ fcperiod, number, param ]]]
|
|
||||||
|
|
||||||
# mmsf
|
|
||||||
[ class, expver, stream=mmsf, date, time, domain
|
|
||||||
|
|
||||||
[ type, levtype=dp, origin, product, section, system?, method
|
|
||||||
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# mnfc
|
|
||||||
[ class, expver, stream=mnfc, date, time, domain
|
|
||||||
|
|
||||||
[ type, levtype=dp, origin, product, section, system?, method
|
|
||||||
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# mnfh
|
|
||||||
[ class, expver, stream=mnfh, refdate, time, domain
|
|
||||||
[ type, levtype=dp, origin, product, section, system?, method, date
|
|
||||||
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
[ type, levtype, origin, system?, method, date?
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# mnfm
|
|
||||||
[ class, expver, stream=mnfm, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcperiod, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# mnfw
|
|
||||||
[ class, expver, stream=mnfw, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ step, number?, param ]]]
|
|
||||||
|
|
||||||
# ea/mnth
|
|
||||||
[ class=ea, expver, stream=mnth, date, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ time, step?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# mnth
|
|
||||||
[ class, expver, stream=mnth, domain
|
|
||||||
[ type=cl, levtype
|
|
||||||
[ date: ClimateMonthly, time, levelist?, param ]]
|
|
||||||
[ type, levtype
|
|
||||||
[ date , time, step?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# mofc
|
|
||||||
[ class, expver, stream=mofc, date, time, domain
|
|
||||||
[ type, levtype=dp, product, section, system?, method
|
|
||||||
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ step, number?, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# mofm
|
|
||||||
[ class, expver, stream=mofm, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ fcperiod, number, levelist?, param ]]]
|
|
||||||
|
|
||||||
# mmsa/msmm
|
|
||||||
[ class, expver, stream=mmsa, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcmonth, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
[ class, expver, stream=msmm, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcmonth, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# ocea
|
|
||||||
[ class, expver, stream=ocea, date, time, domain
|
|
||||||
[ type, levtype, product, section, system?, method
|
|
||||||
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
#=# seas
|
|
||||||
[ class, expver, stream=seas, date, time, domain
|
|
||||||
|
|
||||||
[ type, levtype=dp, product, section, system?, method
|
|
||||||
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
||||||
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# sfmm/smma
|
|
||||||
[ class, expver, stream=sfmm/smma, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ fcmonth, number?, levelist?, param ]]]
|
|
||||||
|
|
||||||
# supd
|
|
||||||
[ class=od, expver, stream=supd, date, time, domain
|
|
||||||
[ type, levtype, origin?, grid
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
# For era
|
|
||||||
[ class, expver, stream=supd, date, time, domain
|
|
||||||
[ type, levtype, grid- # The minus sign is here to consume 'grid', but don't index it
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
# swmm
|
|
||||||
[ class, expver, stream=swmm, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ fcmonth, number, param ]]]
|
|
||||||
|
|
||||||
# wamf
|
|
||||||
[ class, expver, stream=wamf, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ step, number?, param ]]]
|
|
||||||
|
|
||||||
# ea/wamo
|
|
||||||
[ class=ea, expver, stream=wamo, date, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ time, step?, param ]]]
|
|
||||||
|
|
||||||
# wamo
|
|
||||||
[ class, expver, stream=wamo, domain
|
|
||||||
[ type=cl, levtype
|
|
||||||
[ date: ClimateMonthly, time, param ]]
|
|
||||||
[ type, levtype
|
|
||||||
[ date, time, step?, param ]]]
|
|
||||||
|
|
||||||
# wamd
|
|
||||||
[ class, expver, stream=wamd, date, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ param ]]]
|
|
||||||
|
|
||||||
# wasf
|
|
||||||
[ class, expver, stream=wasf, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ step, number, param ]]]
|
|
||||||
# wmfm
|
|
||||||
[ class, expver, stream=wmfm, date, time, domain
|
|
||||||
[ type, levtype, system?, method
|
|
||||||
[ fcperiod, number, param ]]]
|
|
||||||
|
|
||||||
# moda
|
|
||||||
[ class, expver, stream=moda, date, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ levelist?, param ]]]
|
|
||||||
|
|
||||||
# msdc/mdfa/msda
|
|
||||||
[ class, expver, stream=msdc/mdfa/msda, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ date, time?, step?, levelist?, param ]]]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# seap
|
|
||||||
[ class, expver, stream=seap, date, time, domain
|
|
||||||
[ type=sv/svar, levtype, origin, method?
|
|
||||||
[ step, leadtime, opttime, number, levelist?, param ]]
|
|
||||||
|
|
||||||
[ type=ef, levtype, origin
|
|
||||||
[ step, levelist?, param, channel? ]]
|
|
||||||
|
|
||||||
[ type, levtype, origin
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, expver, stream=mmaf, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, expver, stream=mmam, date, time, domain
|
|
||||||
[ type, levtype, origin, system?, method
|
|
||||||
[ fcmonth, number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
[ class, expver, stream=dacl, domain
|
|
||||||
[ type=pb, levtype
|
|
||||||
[ date: ClimateDaily, time, step, quantile, levelist?, param ]]
|
|
||||||
[ type, levtype
|
|
||||||
[ date: ClimateDaily, time, step, levelist?, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, expver, stream=dacw, domain
|
|
||||||
[ type=pb, levtype
|
|
||||||
[ date: ClimateDaily, time, step, quantile, param ]]
|
|
||||||
[ type, levtype
|
|
||||||
[ date: ClimateDaily, time, step, param ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, expver, stream=edmm/ewmm, date, time, domain
|
|
||||||
[ type=ssd
|
|
||||||
[ step, number, param, ident, instrument, channel ]]
|
|
||||||
[ type, levtype
|
|
||||||
[ step, number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, expver, stream=edmo/ewmo, date, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ number, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
# stream gfas
|
|
||||||
[ class=mc/rd, expver, stream=gfas, date, time, domain
|
|
||||||
[ type=ga, levtype
|
|
||||||
[ step, param ]]
|
|
||||||
|
|
||||||
[ type=gsd
|
|
||||||
[ param, ident, instrument ]]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
# class is e2
|
|
||||||
[ class, expver, stream=espd, date, time, domain
|
|
||||||
[ type, levtype, origin, grid
|
|
||||||
[ step, number, levelist?, param ]]]
|
|
||||||
|
|
||||||
[ class=cs, expver, stream, date:Default, time, domain
|
|
||||||
[ type, levtype
|
|
||||||
[ step, levelist?, param ]]]
|
|
||||||
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
|||||||
[ class=od, stream, date, time
|
|
||||||
[ domain, type, levtype, dbase, rki, rty, ty
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class=ensemble, number, stream, date, time,
|
|
||||||
[ domain, type, levtype, dbase, rki, rty, ty
|
|
||||||
[ step, levelist?, param ]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[ class, foo]
|
|
@ -1,156 +0,0 @@
|
|||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 5,
|
|
||||||
"id": "2f01a012-002a-465c-9b09-681bdb3fc26d",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "stdout",
|
|
||||||
"output_type": "stream",
|
|
||||||
"text": [
|
|
||||||
"class\n",
|
|
||||||
"type\n",
|
|
||||||
"stream\n",
|
|
||||||
"expver\n",
|
|
||||||
"dataset\n",
|
|
||||||
"model\n",
|
|
||||||
"repres\n",
|
|
||||||
"obsgroup\n",
|
|
||||||
"reportype\n",
|
|
||||||
"levtype\n",
|
|
||||||
"levelist\n",
|
|
||||||
"param\n",
|
|
||||||
"date\n",
|
|
||||||
"year\n",
|
|
||||||
"month\n",
|
|
||||||
"hdate\n",
|
|
||||||
"offsetdate\n",
|
|
||||||
"fcmonth\n",
|
|
||||||
"fcperiod\n",
|
|
||||||
"time\n",
|
|
||||||
"offsettime\n",
|
|
||||||
"step\n",
|
|
||||||
"anoffset\n",
|
|
||||||
"reference\n",
|
|
||||||
"number\n",
|
|
||||||
"quantile\n",
|
|
||||||
"domain\n",
|
|
||||||
"frequency\n",
|
|
||||||
"direction\n",
|
|
||||||
"diagnostic\n",
|
|
||||||
"iteration\n",
|
|
||||||
"channel\n",
|
|
||||||
"ident\n",
|
|
||||||
"instrument\n",
|
|
||||||
"method\n",
|
|
||||||
"origin\n",
|
|
||||||
"system\n",
|
|
||||||
"activity\n",
|
|
||||||
"experiment\n",
|
|
||||||
"generation\n",
|
|
||||||
"realization\n",
|
|
||||||
"resolution\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"language_yaml = \"./language.yaml\"\n",
|
|
||||||
"import yaml\n",
|
|
||||||
"\n",
|
|
||||||
"with open(language_yaml, \"r\") as f:\n",
|
|
||||||
" mars_language = yaml.safe_load(f)[\"_field\"]\n",
|
|
||||||
"\n",
|
|
||||||
"for k in mars_language.keys(): print(k)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 11,
|
|
||||||
"id": "be9074a8-a56f-4fd0-a466-de8904faaa1c",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"%load_ext autoreload\n",
|
|
||||||
"%autoreload 2"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 36,
|
|
||||||
"id": "9dd26fe4-5da5-48a5-9e43-83ac1085f7e6",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"([Key(key='class', value='od', key_spec=class=od, reason='Matches'),\n",
|
|
||||||
" Key(key='stream', value=5, key_spec=stream, reason='Matches'),\n",
|
|
||||||
" Key(key='date', value='', key_spec=date, reason='Key Missing')],\n",
|
|
||||||
" [Key(key='class', value='ensemble', key_spec=class=ensemble, reason='Matches'),\n",
|
|
||||||
" Key(key='number', value='2', key_spec=number, reason='Matches'),\n",
|
|
||||||
" Key(key='stream', value=5, key_spec=stream, reason='Matches'),\n",
|
|
||||||
" Key(key='date', value='', key_spec=date, reason='Key Missing')])"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 36,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"from fdb_schema import FDBSchemaFile\n",
|
|
||||||
"schema = FDBSchemaFile(\"./test_schema\")\n",
|
|
||||||
"\n",
|
|
||||||
"r = {\n",
|
|
||||||
" \"class\" : [\"ensemble\", \"od\"],\n",
|
|
||||||
" \"number\" : \"2\",\n",
|
|
||||||
" \"stream\" : 5,\n",
|
|
||||||
"}\n",
|
|
||||||
"\n",
|
|
||||||
"a, b = schema.match_all(r)\n",
|
|
||||||
"a, b"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "f46268e3-e197-47b9-bb6e-94f06e0bf648",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"([],\n",
|
|
||||||
" [[Key(key='class', value='od', key_spec=class=od, reason='Matches'),\n",
|
|
||||||
" Key(key='stream', value=5, key_spec=stream, reason='Matches'),\n",
|
|
||||||
" Key(key='date', value='', key_spec=date, reason='Key Missing')],\n",
|
|
||||||
" \n",
|
|
||||||
" [Key(key='class', value='ensemble', key_spec=class=ensemble, reason='Matches'),\n",
|
|
||||||
" Key(key='number', value='2', key_spec=number, reason='Matches'),\n",
|
|
||||||
" Key(key='stream', value=5, key_spec=stream, reason='Matches'),\n",
|
|
||||||
" Key(key='date', value='', key_spec=date, reason='Key Missing')]])"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": "Python [conda env:micromamba-ionbeam]",
|
|
||||||
"language": "python",
|
|
||||||
"name": "conda-env-micromamba-ionbeam-py"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython",
|
|
||||||
"version": 3
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython3",
|
|
||||||
"version": "3.11.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 5
|
|
||||||
}
|
|
@ -1,297 +0,0 @@
|
|||||||
// app.js
|
|
||||||
|
|
||||||
// const API_BASE_URL = "http://127.0.0.1:8000/tree";
|
|
||||||
|
|
||||||
// Take the query string and stick it on the API URL
|
|
||||||
function getSTACUrlFromQuery() {
|
|
||||||
const params = new URLSearchParams(window.location.search);
|
|
||||||
|
|
||||||
// get current window url and remove path part
|
|
||||||
let api_url = new URL(window.location.href);
|
|
||||||
api_url.pathname = "/tree";
|
|
||||||
|
|
||||||
for (const [key, value] of params.entries()) {
|
|
||||||
api_url.searchParams.set(key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(api_url.toString());
|
|
||||||
return api_url.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_request_from_url() {
|
|
||||||
// Extract the query params in order and split any with a , delimiter
|
|
||||||
// request is an ordered array of [key, [value1, value2, value3, ...]]
|
|
||||||
const url = new URL(window.location.href);
|
|
||||||
const params = new URLSearchParams(url.search);
|
|
||||||
const request = [];
|
|
||||||
for (const [key, value] of params.entries()) {
|
|
||||||
request.push([key, value.split(",")]);
|
|
||||||
}
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
function make_url_from_request(request) {
|
|
||||||
const url = new URL(window.location.href);
|
|
||||||
url.search = ""; // Clear existing params
|
|
||||||
const params = new URLSearchParams();
|
|
||||||
|
|
||||||
for (const [key, values] of request) {
|
|
||||||
params.set(key, values.join(","));
|
|
||||||
}
|
|
||||||
url.search = params.toString();
|
|
||||||
|
|
||||||
return url.toString().replace(/%2C/g, ",");
|
|
||||||
}
|
|
||||||
|
|
||||||
function goToPreviousUrl() {
|
|
||||||
let request = get_request_from_url();
|
|
||||||
request.pop();
|
|
||||||
console.log("Request:", request);
|
|
||||||
const url = make_url_from_request(request);
|
|
||||||
console.log("URL:", url);
|
|
||||||
window.location.href = make_url_from_request(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to generate a new STAC URL based on current selection
|
|
||||||
function goToNextUrl() {
|
|
||||||
const request = get_request_from_url();
|
|
||||||
|
|
||||||
// Get the currently selected key = value,value2,value3 pairs
|
|
||||||
const items = Array.from(document.querySelectorAll("div#items > div"));
|
|
||||||
|
|
||||||
let any_new_keys = false;
|
|
||||||
const new_keys = items.map((item) => {
|
|
||||||
const key = item.dataset.key;
|
|
||||||
const key_type = item.dataset.keyType;
|
|
||||||
let values = [];
|
|
||||||
|
|
||||||
const datePicker = item.querySelector("input[type='date']");
|
|
||||||
if (datePicker) {
|
|
||||||
values.push(datePicker.value.replace(/-/g, ""));
|
|
||||||
}
|
|
||||||
|
|
||||||
const timePicker = item.querySelector("input[type='time']");
|
|
||||||
if (timePicker) {
|
|
||||||
values.push(timePicker.value.replace(":", ""));
|
|
||||||
}
|
|
||||||
|
|
||||||
const enum_checkboxes = item.querySelectorAll("input[type='checkbox']:checked");
|
|
||||||
if (enum_checkboxes.length > 0) {
|
|
||||||
values.push(...Array.from(enum_checkboxes).map((checkbox) => checkbox.value));
|
|
||||||
}
|
|
||||||
|
|
||||||
const any = item.querySelector("input[type='text']");
|
|
||||||
if (any && any.value !== "") {
|
|
||||||
values.push(any.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keep track of whether any new keys are selected
|
|
||||||
if (values.length > 0) {
|
|
||||||
any_new_keys = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return { key, values };
|
|
||||||
});
|
|
||||||
|
|
||||||
// if not new keys are selected, do nothing
|
|
||||||
if (!any_new_keys) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the request with the new keys
|
|
||||||
for (const { key, values } of new_keys) {
|
|
||||||
// Find the index of the existing key in the request array
|
|
||||||
const existingIndex = request.findIndex(
|
|
||||||
([existingKey, existingValues]) => existingKey === key
|
|
||||||
);
|
|
||||||
|
|
||||||
if (existingIndex !== -1) {
|
|
||||||
// If the key already exists, append the values
|
|
||||||
request[existingIndex][1] = [...request[existingIndex][1], ...values];
|
|
||||||
} else {
|
|
||||||
// If the key doesn't exist, add a new entry
|
|
||||||
request.push([key, values]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const url = make_url_from_request(request);
|
|
||||||
window.location.href = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function createCatalogItem(link, itemsContainer) {
|
|
||||||
const itemDiv = document.createElement("div");
|
|
||||||
itemDiv.className = "item loading";
|
|
||||||
itemDiv.textContent = "Loading...";
|
|
||||||
itemsContainer.appendChild(itemDiv);
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
// Update the item div with real content
|
|
||||||
itemDiv.classList.remove("loading");
|
|
||||||
|
|
||||||
const dimension = link["generalized_datacube:dimension"];
|
|
||||||
|
|
||||||
// add data-key attribute to the itemDiv
|
|
||||||
itemDiv.dataset.key = link.title;
|
|
||||||
itemDiv.dataset.keyType = dimension.type;
|
|
||||||
|
|
||||||
itemDiv.innerHTML = `
|
|
||||||
<h3 class="item-title">${link.title || "No title available"}</h3>
|
|
||||||
<p class="item-type">Key Type: ${itemDiv.dataset.keyType || "Unknown"}</p>
|
|
||||||
<p class="item-type">Optional: ${dimension.optional ? "Yes" : "No"}</p>
|
|
||||||
<p class="item-description">${dimension.description ? dimension.description.slice(0, 100) : "No description available"}...</p>
|
|
||||||
`;
|
|
||||||
|
|
||||||
|
|
||||||
if (dimension.type === "date" || dimension.type === "time") {
|
|
||||||
// Render a date picker for the "date" key
|
|
||||||
const picker = `<input type="${link.title}" name="${link.title}">`;
|
|
||||||
//convert picker to HTML node
|
|
||||||
const pickerNode = document
|
|
||||||
.createRange()
|
|
||||||
.createContextualFragment(picker);
|
|
||||||
itemDiv.appendChild(pickerNode);
|
|
||||||
}
|
|
||||||
// Otherwise create a scrollable list with checkboxes for values if available
|
|
||||||
else if (
|
|
||||||
// dimension.type === "enum" &&
|
|
||||||
dimension.values &&
|
|
||||||
dimension.values.length > 0
|
|
||||||
) {
|
|
||||||
const listContainer = renderCheckboxList(link);
|
|
||||||
itemDiv.appendChild(listContainer);
|
|
||||||
} else {
|
|
||||||
const any = `<input type="text" name="${link.title}">`;
|
|
||||||
const anyNode = document.createRange().createContextualFragment(any);
|
|
||||||
itemDiv.appendChild(anyNode);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Error loading item data:", error);
|
|
||||||
itemDiv.innerHTML = `<p>Error loading item details: ${error}</p>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderCheckboxList(link) {
|
|
||||||
const dimension = link["generalized_datacube:dimension"];
|
|
||||||
const value_descriptions = dimension.value_descriptions;
|
|
||||||
|
|
||||||
const listContainerHTML = `
|
|
||||||
<div class="item-list-container">
|
|
||||||
<label class="list-label">Select one or more values:</label>
|
|
||||||
<div class="scrollable-list">
|
|
||||||
${dimension.values
|
|
||||||
.map((value, index) => {
|
|
||||||
const labelText = value_descriptions[index] ? `${value} - ${value_descriptions[index]}` : value;
|
|
||||||
return `
|
|
||||||
<div class="checkbox-container">
|
|
||||||
<input type="checkbox" class="item-checkbox" value="${value}" ${dimension.values.length === 1? 'checked' : ''}>
|
|
||||||
<label class="checkbox-label">${labelText}</label>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
})
|
|
||||||
.join("")}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
return document.createRange().createContextualFragment(listContainerHTML).firstElementChild;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render catalog items in the sidebar
|
|
||||||
function renderCatalogItems(links) {
|
|
||||||
const itemsContainer = document.getElementById("items");
|
|
||||||
itemsContainer.innerHTML = ""; // Clear previous items
|
|
||||||
|
|
||||||
console.log("Number of Links:", links);
|
|
||||||
const children = links.filter(
|
|
||||||
(link) => link.rel === "child" || link.rel === "items"
|
|
||||||
);
|
|
||||||
console.log("Number of Children:", children.length);
|
|
||||||
|
|
||||||
children.forEach((link) => {
|
|
||||||
createCatalogItem(link, itemsContainer);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderRequestBreakdown(request, descriptions) {
|
|
||||||
const container = document.getElementById("request-breakdown");
|
|
||||||
const format_value = (key, value) => {
|
|
||||||
return `<span class="value" title="${descriptions[key]['value_descriptions'][value]}">"${value}"</span>`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const format_values = (key, values) => {
|
|
||||||
if (values.length === 1) {
|
|
||||||
return format_value(key, values[0]);
|
|
||||||
}
|
|
||||||
return `[${values.map((v) =>
|
|
||||||
format_value(key, v)
|
|
||||||
).join(", ")}]`;
|
|
||||||
};
|
|
||||||
|
|
||||||
let html = `{\n` +
|
|
||||||
request
|
|
||||||
.map(
|
|
||||||
([key, values]) =>
|
|
||||||
` <span class="key" title="${descriptions[key]['description']}">"${key}"</span>: ${format_values(key, values)},`
|
|
||||||
)
|
|
||||||
.join("\n") +
|
|
||||||
`\n}`;
|
|
||||||
container.innerHTML = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderRawSTACResponse(catalog) {
|
|
||||||
const itemDetails = document.getElementById("raw-stac");
|
|
||||||
itemDetails.textContent = JSON.stringify(catalog, null, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetch STAC catalog and display items
|
|
||||||
async function fetchCatalog(request, stacUrl) {
|
|
||||||
try {
|
|
||||||
const response = await fetch(stacUrl);
|
|
||||||
const catalog = await response.json();
|
|
||||||
|
|
||||||
// Render the request breakdown in the sidebar
|
|
||||||
renderRequestBreakdown(request, catalog.debug.descriptions);
|
|
||||||
|
|
||||||
// Show the raw STAC in the sidebar
|
|
||||||
renderRawSTACResponse(catalog);
|
|
||||||
|
|
||||||
// Render the items from the catalog
|
|
||||||
if (catalog.links) {
|
|
||||||
console.log("Fetched STAC catalog:", stacUrl, catalog.links);
|
|
||||||
renderCatalogItems(catalog.links);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Highlight the request and raw STAC
|
|
||||||
hljs.highlightElement(document.getElementById("raw-stac"));
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Error fetching STAC catalog:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize the viewer by fetching the STAC catalog
|
|
||||||
function initializeViewer() {
|
|
||||||
const stacUrl = getSTACUrlFromQuery();
|
|
||||||
const request = get_request_from_url();
|
|
||||||
|
|
||||||
if (stacUrl) {
|
|
||||||
console.log("Fetching STAC catalog from query string URL:", stacUrl);
|
|
||||||
fetchCatalog(request, stacUrl);
|
|
||||||
} else {
|
|
||||||
console.error("No STAC URL provided in the query string.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add event listener for the "Generate STAC URL" button
|
|
||||||
const generateUrlBtn = document.getElementById("next-btn");
|
|
||||||
generateUrlBtn.addEventListener("click", goToNextUrl);
|
|
||||||
|
|
||||||
const previousUrlBtn = document.getElementById("previous-btn");
|
|
||||||
previousUrlBtn.addEventListener("click", goToPreviousUrl);
|
|
||||||
|
|
||||||
// Add event listener for the "Raw STAC" button
|
|
||||||
const stacAnchor = document.getElementById("stac-anchor");
|
|
||||||
stacAnchor.href = getSTACUrlFromQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Call initializeViewer on page load
|
|
||||||
initializeViewer();
|
|
@ -1,46 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>ECMWF DestinE STAC Viewer</title>
|
|
||||||
<link rel="stylesheet" href="/app/styles.css" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/json.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/python.min.js"></script>
|
|
||||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>📚</text></svg>">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="viewer">
|
|
||||||
<div id="catalog-list">
|
|
||||||
<h2>STAC Items</h2>
|
|
||||||
<p>Select one or more items and then click next iteratively build up a full request.</p>
|
|
||||||
|
|
||||||
<div class="sidebar-header">
|
|
||||||
<button id="previous-btn">Previous</button>
|
|
||||||
<a id="stac-anchor"><button id="stac-btn">Raw STAC</button></a>
|
|
||||||
<button id="next-btn">Next</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="items">
|
|
||||||
<!-- Items from the STAC catalog will be rendered here -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="details">
|
|
||||||
{{ config.get('message', '')}}
|
|
||||||
<h2>Request</h2>
|
|
||||||
Hover over a key or value for more info.
|
|
||||||
<pre><code id="request-breakdown" class="language-json">
|
|
||||||
{
|
|
||||||
}
|
|
||||||
</code></pre>
|
|
||||||
<h2>Raw STAC</h2>
|
|
||||||
<pre><code id="raw-stac" class="language-json"></code></pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="/app/app.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,2 +0,0 @@
|
|||||||
# https://github.com/cytb/simple-autoreload-server
|
|
||||||
autoreload-server . 8123
|
|
@ -1,166 +0,0 @@
|
|||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
#viewer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
#catalog-list {
|
|
||||||
width: 30%;
|
|
||||||
padding: 10px;
|
|
||||||
overflow-y: scroll;
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
border-right: 1px solid #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
#catalog-list h2 {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
#details {
|
|
||||||
width: 70%;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between; /* Center buttons horizontally */
|
|
||||||
margin-bottom: 10px; /* Space below header */
|
|
||||||
height: 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-header button {
|
|
||||||
width: 10em;
|
|
||||||
}
|
|
||||||
|
|
||||||
canvas {
|
|
||||||
width: 100%;
|
|
||||||
height: 300px;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Updated CSS for the item elements in the catalog list */
|
|
||||||
.item {
|
|
||||||
background-color: white;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
transition: background-color 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-title {
|
|
||||||
font-size: 18px;
|
|
||||||
margin: 0;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-type {
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 5px 0;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-id, .item-key-type {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-description {
|
|
||||||
font-size: 13px;
|
|
||||||
margin: 5px 0;
|
|
||||||
color: #444;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
#items {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item.selected {
|
|
||||||
background-color: #d4e9ff; /* Lighter blue for selection */
|
|
||||||
border-color: #003399; /* Keep the original ECMWF blue for the border */
|
|
||||||
}
|
|
||||||
|
|
||||||
#raw-stac {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
padding: 10px;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Button styles */
|
|
||||||
button {
|
|
||||||
height: 3em;
|
|
||||||
padding: 10px 20px; /* Padding around button text */
|
|
||||||
margin: 0 5px; /* Margin between buttons */
|
|
||||||
background-color: #003399; /* ECMWF blue */
|
|
||||||
color: white; /* White text color */
|
|
||||||
border: none; /* Remove default button border */
|
|
||||||
cursor: pointer; /* Pointer cursor on hover */
|
|
||||||
border-radius: 5px; /* Rounded corners */
|
|
||||||
transition: background-color 0.3s ease; /* Smooth background color transition */
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background-color: #001f66; /* Darker shade of ECMWF blue on hover */
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-list-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scrollable-list {
|
|
||||||
max-height: 200px;
|
|
||||||
overflow-y: auto;
|
|
||||||
padding: 10px;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
border-radius: 4px;
|
|
||||||
background-color: #fff;
|
|
||||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-container {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-checkbox {
|
|
||||||
margin-right: 10px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-label {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-container:hover .checkbox-label {
|
|
||||||
color: #003399;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-label {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
display: block;
|
|
||||||
color: #003399;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.key, span.value {
|
|
||||||
color: #ba2121;;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.key {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.key:hover, span.value:hover {
|
|
||||||
color: #ff2a2a;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
9
cache/README.md
vendored
9
cache/README.md
vendored
@ -1,9 +0,0 @@
|
|||||||
This code builds the tree cache from fdb.list
|
|
||||||
|
|
||||||
A tried a fill run of the entire database using `list_entire_fdb.py`, it died after 14 hours and 89 million unique objects, perhaps because it ran out of memory.
|
|
||||||
|
|
||||||
|
|
||||||
The raw `cache.json` can be compressed using "tree_to_compressed.py" which folds identical subtrees and replaces the keys with "key=val1,val2,val3" strings.
|
|
||||||
For a 38MB cache.json, the compressed version is 40KB.
|
|
||||||
For 122MB it's 44KB.
|
|
||||||
|
|
1
cache/backups/cache.json.backup.06.11.2024
vendored
1
cache/backups/cache.json.backup.06.11.2024
vendored
@ -1 +0,0 @@
|
|||||||
{"class=d1": {"dataset=climate-dt": {"activity=cmip6": {"experiment=hist": {"generation=1": {"model=icon": {"realization=1": {"expver=0001": {"stream=clte": {"date=19910410": {"resolution=high": {"type=fc": {"levtype=sfc": {"time=0000": {"param=130": {}}}}}}}}}}}}}}}}
|
|
1
cache/climate-dt-cache.json
vendored
1
cache/climate-dt-cache.json
vendored
File diff suppressed because one or more lines are too long
81
cache/compress_tree.py
vendored
81
cache/compress_tree.py
vendored
@ -1,81 +0,0 @@
|
|||||||
from frozendict import frozendict, deepfreeze
|
|
||||||
from collections import defaultdict
|
|
||||||
|
|
||||||
def cache_key(cache, tree):
|
|
||||||
h = hash(frozendict(tree))
|
|
||||||
if h not in cache:
|
|
||||||
cache[h] = tree
|
|
||||||
return h
|
|
||||||
|
|
||||||
def cache_tree(cache, tree) -> dict:
|
|
||||||
if not isinstance(tree, dict):
|
|
||||||
if hash(tree) not in cache:
|
|
||||||
cache[hash(tree)] = tree
|
|
||||||
return hash(tree)
|
|
||||||
|
|
||||||
if not tree:
|
|
||||||
return cache_key(cache, tree)
|
|
||||||
|
|
||||||
return cache_key(cache, {k : cache_tree(cache, v) for k, v in tree.items() if k != "_count"})
|
|
||||||
|
|
||||||
def expand_tree_but_collapsed(cache, tree, level = 0, max_level = None):
|
|
||||||
if max_level == level: return tree
|
|
||||||
if not isinstance(tree, dict): return tree
|
|
||||||
# collapse by leaf
|
|
||||||
leaves = defaultdict(list)
|
|
||||||
for k, v in tree.items():
|
|
||||||
leaves[v].append(k)
|
|
||||||
|
|
||||||
new_tree = {}
|
|
||||||
for value, key_group in leaves.items():
|
|
||||||
k = key_group[0].split("=")[0]
|
|
||||||
key = k + "=" + ",".join(k.split("=")[1] for k in key_group)
|
|
||||||
new_tree[key] = value
|
|
||||||
|
|
||||||
return {k : expand_tree_but_collapsed(cache, cache[v],
|
|
||||||
level=level+1,
|
|
||||||
max_level=max_level) for k, v in new_tree.items()}
|
|
||||||
|
|
||||||
def compress_tree(tree, max_level = 5):
|
|
||||||
cache = {}
|
|
||||||
cache_tree(cache, tree)
|
|
||||||
top_level = {k : cache_tree(cache, v) for k, v in tree.items() if k != "_count"}
|
|
||||||
return expand_tree_but_collapsed(cache, top_level, max_level = max_level)
|
|
||||||
|
|
||||||
def pretty_schema_tree(tree):
|
|
||||||
|
|
||||||
name_cache = {}
|
|
||||||
names = set()
|
|
||||||
|
|
||||||
def pick_name(k):
|
|
||||||
if k in name_cache: return name_cache[k]
|
|
||||||
|
|
||||||
name, values = k.split("=")
|
|
||||||
|
|
||||||
for i in range(100):
|
|
||||||
new_name = f"{name}_{i}"
|
|
||||||
if new_name not in names:
|
|
||||||
name_cache[k] = new_name
|
|
||||||
names.add(new_name)
|
|
||||||
return new_name
|
|
||||||
|
|
||||||
def tree_as_schema(tree, level = 0):
|
|
||||||
indent = " "
|
|
||||||
if not isinstance(tree, dict):
|
|
||||||
return "\n" + indent*level + f"[ {tree}, "
|
|
||||||
|
|
||||||
out = "[" if level == 0 else ""
|
|
||||||
for k, v in tree.items():
|
|
||||||
if len(k) > 30:
|
|
||||||
k = pick_name(k)
|
|
||||||
|
|
||||||
if len(tree) == 1:
|
|
||||||
out += k + ", " + tree_as_schema(v, level = level + 1)
|
|
||||||
else:
|
|
||||||
out += "\n" + indent*level + f"[ {k}, " + tree_as_schema(v, level = level + 1)
|
|
||||||
# out += "]\n"
|
|
||||||
return out
|
|
||||||
|
|
||||||
schema_tree = tree_as_schema(tree)
|
|
||||||
groups = "\n".join(f"{v} : {k}" for k, v in sorted(name_cache.items()))
|
|
||||||
return groups + "\n" + schema_tree
|
|
1
cache/compressed_cache.json
vendored
1
cache/compressed_cache.json
vendored
File diff suppressed because one or more lines are too long
479
cache/demo.cast
vendored
479
cache/demo.cast
vendored
@ -1,479 +0,0 @@
|
|||||||
{"version": 2, "width": 139, "height": 51, "timestamp": 1729520622, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
|
|
||||||
[0.013507, "o", "\u001b[?2004h\u001b]0;eouser@stac-test: ~/catalogs/backend\u0007\u001b[01;32meouser@stac-test\u001b[00m:\u001b[01;34m~/catalogs/backend\u001b[00m$ "]
|
|
||||||
[0.860592, "o", "python test_remotefdb.py "]
|
|
||||||
[1.206129, "o", "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bsource catalogs/.venv/bin/activate"]
|
|
||||||
[2.388112, "o", "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\u001b[9Ppython test_remotefdb.py "]
|
|
||||||
[4.666292, "o", "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bsource catalogs/.venv/bin/activate"]
|
|
||||||
[5.720147, "o", "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\u001b[9Ppython test_remotefdb.py "]
|
|
||||||
[5.898183, "o", "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\u001b[K"]
|
|
||||||
[7.606682, "o", "p"]
|
|
||||||
[7.71761, "o", "y"]
|
|
||||||
[7.879492, "o", "t"]
|
|
||||||
[8.002022, "o", "h"]
|
|
||||||
[8.043895, "o", "o"]
|
|
||||||
[8.098641, "o", "n"]
|
|
||||||
[8.226663, "o", " "]
|
|
||||||
[8.482915, "o", "c"]
|
|
||||||
[8.505358, "o", "a"]
|
|
||||||
[8.807878, "o", "che.py "]
|
|
||||||
[9.554525, "o", "\r\n\u001b[?2004l\r"]
|
|
||||||
[23.001191, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.001593, "o", "Total: 200\r\nRuntime: 13 s\r\n└──\r\n"]
|
|
||||||
[23.001818, "o", " └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.024055, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.024549, "o", "Total: 400\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n"]
|
|
||||||
[23.024611, "o", " └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n"]
|
|
||||||
[23.024934, "o", " └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.04771, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.04831, "o", "Total: 600\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n"]
|
|
||||||
[23.048381, "o", " └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.071379, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.071805, "o", "Total: 800\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n"]
|
|
||||||
[23.072001, "o", " └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.095691, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.096166, "o", "Total: 1000\r\nRuntime: 13 s\r\n└──\r\n"]
|
|
||||||
[23.096233, "o", " └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n"]
|
|
||||||
[23.096286, "o", " └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.120415, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.120912, "o", "Total: 1200\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[23.121285, "o", " └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.146966, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.147559, "o", "Total: 1400\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n"]
|
|
||||||
[23.147612, "o", " └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.173693, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.174089, "o", "Total: 1600\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n"]
|
|
||||||
[23.174185, "o", " └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.200989, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.201511, "o", "Total: 1800\r\nRuntime: 13 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n"]
|
|
||||||
[23.20188, "o", " └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.2307, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.231334, "o", "Total: 2000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n"]
|
|
||||||
[23.231656, "o", " └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.259717, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.260358, "o", "Total: 2200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[23.260696, "o", " └──resolution=high\r\n"]
|
|
||||||
[23.288767, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.289319, "o", "Total: 2400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[23.289401, "o", " └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.318851, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.319393, "o", "Total: 2600\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n"]
|
|
||||||
[23.319446, "o", " └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.357623, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.358127, "o", "Total: 2800\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.388334, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.388761, "o", "Total: 3000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n"]
|
|
||||||
[23.388887, "o", " └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[23.38899, "o", " └──resolution=high\r\n"]
|
|
||||||
[23.419326, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.419771, "o", "Total: 3200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.451479, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.45205, "o", "Total: 3400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.483464, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.483965, "o", "Total: 3600\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n"]
|
|
||||||
[23.484021, "o", " └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.516508, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.517036, "o", "Total: 3800\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.550592, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.551137, "o", "Total: 4000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[23.551205, "o", " └──generation=1\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.587142, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.587678, "o", "Total: 4200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[23.58785, "o", " │ └──resolution=standard\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.623094, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.623625, "o", "Total: 4400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[23.623761, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.658789, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.659331, "o", "Total: 4600\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[23.659457, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.694361, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.694899, "o", "Total: 4800\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n"]
|
|
||||||
[23.694938, "o", " └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.73034, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.730795, "o", "Total: 5000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[23.730954, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.766944, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.767366, "o", "Total: 5200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n"]
|
|
||||||
[23.767415, "o", " └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n"]
|
|
||||||
[23.767751, "o", " └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.803901, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.804356, "o", "Total: 5400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n"]
|
|
||||||
[23.804517, "o", " │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.842617, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.842905, "o", "Total: 5600\r\nRuntime: 14 s\r\n└──\r\n"]
|
|
||||||
[23.843086, "o", " └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.881481, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.881743, "o", "Total: 5800\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n"]
|
|
||||||
[23.88182, "o", " │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.921022, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.921331, "o", "Total: 6000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[23.921468, "o", " └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[23.961238, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[23.961708, "o", "Total: 6200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[23.961791, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.002408, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.002895, "o", "Total: 6400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[24.002978, "o", " └──resolution=high\r\n"]
|
|
||||||
[24.043759, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.044236, "o", "Total: 6600\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[24.044311, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.086123, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.086601, "o", "Total: 6800\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n"]
|
|
||||||
[24.086696, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.128918, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.129432, "o", "Total: 7000\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.173033, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.173467, "o", "Total: 7200\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[24.17357, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.216584, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.217004, "o", "Total: 7400\r\nRuntime: 14 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n"]
|
|
||||||
[24.217113, "o", " │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.261263, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.261743, "o", "Total: 7600\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n"]
|
|
||||||
[24.261779, "o", " └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.306332, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.306779, "o", "Total: 7800\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[24.306818, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.351451, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.351911, "o", "Total: 8000\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422"]
|
|
||||||
[24.351951, "o", "\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.399317, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.399807, "o", "Total: 8200\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n"]
|
|
||||||
[24.399905, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.447825, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.448315, "o", "Total: 8400\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n"]
|
|
||||||
[24.448354, "o", " └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.496187, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.496619, "o", "Total: 8600\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[24.496702, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.545074, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.545545, "o", "Total: 8800\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[24.545582, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.595303, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.595747, "o", "Total: 9000\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n"]
|
|
||||||
[24.595837, "o", " └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.64594, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.646459, "o", "Total: 9200\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[24.646531, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.697922, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.698416, "o", "Total: 9400\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[24.698498, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.749128, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.749621, "o", "Total: 9600\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[24.749658, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.802131, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.80256, "o", "Total: 9800\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo"]
|
|
||||||
[24.802639, "o", "\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.865052, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.865354, "o", "Total: 10000\r\n"]
|
|
||||||
[24.86554, "o", "Runtime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.91872, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.919172, "o", "Total: 10200\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[24.919254, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[24.972327, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[24.972657, "o", "Total: 10400\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[24.972694, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.024978, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.025401, "o", "Total: 10600\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[25.025442, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.078272, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.078772, "o", "Total: 10800\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n"]
|
|
||||||
[25.078858, "o", " └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.132303, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.13271, "o", "Total: 11000\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[25.132904, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.186435, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.186935, "o", "Total: 11200\r\nRuntime: 15 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[25.186973, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.241462, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.241923, "o", "Total: 11400\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[25.241989, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.297149, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.297605, "o", "Total: 11600\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n"]
|
|
||||||
[25.297781, "o", " ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.355901, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.356392, "o", "Total: 11800\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n"]
|
|
||||||
[25.356491, "o", " └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.412731, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.413217, "o", "Total: 12000\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n"]
|
|
||||||
[25.413409, "o", " └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.470779, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.471218, "o", "Total: 12200\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n"]
|
|
||||||
[25.471262, "o", " └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.528497, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.528946, "o", "Total: 12400\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[25.528983, "o", " └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.58768, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.588168, "o", "Total: 12600\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n"]
|
|
||||||
[25.588232, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.646322, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.646838, "o", "Total: 12800\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n"]
|
|
||||||
[25.646876, "o", " └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.705794, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.706287, "o", "Total: 13000\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n"]
|
|
||||||
[25.706453, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.76671, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.767182, "o", "Total: 13200\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n"]
|
|
||||||
[25.767352, "o", " └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.828388, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.828951, "o", "Total: 13400\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[25.828994, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.890025, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.890438, "o", "Total: 13600\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n"]
|
|
||||||
[25.890554, "o", " ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[25.951877, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[25.952384, "o", "Total: 13800\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[25.952556, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.015263, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.015827, "o", "Total: 14000\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.079166, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.079693, "o", "Total: 14200\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.143245, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.143743, "o", "Total: 14400\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.20821, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.208801, "o", "Total: 14600\r\nRuntime: 16 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[26.20894, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.274143, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.274687, "o", "Total: 14800\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.34619, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.346549, "o", "Total: 15000\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[26.346689, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.412054, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.412602, "o", "Total: 15200\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n"]
|
|
||||||
[26.412681, "o", " └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.4795, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.480173, "o", "Total: 15400\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.547527, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.548221, "o", "Total: 15600\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n"]
|
|
||||||
[26.548442, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.616117, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.616775, "o", "Total: 15800\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n"]
|
|
||||||
[26.617001, "o", " └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.684421, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.685074, "o", "Total: 16000\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n"]
|
|
||||||
[26.685301, "o", " └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.753891, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.754547, "o", "Total: 16200\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n"]
|
|
||||||
[26.754812, "o", " └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.823974, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.82464, "o", "Total: 16400\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.897401, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.898115, "o", "Total: 16600\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n"]
|
|
||||||
[26.898345, "o", " │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[26.968419, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[26.969061, "o", "Total: 16800\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.039554, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.040173, "o", "Total: 17000\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n"]
|
|
||||||
[27.040394, "o", " └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.111089, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.111728, "o", "Total: 17200\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n"]
|
|
||||||
[27.111952, "o", " └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.183352, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.183884, "o", "Total: 17400\r\nRuntime: 17 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n"]
|
|
||||||
[27.183967, "o", " │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.255989, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.256662, "o", "Total: 17600\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[27.256886, "o", " └──resolution=high\r\n"]
|
|
||||||
[27.329402, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.330001, "o", "Total: 17800\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.406358, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.406844, "o", "Total: 18000\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.489238, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.489653, "o", "Total: 18200\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.564484, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.564967, "o", "Total: 18400\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[27.565044, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.639824, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.640367, "o", "Total: 18600\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n"]
|
|
||||||
[27.64059, "o", " └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.716224, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.716698, "o", "Total: 18800\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[27.716914, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.792047, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.792521, "o", "Total: 19000\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[27.792729, "o", " │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.869003, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.869477, "o", "Total: 19200\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n"]
|
|
||||||
[27.869694, "o", " └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[27.955881, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[27.956271, "o", "Total: 19400\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.033745, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.034299, "o", "Total: 19600\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.112317, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.11285, "o", "Total: 19800\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[28.112936, "o", " │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.19266, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.193071, "o", "Total: 20000\r\nRuntime: 18 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[28.193203, "o", " │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.273245, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.273857, "o", "Total: 20200\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[28.273992, "o", " │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.354753, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.355375, "o", "Total: 20400\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n"]
|
|
||||||
[28.355505, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.444117, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.44456, "o", "Total: 20600\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n"]
|
|
||||||
[28.444688, "o", " ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.526831, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.52736, "o", "Total: 20800\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[28.527497, "o", " └──resolution=high\r\n"]
|
|
||||||
[28.61032, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.610861, "o", "Total: 21000\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n"]
|
|
||||||
[28.611001, "o", " └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.694276, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.69481, "o", "Total: 21200\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[28.694949, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.778291, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.778808, "o", "Total: 21400\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[28.778947, "o", " │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.863282, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.863763, "o", "Total: 21600\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n"]
|
|
||||||
[28.86391, "o", " │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[28.958933, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[28.959422, "o", "Total: 21800\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n"]
|
|
||||||
[28.959567, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.043729, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.044273, "o", "Total: 22000\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.044447, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.129213, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.129714, "o", "Total: 22200\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.129812, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.216052, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.216541, "o", "Total: 22400\r\nRuntime: 19 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[29.216682, "o", " │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.303481, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.303965, "o", "Total: 22600\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n"]
|
|
||||||
[29.304106, "o", " │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.392171, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.392601, "o", "Total: 22800\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.481784, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.482275, "o", "Total: 23000\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.482436, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.570783, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.571214, "o", "Total: 23200\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[29.571388, "o", " │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.660404, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.660968, "o", "Total: 23400\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.661127, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.75088, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.751383, "o", "Total: 23600\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.751523, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.840945, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.841479, "o", "Total: 23800\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[29.841651, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[29.939532, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[29.939978, "o", "Total: 24000\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.031567, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.032026, "o", "Total: 24200\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[30.032186, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.124271, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.12472, "o", "Total: 24400\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[30.124878, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.216403, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.216868, "o", "Total: 24600\r\nRuntime: 20 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n"]
|
|
||||||
[30.217012, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.310204, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.310798, "o", "Total: 24800\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[30.310966, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.406164, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.406689, "o", "Total: 25000\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[30.406834, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.517033, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.517415, "o", "Total: 25200\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n"]
|
|
||||||
[30.51753, "o", " │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.611921, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.612402, "o", "Total: 25400\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[30.612505, "o", " └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.713763, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.714288, "o", "Total: 25600\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[30.714409, "o", " │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.811203, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.81176, "o", "Total: 25800\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n"]
|
|
||||||
[30.811859, "o", " │ └──resolution=high\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[30.909483, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[30.910962, "o", "Total: 26000\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[30.911082, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.009725, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.010174, "o", "Total: 26200\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[31.010311, "o", " │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.108865, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.109352, "o", "Total: 26400\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[31.109503, "o", " │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.208702, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.20937, "o", "Total: 26600\r\nRuntime: 21 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n"]
|
|
||||||
[31.209472, "o", " │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.309207, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.309729, "o", "Total: 26800\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[31.30984, "o", " │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.411826, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.415924, "o", "Total: 27000\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[31.416088, "o", " │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.517116, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.517615, "o", "Total: 27200\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[31.517732, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.619249, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.61975, "o", "Total: 27400\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[31.619867, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.722157, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.722738, "o", "Total: 27600\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[31.722879, "o", " │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.826059, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.82672, "o", "Total: 27800\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[31.949521, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[31.950074, "o", "Total: 28000\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[31.950228, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.054064, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.054546, "o", "Total: 28200\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[32.054699, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.159264, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.159791, "o", "Total: 28400\r\nRuntime: 22 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[32.159934, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.267038, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.267597, "o", "Total: 28600\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[32.267725, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.372321, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.372811, "o", "Total: 28800\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[32.372924, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.488625, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.489008, "o", "Total: 29000\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[32.489172, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.596762, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.597214, "o", "Total: 29200\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[32.597329, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.704136, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.704728, "o", "Total: 29400\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n"]
|
|
||||||
[32.704889, "o", " │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.812243, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.812737, "o", "Total: 29600\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[32.812946, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[32.925347, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[32.925873, "o", "Total: 29800\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n"]
|
|
||||||
[32.925978, "o", " │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.035227, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.035712, "o", "Total: 30000\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[33.035851, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.149101, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.14984, "o", "Total: 30200\r\nRuntime: 23 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n"]
|
|
||||||
[33.149965, "o", " │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.265082, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.265767, "o", "Total: 30400\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n"]
|
|
||||||
[33.265862, "o", " │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.376619, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.377289, "o", "Total: 30600\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n"]
|
|
||||||
[33.377371, "o", " └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.507592, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.508104, "o", "Total: 30800\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n"]
|
|
||||||
[33.508207, "o", " └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.621187, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.621716, "o", "Total: 31000\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n"]
|
|
||||||
[33.621859, "o", " │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.734764, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.735202, "o", "Total: 31200\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n"]
|
|
||||||
[33.735364, "o", " │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.847903, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.848397, "o", "Total: 31400\r\nRuntime: 24 s\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n"]
|
|
||||||
[33.848534, "o", " │ │ └──resolution=high\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ │ └──resolution=standard\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n │ └──resolution=standard,high\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n └──resolution=high\r\n"]
|
|
||||||
[33.951751, "o", "\u001b[H\u001b[2J\u001b[3J"]
|
|
||||||
[33.952159, "o", "Total: 31475\r\nRuntime: 0 mins\r\n└──\r\n └──class=d1\r\n └──dataset=climate-dt\r\n ├──activity=highresmip\r\n │ └──experiment=cont\r\n │ └──generation=1\r\n │ └──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=0001\r\n │ │ └──stream=clte\r\n"]
|
|
||||||
[33.952288, "o", " │ │ └──date=19920422\r\n │ └──expver=a16z\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n └──activity=cmip6\r\n └──experiment=hist\r\n └──generation=1\r\n ├──model=ifs-nemo\r\n │ └──realization=1\r\n │ ├──expver=a18j\r\n │ │ └──stream=clte\r\n │ │ └──date=19920422\r\n │ └──expver=0001\r\n │ └──stream=clte\r\n │ └──date=19920422\r\n └──model=icon\r\n └──realization=1\r\n └──expver=0001\r\n └──stream=clte\r\n └──date=19920422\r\n"]
|
|
||||||
[34.079052, "o", "\u001b[?2004h\u001b]0;eouser@stac-test: ~/catalogs/backend\u0007\u001b[01;32meouser@stac-test\u001b[00m:\u001b[01;34m~/catalogs/backend\u001b[00m$ "]
|
|
||||||
[37.231121, "o", "\u001b[?2004l\r\r\nexit\r\n"]
|
|
1
cache/fdb_schema/__init__.py
vendored
1
cache/fdb_schema/__init__.py
vendored
@ -1 +0,0 @@
|
|||||||
from .fdb_schema_parser import FDBSchema, FDBSchemaFile, KeySpec, Key
|
|
375
cache/fdb_schema/fdb_schema_parser.py
vendored
375
cache/fdb_schema/fdb_schema_parser.py
vendored
@ -1,375 +0,0 @@
|
|||||||
import dataclasses
|
|
||||||
import json
|
|
||||||
from dataclasses import dataclass, field
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
import pe
|
|
||||||
from pe.actions import Pack
|
|
||||||
from pe.operators import Class, Star
|
|
||||||
|
|
||||||
from .fdb_types import FDB_type_to_implementation, FDBType
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class KeySpec:
|
|
||||||
"""
|
|
||||||
Represents the specification of a single key in an FDB schema file. For example in
|
|
||||||
```
|
|
||||||
[ class, expver, stream=lwda, date, time, domain?
|
|
||||||
[ type=ofb/mfb/oai
|
|
||||||
[ obsgroup, reportype ]]]
|
|
||||||
```
|
|
||||||
class, expver, type=ofdb/mfb/oai etc are the KeySpecs
|
|
||||||
|
|
||||||
These can have additional information such as: flags like `domain?`, allowed values like `type=ofb/mfb/oai`
|
|
||||||
or specify type information with `date: ClimateMonthly`
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
key: str
|
|
||||||
type: FDBType = field(default_factory=FDBType)
|
|
||||||
flag: str | None = None
|
|
||||||
values: tuple = field(default_factory=tuple)
|
|
||||||
comment: str = ""
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
repr = self.key
|
|
||||||
if self.flag:
|
|
||||||
repr += self.flag
|
|
||||||
# if self.type:
|
|
||||||
# repr += f":{self.type}"
|
|
||||||
if self.values:
|
|
||||||
repr += "=" + "/".join(self.values)
|
|
||||||
return repr
|
|
||||||
|
|
||||||
def matches(self, key, value):
|
|
||||||
# Sanity check!
|
|
||||||
if self.key != key:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Some keys have a set of allowed values type=ofb/mfb/oai
|
|
||||||
if self.values:
|
|
||||||
if value not in self.values:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Check the formatting of values like Time or Date
|
|
||||||
if self.type and not self.type.validate(value):
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def is_optional(self):
|
|
||||||
if self.flag is None:
|
|
||||||
return False
|
|
||||||
return "?" in self.flag
|
|
||||||
|
|
||||||
def is_allable(self):
|
|
||||||
if self.flag is None:
|
|
||||||
return False
|
|
||||||
return "*" in self.flag
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class Comment:
|
|
||||||
"Represents a comment node in the schema"
|
|
||||||
|
|
||||||
value: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class FDBSchemaTypeDef:
|
|
||||||
"Mapping between FDB schema key names and FDB Schema Types, i.e expver is of type Expver"
|
|
||||||
|
|
||||||
key: str
|
|
||||||
type: str
|
|
||||||
|
|
||||||
|
|
||||||
# This is the schema grammar written in PEG format
|
|
||||||
fdb_schema = pe.compile(
|
|
||||||
r"""
|
|
||||||
FDB < Line+ EOF
|
|
||||||
Line < Schema / Comment / TypeDef / empty
|
|
||||||
|
|
||||||
# Comments
|
|
||||||
Comment <- "#" ~non_eol*
|
|
||||||
non_eol <- [\x09\x20-\x7F] / non_ascii
|
|
||||||
non_ascii <- [\x80-\uD7FF\uE000-\U0010FFFF]
|
|
||||||
|
|
||||||
# Default Type Definitions
|
|
||||||
TypeDef < String ":" String ";"
|
|
||||||
|
|
||||||
# Schemas are the main attraction
|
|
||||||
# They're a tree of KeySpecs.
|
|
||||||
Schema < "[" KeySpecs (","? Schema)* "]"
|
|
||||||
|
|
||||||
# KeySpecs can be just a name i.e expver
|
|
||||||
# Can also have a type expver:int
|
|
||||||
# Or a flag expver?
|
|
||||||
# Or values expver=xxx
|
|
||||||
KeySpecs < KeySpec_ws ("," KeySpec_ws)*
|
|
||||||
KeySpec_ws < KeySpec
|
|
||||||
KeySpec <- key:String (flag:Flag)? (type:Type)? (values:Values)? ([ ]* comment:Comment)?
|
|
||||||
Flag <- ~("?" / "-" / "*")
|
|
||||||
Type <- ":" [ ]* String
|
|
||||||
Values <- "=" Value ("/" Value)*
|
|
||||||
|
|
||||||
# Low level stuff
|
|
||||||
Value <- ~([-a-zA-Z0-9_]+)
|
|
||||||
String <- ~([a-zA-Z0-9_]+)
|
|
||||||
EOF <- !.
|
|
||||||
empty <- ""
|
|
||||||
""",
|
|
||||||
actions={
|
|
||||||
"Schema": Pack(tuple),
|
|
||||||
"KeySpec": KeySpec,
|
|
||||||
"Values": Pack(tuple),
|
|
||||||
"Comment": Comment,
|
|
||||||
"TypeDef": FDBSchemaTypeDef,
|
|
||||||
},
|
|
||||||
ignore=Star(Class("\t\f\r\n ")),
|
|
||||||
# flags=pe.DEBUG,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def post_process(entries):
|
|
||||||
"Take the raw output from the PEG parser and split it into type definitions and schema entries."
|
|
||||||
typedefs = {}
|
|
||||||
schemas = []
|
|
||||||
for entry in entries:
|
|
||||||
match entry:
|
|
||||||
case c if isinstance(c, Comment):
|
|
||||||
pass
|
|
||||||
case t if isinstance(t, FDBSchemaTypeDef):
|
|
||||||
typedefs[t.key] = t.type
|
|
||||||
case s if isinstance(s, tuple):
|
|
||||||
schemas.append(s)
|
|
||||||
case _:
|
|
||||||
raise ValueError
|
|
||||||
return typedefs, tuple(schemas)
|
|
||||||
|
|
||||||
|
|
||||||
def determine_types(types, node):
|
|
||||||
"Recursively walk a schema tree and insert the type information."
|
|
||||||
if isinstance(node, tuple):
|
|
||||||
return [determine_types(types, n) for n in node]
|
|
||||||
return dataclasses.replace(node, type=types.get(node.key, FDBType()))
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Key:
|
|
||||||
key: str
|
|
||||||
value: Any
|
|
||||||
key_spec: KeySpec
|
|
||||||
reason: str
|
|
||||||
|
|
||||||
def str_value(self):
|
|
||||||
return self.key_spec.type.format(self.value)
|
|
||||||
|
|
||||||
def __bool__(self):
|
|
||||||
return self.reason in {"Matches", "Skipped", "Select All"}
|
|
||||||
|
|
||||||
def emoji(self):
|
|
||||||
return {"Matches": "✅", "Skipped": "⏭️", "Select All": "★"}.get(
|
|
||||||
self.reason, "❌"
|
|
||||||
)
|
|
||||||
|
|
||||||
def info(self):
|
|
||||||
return f"{self.emoji()} {self.key:<12}= {str(self.value):<12} ({self.key_spec}) {self.reason if not self else ''}"
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"{self.key}={self.key_spec.type.format(self.value)}"
|
|
||||||
|
|
||||||
def as_json(self):
|
|
||||||
return dict(
|
|
||||||
key=self.key,
|
|
||||||
value=self.str_value(),
|
|
||||||
reason=self.reason,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class FDBSchema:
|
|
||||||
"""
|
|
||||||
Represents a parsed FDB Schema file.
|
|
||||||
Has methods to validate and convert request dictionaries to a mars request form with validation and type information.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, string, defaults: dict[str, str] = {}):
|
|
||||||
"""
|
|
||||||
1. Use a PEG parser on a schema string,
|
|
||||||
2. Separate the output into schemas and typedefs
|
|
||||||
3. Insert any concrete implementations of types from fdb_types.py defaulting to generic string type
|
|
||||||
4. Walk the schema tree and annotate it with type information.
|
|
||||||
"""
|
|
||||||
m = fdb_schema.match(string)
|
|
||||||
g = list(m.groups())
|
|
||||||
self._str_types, schemas = post_process(g)
|
|
||||||
self.types = {
|
|
||||||
key: FDB_type_to_implementation[type]
|
|
||||||
for key, type in self._str_types.items()
|
|
||||||
}
|
|
||||||
self.schemas = determine_types(self.types, schemas)
|
|
||||||
self.defaults = defaults
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return json.dumps(
|
|
||||||
dict(schemas=self.schemas, defaults=self.defaults), indent=4, default=repr
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def consume_key(
|
|
||||||
cls, key_spec: KeySpec, request: dict[str, Any]
|
|
||||||
) -> Key:
|
|
||||||
key = key_spec.key
|
|
||||||
try:
|
|
||||||
value = request[key]
|
|
||||||
except KeyError:
|
|
||||||
if key_spec.is_optional():
|
|
||||||
return Key(key_spec.key, "", key_spec, "Skipped")
|
|
||||||
if key_spec.is_allable():
|
|
||||||
return Key(key_spec.key, "", key_spec, "Select All")
|
|
||||||
else:
|
|
||||||
return Key(
|
|
||||||
key_spec.key, "", key_spec, "Key Missing"
|
|
||||||
)
|
|
||||||
|
|
||||||
if key_spec.matches(key, value):
|
|
||||||
return Key(
|
|
||||||
key_spec.key,
|
|
||||||
key_spec.type.parse(value),
|
|
||||||
key_spec,
|
|
||||||
"Matches",
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return Key(
|
|
||||||
key_spec.key, value, key_spec, "Incorrect Value"
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _DFS_match(
|
|
||||||
cls, tree: list, request: dict[str, Any]
|
|
||||||
) -> tuple[bool | list, list[Key]]:
|
|
||||||
"""Do a DFS on the schema tree, returning the deepest matching path
|
|
||||||
At each stage return whether we matched on this path, and the path itself.
|
|
||||||
|
|
||||||
When traversing the tree there are three cases to consider:
|
|
||||||
1. base case []
|
|
||||||
2. one schema [k, k, k, [k, k, k]]
|
|
||||||
3. list of schemas [[k,k,k], [k,k,k], [k,k,k]]
|
|
||||||
"""
|
|
||||||
# Case 1: Base Case
|
|
||||||
if not tree:
|
|
||||||
return True, []
|
|
||||||
|
|
||||||
# Case 2: [k, k, k, [k, k, k]]
|
|
||||||
if isinstance(tree[0], KeySpec):
|
|
||||||
node, *tree = tree
|
|
||||||
# Check if this node is in the request
|
|
||||||
match_result = cls.consume_key(node, request)
|
|
||||||
|
|
||||||
# If if isn't then terminate this path here
|
|
||||||
if not match_result:
|
|
||||||
return False, [match_result,] # fmt: skip
|
|
||||||
|
|
||||||
# Otherwise continue walking the tree and return the best result
|
|
||||||
matched, path = cls._DFS_match(tree, request)
|
|
||||||
|
|
||||||
# Don't put the key in the path if it's optional and we're skipping it.
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
path = [match_result,] + path # fmt: skip
|
|
||||||
|
|
||||||
return matched, path
|
|
||||||
|
|
||||||
# Case 3: [[k, k, k], [k, k, k]]
|
|
||||||
branches = []
|
|
||||||
for branch in tree:
|
|
||||||
matched, branch_path = cls._DFS_match(branch, request)
|
|
||||||
|
|
||||||
# If this branch matches, terminate the DFS and use this.
|
|
||||||
if matched:
|
|
||||||
return branch, branch_path
|
|
||||||
else:
|
|
||||||
branches.append(branch_path)
|
|
||||||
|
|
||||||
# If no branch matches, return the one with the deepest match
|
|
||||||
return False, max(branches, key=len)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _DFS_match_all(
|
|
||||||
cls, tree: list, request: dict[str, Any]
|
|
||||||
) -> list[list[Key]]:
|
|
||||||
"""Do a DFS on the schema tree, returning all matching paths or partial matches.
|
|
||||||
At each stage return all matching paths and the deepest partial matches.
|
|
||||||
|
|
||||||
When traversing the tree there are three cases to consider:
|
|
||||||
1. base case []
|
|
||||||
2. one schema [k, k, k, [k, k, k]]
|
|
||||||
3. list of schemas [[k,k,k], [k,k,k], [k,k,k]]
|
|
||||||
"""
|
|
||||||
# Case 1: Base Case
|
|
||||||
if not tree:
|
|
||||||
return [[]]
|
|
||||||
|
|
||||||
# Case 2: [k, k, k, [k, k, k]]
|
|
||||||
if isinstance(tree[0], KeySpec):
|
|
||||||
node, *tree = tree
|
|
||||||
# Check if this node is in the request
|
|
||||||
request_values = request.get(node.key, None)
|
|
||||||
|
|
||||||
if request_values is None:
|
|
||||||
# If the key is not in the request, return a partial match with Key Missing
|
|
||||||
return [[Key(node.key, "", node, "Key Missing")]]
|
|
||||||
|
|
||||||
# If the request value is a list, try to match each value
|
|
||||||
if isinstance(request_values, list):
|
|
||||||
all_matches = []
|
|
||||||
for value in request_values:
|
|
||||||
match_result = cls.consume_key(node, {node.key: value})
|
|
||||||
|
|
||||||
if match_result:
|
|
||||||
sub_matches = cls._DFS_match_all(tree, request)
|
|
||||||
for match in sub_matches:
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
match.insert(0, match_result)
|
|
||||||
all_matches.append(match)
|
|
||||||
|
|
||||||
return all_matches if all_matches else [[Key(node.key, "", node, "No Match Found")]]
|
|
||||||
else:
|
|
||||||
# Handle a single value
|
|
||||||
match_result = cls.consume_key(node, request)
|
|
||||||
|
|
||||||
# If it isn't then return a partial match with Key Missing
|
|
||||||
if not match_result:
|
|
||||||
return [[Key(node.key, "", node, "Key Missing")]]
|
|
||||||
|
|
||||||
# Continue walking the tree and get all matches
|
|
||||||
all_matches = cls._DFS_match_all(tree, request)
|
|
||||||
|
|
||||||
# Prepend the current match to all further matches
|
|
||||||
for match in all_matches:
|
|
||||||
if match_result.reason != "Skipped":
|
|
||||||
match.insert(0, match_result)
|
|
||||||
|
|
||||||
return all_matches
|
|
||||||
|
|
||||||
# Case 3: [[k, k, k], [k, k, k]]
|
|
||||||
all_branch_matches = []
|
|
||||||
for branch in tree:
|
|
||||||
branch_matches = cls._DFS_match_all(branch, request)
|
|
||||||
all_branch_matches.extend(branch_matches)
|
|
||||||
|
|
||||||
# Return all of the deepest partial matches or complete matches
|
|
||||||
return all_branch_matches
|
|
||||||
|
|
||||||
def match_all(self, request: dict[str, Any]):
|
|
||||||
request = request | self.defaults
|
|
||||||
return self._DFS_match_all(self.schemas, request)
|
|
||||||
|
|
||||||
def match(self, request: dict[str, Any]):
|
|
||||||
request = request | self.defaults
|
|
||||||
return self._DFS_match(self.schemas, request)
|
|
||||||
|
|
||||||
|
|
||||||
class FDBSchemaFile(FDBSchema):
|
|
||||||
def __init__(self, path: str):
|
|
||||||
with open(path, "r") as f:
|
|
||||||
return super().__init__(f.read())
|
|
83
cache/fdb_schema/fdb_types.py
vendored
83
cache/fdb_schema/fdb_types.py
vendored
@ -1,83 +0,0 @@
|
|||||||
from dataclasses import dataclass
|
|
||||||
from typing import Any
|
|
||||||
import re
|
|
||||||
from collections import defaultdict
|
|
||||||
from datetime import datetime, date, time
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class FDBType:
|
|
||||||
"""
|
|
||||||
Holds information about how to format and validate a given FDB Schema type like Time or Expver
|
|
||||||
This base type represents a string and does no validation or formatting. It's the default type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
name: str = "String"
|
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
|
||||||
return self.name
|
|
||||||
|
|
||||||
def validate(self, s: Any) -> bool:
|
|
||||||
try:
|
|
||||||
self.parse(s)
|
|
||||||
return True
|
|
||||||
except (ValueError, AssertionError):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def format(self, s: Any) -> str:
|
|
||||||
return str(s).lower()
|
|
||||||
|
|
||||||
def parse(self, s: str) -> Any:
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Expver_FDBType(FDBType):
|
|
||||||
name: str = "Expver"
|
|
||||||
|
|
||||||
def parse(self, s: str) -> str:
|
|
||||||
assert bool(re.match(".{4}", s))
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Time_FDBType(FDBType):
|
|
||||||
name: str = "Time"
|
|
||||||
time_format = "%H%M"
|
|
||||||
|
|
||||||
def format(self, t: time) -> str:
|
|
||||||
return t.strftime(self.time_format)
|
|
||||||
|
|
||||||
def parse(self, s: datetime | str | int) -> time:
|
|
||||||
if isinstance(s, str):
|
|
||||||
assert len(s) == 4
|
|
||||||
return datetime.strptime(s, self.time_format).time()
|
|
||||||
if isinstance(s, datetime):
|
|
||||||
return s.time()
|
|
||||||
return self.parse(f"{s:04}")
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(repr=False)
|
|
||||||
class Date_FDBType(FDBType):
|
|
||||||
name: str = "Date"
|
|
||||||
date_format: str = "%Y%m%d"
|
|
||||||
|
|
||||||
def format(self, d: Any) -> str:
|
|
||||||
if isinstance(d, date):
|
|
||||||
return d.strftime(self.date_format)
|
|
||||||
if isinstance(d, int):
|
|
||||||
return f"{d:08}"
|
|
||||||
else:
|
|
||||||
return d
|
|
||||||
|
|
||||||
def parse(self, s: datetime | str | int) -> date:
|
|
||||||
if isinstance(s, str):
|
|
||||||
return datetime.strptime(s, self.date_format).date()
|
|
||||||
elif isinstance(s, datetime):
|
|
||||||
return s.date()
|
|
||||||
return self.parse(f"{s:08}")
|
|
||||||
|
|
||||||
|
|
||||||
FDB_type_to_implementation = defaultdict(lambda: FDBType()) | {
|
|
||||||
cls.name: cls() for cls in [Expver_FDBType, Time_FDBType, Date_FDBType]
|
|
||||||
}
|
|
77
cache/list_entire_fdb.py
vendored
77
cache/list_entire_fdb.py
vendored
@ -1,77 +0,0 @@
|
|||||||
#! catalogs/.venv/bin/python
|
|
||||||
import time
|
|
||||||
from collections import defaultdict
|
|
||||||
import os
|
|
||||||
from fdb_schema import FDBSchemaFile
|
|
||||||
os.environ["FDB5_CONFIG_FILE"] = "/home/eouser/prod_remoteFDB.yaml"
|
|
||||||
import json
|
|
||||||
|
|
||||||
schema = FDBSchemaFile("/home/eouser/catalogs/backend/destinE_schema")
|
|
||||||
|
|
||||||
import pyfdb
|
|
||||||
from collections import Counter
|
|
||||||
import os, sys
|
|
||||||
from pathlib import Path
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from compress_tree import print_schema_tree, compress_tree
|
|
||||||
|
|
||||||
request = {
|
|
||||||
"class": "d1",
|
|
||||||
}
|
|
||||||
|
|
||||||
t0 = time.time()
|
|
||||||
|
|
||||||
fdb = pyfdb.FDB()
|
|
||||||
spans = defaultdict(set)
|
|
||||||
tree = {}
|
|
||||||
|
|
||||||
total = 0
|
|
||||||
for item in fdb.list(request, keys = True):
|
|
||||||
request = item["keys"]
|
|
||||||
_, m = schema.match(request)
|
|
||||||
loc = tree
|
|
||||||
for kv in m:
|
|
||||||
k = f'{kv.key}={kv.str_value()}'
|
|
||||||
# loc["_count"] = loc.get("_count", 0) + 1
|
|
||||||
if k not in loc: loc[k] = {}
|
|
||||||
loc = loc[k]
|
|
||||||
|
|
||||||
total += 1
|
|
||||||
|
|
||||||
if total % 10_000 == 0:
|
|
||||||
os.system("clear")
|
|
||||||
print(f"Total: {total/1e3:.0f} thousand")
|
|
||||||
print(f"Runtime: {(time.time() - t0):.0f} s")
|
|
||||||
|
|
||||||
print()
|
|
||||||
print(f"Last request:")
|
|
||||||
for k, v in request.items():
|
|
||||||
print(f"{k} : {v}")
|
|
||||||
# sys.exit()
|
|
||||||
|
|
||||||
if total % 1000_000 == 0:
|
|
||||||
print("Dumping cache to cache.json")
|
|
||||||
with open("cache.json", "w") as f:
|
|
||||||
json.dump(tree, f)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
os.system("clear")
|
|
||||||
print(f"Total: {total}")
|
|
||||||
print(f"Runtime: {(time.time() - t0) / 60:.0f} mins")
|
|
||||||
|
|
||||||
cache = Path("cache.json")
|
|
||||||
if cache.exists():
|
|
||||||
backup = Path(f"backups/cache.json.backup.{datetime.now().strftime('%d.%m.%Y')}")
|
|
||||||
print(f"Moving cache to {backup}")
|
|
||||||
cache.rename(backup)
|
|
||||||
|
|
||||||
print("Dumping cache to cache.json")
|
|
||||||
with open("cache.json", "w") as f:
|
|
||||||
json.dump(tree, f)
|
|
||||||
|
|
||||||
print("Done")
|
|
||||||
sys.exit()
|
|
305
cache/pretty_compressed_cache.txt
vendored
305
cache/pretty_compressed_cache.txt
vendored
@ -1,305 +0,0 @@
|
|||||||
date_0 : date=19910410,19920514,19920519,19920527,19920617,19920625,19920626,19920629,19920720,19920724
|
|
||||||
date_1 : date=19910614,19920430,19920517
|
|
||||||
date_2 : date=19910703,19920525,19920601,19920605
|
|
||||||
date_3 : date=19910723,19920619,19920702,19920713,19920715
|
|
||||||
date_4 : date=19920423,19920529,19920618,19920704
|
|
||||||
date_5 : date=19920424,19920511,19920603,19920620,19920726
|
|
||||||
date_6 : date=19920425,19920428,19920507,19920607,19920611,19920701,19920712,19920721,19920725
|
|
||||||
date_7 : date=19920426,19920502,19920503,19920510,19920628,19920716,19920718
|
|
||||||
date_8 : date=19920427,19920508,19920516,19920622,19920708,19920801
|
|
||||||
date_9 : date=19920429,19920614,19920703,19920710,19920727
|
|
||||||
date_10 : date=19920501,19920512,19920522,19920524
|
|
||||||
date_11 : date=19920504,19920623,19920709,19920711
|
|
||||||
date_12 : date=19920505,19920515,19920531,19920610,19920612,19920615
|
|
||||||
date_13 : date=19920506,19920717,19920722
|
|
||||||
date_14 : date=19920509,19920608,19920627
|
|
||||||
date_15 : date=19920513,19920520,19920613
|
|
||||||
date_16 : date=19920518,19920602,19920719
|
|
||||||
date_17 : date=20200102,20200103,20200104,20200105,20200106,20200107,20200108,20200109,20200110,20200111,20200112,20200113,20200114,20200115,20200116,20200117,20200118,20200119,20200120,20200121,20200122,20200123,20200124,20200125,20200126,20200127,20200128,20200129,20200130,20200131,20200201,20200202,20200203,20200204,20200205,20200206,20200207,20200208,20200209,20200210,20200211,20200212,20200213,20200214,20200215,20200216,20200217,20200218,20200219,20200220,20200221,20200222,20200223,20200224,20200225,20200226,20200227,20200228,20200229,20200301,20200302,20200303,20200304,20200305,20200306,20200307,20200308,20200309,20200310,20200311,20200312,20200313,20200314,20200315,20200316,20200317,20200318,20200319,20200320,20200321,20200322,20200323,20200324,20200325,20200326,20200327,20200328,20200329,20200330,20200331,20200401,20200402,20200403,20200404,20200405,20200406,20200407,20200408,20200409,20200410,20200411,20200412,20200413,20200414,20200415,20200416,20200417,20200418,20200419,20200420,20200421,20200422,20200423,20200424,20200425,20200426,20200427,20200428,20200429,20200430,20200501,20200502,20200503,20200504,20200505,20200506,20200507,20200508,20200509,20200510,20200511,20200512,20200513,20200514,20200515,20200516,20200517,20200518,20200519,20200520,20200521,20200522,20200523,20200524,20200525,20200526,20200527,20200528,20200529,20200530,20200531,20200601,20200602,20200603,20200604,20200605,20200606,20200607,20200608,20200609,20200610,20200611,20200612,20200613,20200614,20200615,20200616,20200617,20200618,20200619,20200620,20200621,20200622,20200623,20200624,20200625,20200626,20200627,20200628,20200629,20200630,20200701,20200702,20200703,20200704,20200705,20200706,20200707,20200708,20200709,20200710,20200711,20200712,20200713,20200714,20200715,20200716,20200717,20200718,20200719,20200720,20200721,20200722,20200723,20200724,20200725,20200726,20200727,20200728,20200729,20200730,20200731,20200801,20200802,20200803,20200804,20200805,20200806,20200807,20200808,20200809,20200810,20200811,20200812,20200813,20200814,20200815,20200816,20200817,20200818,20200819,20200820,20200821,20200822,20200823,20200824,20200825,20200826,20200827,20200828,20200829,20200830,20200831,20200901,20200902,20200903,20200904,20200905,20200906,20200907,20200908,20200909,20200910,20200911,20200912,20200913,20200914,20200915,20200916,20200917,20200918,20200919,20200920,20200921,20200922,20200923,20200924,20200925,20200926,20200927,20200928,20200929,20200930,20201001,20201002,20201003,20201004,20201005,20201006,20201007,20201008,20201009,20201010,20201011,20201012,20201013,20201014,20201015,20201016,20201017,20201018,20201019,20201020,20201021,20201022,20201023,20201024,20201025,20201026,20201027,20201028,20201029,20201030,20201031,20201101,20201102,20201103,20201104,20201105,20201106,20201107,20201108,20201109,20201110,20201111,20201112,20201113,20201114,20201115,20201116,20201117,20201118,20201119,20201120,20201121,20201122,20201123,20201124,20201125,20201126,20201127,20201128,20201129,20201130,20201201,20201202,20201203,20201204,20201205,20201206,20201207,20201208,20201209,20201210,20201211,20201212,20201213,20201214,20201215,20201216,20201217,20201218,20201219,20201220,20201221,20201222,20201223,20201224,20201225,20201226,20201227,20201228,20201229,20201230,20201231,20210101,20210102,20210103,20210104,20210105,20210106,20210107,20210108,20210109,20210110,20210111,20210112,20210113,20210114,20210115,20210116,20210117,20210118,20210119,20210120,20210121,20210122,20210123,20210124,20210125,20210126,20210127,20210128,20210129,20210130,20210131,20210201,20210202,20210203,20210204,20210205,20210206,20210207,20210208,20210209,20210210,20210211,20210212,20210213,20210214,20210215,20210216,20210217,20210218,20210219,20210220,20210221,20210222,20210223,20210224,20210225,20210226,20210227,20210228,20210301,20210302,20210303,20210304,20210305,20210306,20210307,20210308,20210309,20210310,20210311,20210312,20210313,20210314,20210315,20210316,20210317,20210318,20210319,20210320,20210321,20210322,20210323,20210324,20210325,20210326,20210327,20210328,20210329,20210330,20210331,20210401,20210402,20210403,20210404,20210405,20210406,20210407,20210408,20210409,20210410,20210411,20210412,20210413,20210414,20210415,20210416,20210417,20210418,20210419,20210420,20210421,20210422,20210423,20210424,20210425,20210426,20210427,20210428,20210429,20210430,20210501,20210502,20210503,20210504,20210505,20210506,20210507,20210508,20210509,20210510,20210511,20210512,20210513,20210514,20210515,20210516,20210517,20210518,20210519,20210520,20210521,20210522,20210523,20210524,20210525,20210526,20210527,20210528,20210529,20210530,20210531,20210601,20210602,20210603,20210604,20210605,20210606,20210607,20210608,20210609,20210610,20210611,20210612,20210613,20210614,20210615,20210616,20210617,20210618,20210619
|
|
||||||
levelist_1 : levelist=10,11,12,13,14,15,16,17,18,19,1,20,21,22,23,24,25,26,27,28,29,2,30,31,32,33,34,35,36,37,38,39,3,40,41,42,43,44,45,46,47,48,49,4,50,51,52,53,54,55,56,57,58,59,5,60,61,62,63,64,65,66,67,68,69,6,70,71,72,7,8,9
|
|
||||||
levelist_2 : levelist=10,11,12,13,14,15,16,17,18,19,1,20,21,22,23,24,25,26,27,28,29,2,30,31,32,33,34,35,36,37,38,39,3,40,41,42,43,44,45,46,47,48,49,4,50,51,52,53,54,55,56,57,58,59,5,60,61,62,63,64,65,66,67,68,69,6,70,71,72,73,7,8,9
|
|
||||||
levelist_6 : levelist=10,11,12,13,14,15,16,17,18,19,1,20,21,22,23,24,25,26,27,28,29,2,30,31,32,33,34,35,36,37,38,39,3,40,41,42,43,44,45,46,47,48,49,4,50,51,52,53,54,55,56,57,58,59,5,60,61,62,63,64,65,66,67,68,69,6,70,71,72,73,74,75,7,8,9
|
|
||||||
levelist_3 : levelist=100,10,1,20,30,50,5,70
|
|
||||||
levelist_4 : levelist=100,10,150,1,20,30,50,5,70
|
|
||||||
levelist_5 : levelist=100,10,150,1,200,20,250,300,30,50,5,70
|
|
||||||
levelist_0 : levelist=1000,100,10,150,1,200,20,250,300,30,400,500,50,5,600,700,70,850,925
|
|
||||||
param_2 : param=0,263500,263501,263505,263506
|
|
||||||
param_1 : param=129,130,131,132,133,135,157,246
|
|
||||||
param_9 : param=129,130,131,132,133,135,157,246,60
|
|
||||||
param_11 : param=129,172,134,137,141,144,146,147,148,151,159,164,165,166,167,168,169,175,176,177,178,179,180,181,182,186,187,188,212,228,235,260048,78,79,8,9
|
|
||||||
param_0 : param=130,134,137,146,147,151,165,166,167,168,169,175,176,177,178,179,228164,235,260048,260654,260655,78,79
|
|
||||||
param_12 : param=134,137,141,144,146,147,148,151,159,164,165,166,167,168,169,175,176,177,178,179,180,181,182,186,187
|
|
||||||
param_8 : param=134,137,141,144,146,147,148,151,159,164,165,166,167,168,169,175,176,177,178,179,180,181,182,186,187,188,212,228,235,260048,78,79,8,9
|
|
||||||
param_10 : param=263000,263001,263003,263004,263008,263009,263021,263022,263100,263101,263121,263122,263124
|
|
||||||
param_7 : param=263000,263001,263003,263004,263008,263009,263100,263101,263121,263122,263124
|
|
||||||
param_3 : param=263000,263001,263003,263004,263009,263114,263124
|
|
||||||
param_4 : param=263500,263501,263505,263506
|
|
||||||
param_6 : param=263500,263501,263505,263506,263507
|
|
||||||
param_5 : param=263500,263501,263505,263506,263507,0
|
|
||||||
time_1 : time=0000,0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900
|
|
||||||
time_6 : time=0000,0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100
|
|
||||||
time_2 : time=0000,0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200
|
|
||||||
time_0 : time=0000,0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300
|
|
||||||
time_4 : time=0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100
|
|
||||||
time_3 : time=0100,0200,0300,0400,0500,0600,0700,0800,0900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300
|
|
||||||
time_5 : time=1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300
|
|
||||||
[class=d1, dataset=climate-dt,
|
|
||||||
[ activity=cmip6, experiment=hist, generation=1,
|
|
||||||
[ model=icon, realization=1,
|
|
||||||
[ expver=0001, stream=clte,
|
|
||||||
[ date_0, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_1, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_2, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_3, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ date=19920420,19920616, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920421, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ date=19920422, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ date_4, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_5, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ date_6, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_7, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_8, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_9, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_10, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ date_11, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ date_12, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_13, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ date_14, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ date_15, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date_16, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920521,19920523, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ date=19920526,19920706, resolution=high, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ date=19920528, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ levtype=pl,
|
|
||||||
[ time=0000, levelist_0, param_1,
|
|
||||||
[ time=0100,
|
|
||||||
[ levelist_3, param_1,
|
|
||||||
[ levelist=150, param=129,130,131,132,133,135,
|
|
||||||
[ date=19920530,19920609, resolution=high, type=fc, levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ date=19920604,19920723, resolution=high, type=fc, levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ date=19920606, resolution=high, type=fc, levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920621, resolution=high, type=fc,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=pl,
|
|
||||||
[ time_1, levelist_0, param_1,
|
|
||||||
[ time=2000,
|
|
||||||
[ levelist_4, param_1,
|
|
||||||
[ levelist=200, param=129,130,131,132,133,135,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920624,19920707, resolution=high, type=fc,
|
|
||||||
[ levtype=o3d, time=0000, levelist_1, param_4,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920630, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl,
|
|
||||||
[ time_2, levelist_0, param_1,
|
|
||||||
[ time=2300, levelist=1, param=129,130,131,
|
|
||||||
[ levtype=o3d, time=0000, levelist_2, param=0,
|
|
||||||
[ date=19920705, resolution=high, type=fc,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920714, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl,
|
|
||||||
[ time_2, levelist_0, param_1,
|
|
||||||
[ time=2300,
|
|
||||||
[ levelist_5, param_1,
|
|
||||||
[ levelist=400, param=129,130,131,132,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_2,
|
|
||||||
[ levelist=73, param=0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920728,19920731, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_5,
|
|
||||||
[ levelist=73, param=263507,0,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ date=19920729,19920730, resolution=high, type=fc,
|
|
||||||
[ levtype=sfc, time_0, param_0,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_1,
|
|
||||||
[ levtype=o3d, time=0000,
|
|
||||||
[ levelist_1, param_6,
|
|
||||||
[ levelist=73, param=263507,
|
|
||||||
[ levtype=o2d, time=0000, param_3,
|
|
||||||
[ expver=t002, stream=clte, date=19900101, resolution=standard, type=fc, levtype=o2d, time=0000, param_7,
|
|
||||||
[ model=ifs-nemo, realization=1,
|
|
||||||
[ expver=0001, stream=clte, date=19900101, resolution=standard,high, type=fc,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=sfc, time_0, param_8,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ expver=a0tn, stream=clte,
|
|
||||||
[ date=20200101,
|
|
||||||
[ resolution=standard, type=fc,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=sfc, time_0, param_8,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ resolution=high, type=fc,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ date=20200102, resolution=standard, type=fc, levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ expver=t001, stream=clte,
|
|
||||||
[ date=19900101,
|
|
||||||
[ resolution=standard, type=fc,
|
|
||||||
[ levtype=o2d, time=0000, param=263000,263001,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=sfc, time_0, param_8,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ resolution=high, type=fc,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ date=19900102,
|
|
||||||
[ resolution=standard, type=fc,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=sfc, time_0, param_8,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ resolution=high, type=fc, levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ date=19900103,19900104, resolution=standard, type=fc, levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ expver=t002, stream=clte, date=19900101, resolution=standard,high, type=fc, levtype=o2d, time=0000, param_7,
|
|
||||||
[ expver=t003, stream=clte, date=19900101, resolution=standard, type=fc, levtype=o2d, time=0000, param_7,
|
|
||||||
[ activity=scenariomip, experiment=ssp3-7.0, generation=1,
|
|
||||||
[ model=icon, realization=1, expver=t004, stream=clte, date=20200101, resolution=high, type=fc, levtype=sfc, time_2, param=228004,167,
|
|
||||||
[ model=ifs-nemo, realization=1, expver=0001, stream=clte,
|
|
||||||
[ date=20200101,
|
|
||||||
[ resolution=standard, type=fc,
|
|
||||||
[ levtype=sfc,
|
|
||||||
[ time=0000, param_11,
|
|
||||||
[ time_3, param_8,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ resolution=high, type=fc,
|
|
||||||
[ levtype=sfc,
|
|
||||||
[ time=0000,
|
|
||||||
[ param_11,
|
|
||||||
[ levelist=150,5, param=60,
|
|
||||||
[ levelist=500,70, param=135,
|
|
||||||
[ time_4,
|
|
||||||
[ param_8,
|
|
||||||
[ levelist=150,5, param=60,
|
|
||||||
[ levelist=500,70, param=135,
|
|
||||||
[ time_5,
|
|
||||||
[ param_8,
|
|
||||||
[ levelist=10, param=157,
|
|
||||||
[ levelist=150,5, param=60,
|
|
||||||
[ levelist=500,70, param=135,
|
|
||||||
[ levtype=sol,
|
|
||||||
[ time_6, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ time=2200,2300,
|
|
||||||
[ levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ param=181,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ date_17, resolution=standard,high, type=fc,
|
|
||||||
[ levtype=sfc,
|
|
||||||
[ time=0000, param_11,
|
|
||||||
[ time_3, param_8,
|
|
||||||
[ levtype=sol, time_0, levelist=1,2,3,4,5, param=228141,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=o3d, time=0000, levelist_6, param_6,
|
|
||||||
[ levtype=o2d, time=0000, param_10,
|
|
||||||
[ levtype=hl, time_0, levelist=100, param=228246,228247,
|
|
||||||
[ date=20210620,
|
|
||||||
[ resolution=standard, type=fc,
|
|
||||||
[ levtype=pl, time_0, levelist_0, param_9,
|
|
||||||
[ levtype=sfc,
|
|
||||||
[ time=0000, param_11,
|
|
||||||
[ time=0100,0200,0300,0400,0500, param_8,
|
|
||||||
[ time=0600, param_12,
|
|
||||||
[ resolution=high, type=fc, levtype=sfc, time=0000, param=129,172,
|
|
41
cache/raw_to_tree.py
vendored
41
cache/raw_to_tree.py
vendored
@ -1,41 +0,0 @@
|
|||||||
import time
|
|
||||||
from collections import defaultdict
|
|
||||||
import os
|
|
||||||
from fdb_schema import FDBSchemaFile
|
|
||||||
import json
|
|
||||||
|
|
||||||
from compress_tree import print_schema_tree, compress_tree
|
|
||||||
|
|
||||||
schema = FDBSchemaFile("/home/eouser/catalogs/backend/destinE_schema")
|
|
||||||
|
|
||||||
tree = {}
|
|
||||||
i = 0
|
|
||||||
t0 = time.time()
|
|
||||||
with open("raw_list", "r") as f:
|
|
||||||
for line in f.readlines():
|
|
||||||
i += 1
|
|
||||||
# if i > 100: break
|
|
||||||
if not line.startswith("{"): continue
|
|
||||||
line = line.strip().replace("{", "").replace("}", ",")
|
|
||||||
# d = dict((k.split("=") for k in line.split(",") if k))
|
|
||||||
# _, m = schema.match(d)
|
|
||||||
loc = tree
|
|
||||||
for k in line.split(","):
|
|
||||||
if k:
|
|
||||||
if k not in loc: loc[k] = {}
|
|
||||||
loc = loc[k]
|
|
||||||
|
|
||||||
if i % 10_000 == 0:
|
|
||||||
# compressed_tree = compress_tree(tree, max_level = None)
|
|
||||||
# with open("cache.json", "w") as f:
|
|
||||||
# json.dump(tree, f)
|
|
||||||
|
|
||||||
os.system("clear")
|
|
||||||
print(f"Total: {i}")
|
|
||||||
print(f"Runtime: {(time.time() - t0):.0f} s")
|
|
||||||
# print_tree(tree, max_depth = 7)
|
|
||||||
# print_schema_tree(compressed_tree)
|
|
||||||
|
|
||||||
with open("cache.json", "w") as f:
|
|
||||||
json.dump(tree, f)
|
|
||||||
print(tree)
|
|
25
cache/tree_to_compressed.py
vendored
25
cache/tree_to_compressed.py
vendored
@ -1,25 +0,0 @@
|
|||||||
from compress_tree import pretty_schema_tree, compress_tree
|
|
||||||
import json
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
print("Loading tree json...")
|
|
||||||
cache = Path("cache.json")
|
|
||||||
print(f"cache.json size is {cache.stat().st_size/1e6:.0f} MB")
|
|
||||||
|
|
||||||
with open(cache, "r") as f:
|
|
||||||
tree = json.load(f)
|
|
||||||
|
|
||||||
print("Compresssing...")
|
|
||||||
compressed_tree = compress_tree(tree, max_level = None)
|
|
||||||
|
|
||||||
print("Saving compressed_tree.json")
|
|
||||||
compressed_cache = Path("compressed_cache.json")
|
|
||||||
with open(compressed_cache, "w") as f:
|
|
||||||
json.dump(compressed_tree, f)
|
|
||||||
print(f"compressed_cache.json size is {compressed_cache.stat().st_size/1e3:.0f} KB")
|
|
||||||
|
|
||||||
print("Pretty printing")
|
|
||||||
pretty = pretty_schema_tree(compressed_tree)
|
|
||||||
# print(pretty)
|
|
||||||
with open("pretty_compressed_cache.txt", "w") as f:
|
|
||||||
f.write(pretty)
|
|
99
cache/update_cache.py
vendored
99
cache/update_cache.py
vendored
@ -1,99 +0,0 @@
|
|||||||
#! catalogs/.venv/bin/python
|
|
||||||
import time
|
|
||||||
from collections import defaultdict
|
|
||||||
import os
|
|
||||||
from fdb_schema import FDBSchemaFile
|
|
||||||
os.environ["FDB5_CONFIG_FILE"] = "/home/eouser/prod_remoteFDB.yaml"
|
|
||||||
import json
|
|
||||||
|
|
||||||
schema = FDBSchemaFile("/home/eouser/catalogs/backend/destinE_schema")
|
|
||||||
|
|
||||||
import pyfdb
|
|
||||||
from collections import Counter
|
|
||||||
import os, sys
|
|
||||||
from pathlib import Path
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from compress_tree import print_schema_tree, compress_tree
|
|
||||||
|
|
||||||
request = {
|
|
||||||
"class": "d1",
|
|
||||||
"date" : "-14/-1",
|
|
||||||
}
|
|
||||||
t0 = time.time()
|
|
||||||
|
|
||||||
|
|
||||||
print("Loading cache.json")
|
|
||||||
with open("cache.json", "r") as f:
|
|
||||||
tree = json.load(f)
|
|
||||||
print(f"That tooks {(time.time() - t0)/60:.0f} mins")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fdb = pyfdb.FDB()
|
|
||||||
spans = defaultdict(set)
|
|
||||||
|
|
||||||
def print_tree(t : dict, last=True, header='', name='', depth = 0, max_depth = 9):
|
|
||||||
elbow = "└──"
|
|
||||||
pipe = "│ "
|
|
||||||
tee = "├──"
|
|
||||||
blank = " "
|
|
||||||
print(header + (elbow if last else tee) + name)
|
|
||||||
# if depth == max_depth: return
|
|
||||||
if t:
|
|
||||||
subtrees = set()
|
|
||||||
leaves = defaultdict(list)
|
|
||||||
for k, v in t.items():
|
|
||||||
if k == "_count": continue
|
|
||||||
if depth < max_depth and isinstance(v, dict) and v:
|
|
||||||
subtrees.add(k)
|
|
||||||
else:
|
|
||||||
a, b = k.split("=")
|
|
||||||
leaves[a].append(b)
|
|
||||||
|
|
||||||
leaves = {n:m for n,m in leaves.items() if n != "_count"}
|
|
||||||
for i, (name, vals) in enumerate(leaves.items()):
|
|
||||||
last = 1 == (len(leaves)-1)
|
|
||||||
print(header + blank + (tee if last else elbow) + f"{name}={','.join([str(v) for v in vals])}")
|
|
||||||
|
|
||||||
for i, name in enumerate(subtrees):
|
|
||||||
print_tree(t[name], header=header + (blank if last else pipe), last= i == len(subtrees) - 1, name= name, depth = depth + 1, max_depth = max_depth)
|
|
||||||
|
|
||||||
|
|
||||||
total = 0
|
|
||||||
for item in fdb.list(request, keys = True):
|
|
||||||
request = item["keys"]
|
|
||||||
_, m = schema.match(request)
|
|
||||||
loc = tree
|
|
||||||
for kv in m:
|
|
||||||
k = f'{kv.key}={kv.str_value()}'
|
|
||||||
if k not in loc: loc[k] = {}
|
|
||||||
loc = loc[k]
|
|
||||||
|
|
||||||
|
|
||||||
total += 1
|
|
||||||
|
|
||||||
if total % 100 == 0:
|
|
||||||
os.system("clear")
|
|
||||||
print(f"Total: {total}")
|
|
||||||
print(f"Runtime: {(time.time() - t0):.0f} s")
|
|
||||||
|
|
||||||
|
|
||||||
os.system("clear")
|
|
||||||
print(f"Total: {total}")
|
|
||||||
print(f"Runtime: {(time.time() - t0) / 60:.0f} mins")
|
|
||||||
print_tree(tree, max_depth = 4)
|
|
||||||
|
|
||||||
print("Dumping tree to new_cache.json")
|
|
||||||
with open("new_cache.json", "w") as f:
|
|
||||||
json.dump(tree, f)
|
|
||||||
|
|
||||||
print(f"Moving cache to backups/cache.json.backup.{datetime.now().strftime('%d.%m.%Y')}")
|
|
||||||
Path("cache.json").rename(f"backups/cache.json.backup.{datetime.now().strftime('%d.%m.%Y')}")
|
|
||||||
|
|
||||||
print(f"Renaming new_cache.json to cache.json")
|
|
||||||
Path("new_cache.json").rename("cache.json")
|
|
||||||
|
|
||||||
print(f"Done in {(time.time() - t0)/60:.0f} min")
|
|
||||||
|
|
||||||
|
|
42
cache/view_cache.py
vendored
42
cache/view_cache.py
vendored
@ -1,42 +0,0 @@
|
|||||||
import json
|
|
||||||
from compress_tree import print_schema_tree, compress_tree
|
|
||||||
|
|
||||||
with open("./cache.json", "r") as f:
|
|
||||||
list_cache = json.load(f)
|
|
||||||
|
|
||||||
request = {
|
|
||||||
"class" : "d1",
|
|
||||||
"dataset" : "climate-dt",
|
|
||||||
"activity": "cmip6",
|
|
||||||
"experiment" : "hist",
|
|
||||||
"generation" : "1",
|
|
||||||
"model" : "icon",
|
|
||||||
"realization" : "1",
|
|
||||||
"expver" : "0001",
|
|
||||||
"stream" : "clte",
|
|
||||||
"date" : "19910410",
|
|
||||||
}
|
|
||||||
|
|
||||||
loc = list_cache
|
|
||||||
while True:
|
|
||||||
done = True
|
|
||||||
|
|
||||||
for k, v in request.items():
|
|
||||||
if f"{k}={v}" in loc:
|
|
||||||
print(f"{k}={v}")
|
|
||||||
loc = loc[f"{k}={v}"]
|
|
||||||
done = False
|
|
||||||
break
|
|
||||||
|
|
||||||
if done:
|
|
||||||
break
|
|
||||||
|
|
||||||
for k in loc.keys():
|
|
||||||
k, v = k.split("=")
|
|
||||||
print(f'"{k}" : "{v}",')
|
|
||||||
|
|
||||||
# compressed_tree = compress_tree(loc, max_level = 3)
|
|
||||||
# print_schema_tree(compressed_tree)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user