This commit is contained in:
EO User 2024-10-28 13:38:50 +00:00
parent 17e7113a8c
commit 5765da7ecc
22 changed files with 2814 additions and 174 deletions

4
.gitignore vendored
View File

@ -1,2 +1,6 @@
__pycache__ __pycache__
.DS_Store .DS_Store
config.yaml
.venv
*.json
raw_list

130
backend/destinE_schema Normal file
View File

@ -0,0 +1,130 @@
# * 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

View File

@ -1,10 +1,21 @@
from collections import defaultdict from collections import defaultdict
from typing import Any, Dict from typing import Any, Dict
import yaml
import os
from fastapi import FastAPI, Request from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from fdb_schema import FDBSchemaFile from fdb_schema import FDBSchemaFile
from fastapi.responses import RedirectResponse
from fastapi.templating import Jinja2Templates
import os
os.environ["FDB5_CONFIG_FILE"] = "/home/eouser/destine_remoteFDB_config.yaml"
import pyfdb
fdb = pyfdb.FDB()
app = FastAPI() app = FastAPI()
app.add_middleware( app.add_middleware(
@ -16,17 +27,30 @@ app.add_middleware(
) )
app.mount("/app", StaticFiles(directory="../webapp"), name="static") 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)
@app.get("/")
async def redirect_to_app(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "config": config})
language_yaml = "./language.yaml"
import yaml import yaml
with open(language_yaml, "r") as f: with open(config["mars_language"], "r") as f:
mars_language = yaml.safe_load(f)["_field"] mars_language = yaml.safe_load(f)["_field"]
###### Load FDB Schema ###### Load FDB Schema
schema = FDBSchemaFile("./standard_fdb_schema") schema = FDBSchemaFile(config["fdb_schema"])
# schema = FDBSchemaFile("./test_schema")
def request_to_dict(request: Request) -> Dict[str, Any]: def request_to_dict(request: Request) -> Dict[str, Any]:
# Convert query parameters to dictionary format # Convert query parameters to dictionary format
@ -37,42 +61,6 @@ def request_to_dict(request: Request) -> Dict[str, Any]:
request_dict[key] = value.split(",") request_dict[key] = value.split(",")
return request_dict return request_dict
@app.get("/simple")
async def get_tree(request: Request):
request_dict = request_to_dict(request)
print(request_dict)
target = next((k for k,v in request_dict.items() if v == "????"), None)
if not target:
return {"error": "No target found in request, there must be one key with value '????'"}
current_query_params = "&".join(f"{k}={v}" for k, v in request_dict.items() if k != target)
if len(current_query_params) > 1:
current_query_params += "&"
stac_collection = {
"type": "Collection",
"stac_version": "1.0.0",
"id": target,
"title" : target.capitalize(),
"key_type": mars_language.get(target, {}).get("type", ""),
"description": mars_language.get(target, {}).get("description", ""),
"values": mars_language.get(target, {}).get("values", ""),
"links": [
{
"title": str(value[-1] if isinstance(value, list) else value),
"href": f"/tree?{current_query_params}{target}={value[0] if isinstance(value, list) else value}",
"rel": "child",
"type": "application/json",
}
for value in mars_language.get(target, {}).get("values", [])
]
}
return stac_collection
@app.get("/tree") @app.get("/tree")
async def get_tree(request: Request): async def get_tree(request: Request):
# Convert query parameters to dictionary format # Convert query parameters to dictionary format
@ -97,24 +85,53 @@ async def get_tree(request: Request):
def make_link(key_name, paths): 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""" """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]] first_path = [str(p) for p in paths[0]]
href = f"/simple?{'&'.join(first_path)}{'&' if first_path else ''}{key_name}=????" 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 = [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") 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 { return {
"title": key_name, "title": key_name,
"optional": optional_str, "generalized_datacube:href_template": href_template,
# "optional_by_path": optional,
"href": href,
"rel": "child", "rel": "child",
"type": "application/json", "type": "application/json",
"paths": set(tuple(f"{m.key}={m.value}" for m in p) for p in paths), "generalized_datacube:dimension" : {
# "description": mars_language.get(key_name, {}).get("description", ""), "type" : mars_language.get(key_name, {}).get("type", ""),
# "values": mars_language.get(key_name, {}).get("values", "") "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 # Format the response as a STAC collection
stac_collection = { stac_collection = {
"type": "Collection", "type": "Collection",
@ -124,7 +141,19 @@ async def get_tree(request: Request):
"links": [ "links": [
make_link(key_name, paths) make_link(key_name, paths)
for key_name, paths in key_frontier.items() 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 return stac_collection

View File

@ -65,26 +65,24 @@ function goToNextUrl() {
const key_type = item.dataset.keyType; const key_type = item.dataset.keyType;
let values = []; let values = [];
if (key === "date") {
const datePicker = item.querySelector("input[type='date']"); const datePicker = item.querySelector("input[type='date']");
//format date as YYYYMMDD if (datePicker) {
values.push(datePicker.value.replace(/-/g, "")); values.push(datePicker.value.replace(/-/g, ""));
} else if (key === "time") {
const timePicker = item.querySelector("input[type='time']");
//format time as HHMM
console.log("replace", timePicker.value.replace(":", ""));
values.push(timePicker.value.replace(":", ""));
} else if (key_type === "enum") {
values.push(
...Array.from(
item.querySelectorAll("input[type='checkbox']:checked")
).map((checkbox) => checkbox.value)
);
} else {
const any = item.querySelector("input[type='text']");
if (any.value !== "") {
values.push(any.value);
} }
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 // Keep track of whether any new keys are selected
@ -127,53 +125,27 @@ async function createCatalogItem(link, itemsContainer) {
itemsContainer.appendChild(itemDiv); itemsContainer.appendChild(itemDiv);
try { try {
// Fetch details for each item/collection asynchronously
let base_url = new URL(window.location.href);
base_url.pathname = "/tree";
let url = new URL(link.href, base_url);
console.log("Fetching item details:", url);
const response = await fetch(url);
const itemData = await response.json();
// Update the item div with real content // Update the item div with real content
itemDiv.classList.remove("loading"); itemDiv.classList.remove("loading");
itemDiv.innerHTML = ""; // Clear "Loading..." text
const dimension = link["generalized_datacube:dimension"];
// add data-key attribute to the itemDiv // add data-key attribute to the itemDiv
itemDiv.dataset.key = itemData.id; itemDiv.dataset.key = link.title;
itemDiv.dataset.keyType = itemData.key_type; itemDiv.dataset.keyType = dimension.type;
const title = document.createElement("h3"); itemDiv.innerHTML = `
title.className = "item-title"; <h3 class="item-title">${link.title || "No title available"}</h3>
title.textContent = itemData.title || "No title available"; <p class="item-type">Key Type: ${itemDiv.dataset.keyType || "Unknown"}</p>
itemDiv.appendChild(title); <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>
`;
const key_type = document.createElement("p");
key_type.className = "item-type";
key_type.textContent = `Key Type: ${itemData.key_type || "Unknown"}`;
itemDiv.appendChild(key_type);
const optional = document.createElement("p"); if (dimension.type === "date" || dimension.type === "time") {
optional.className = "item-type";
optional.textContent = `Optional: ${link.optional || "Unknown"}`;
itemDiv.appendChild(optional);
// const id = document.createElement("p");
// id.className = "item-id";
// id.textContent = `ID: ${itemData.id || link.href.split("/").pop()}`;
// itemDiv.appendChild(id);
const description = document.createElement("p");
description.className = "item-description";
const descText = itemData.description
? itemData.description.slice(0, 100)
: "No description available";
description.textContent = `${descText}...`;
itemDiv.appendChild(description);
if (itemData.key_type === "date" || itemData.key_type === "time") {
// Render a date picker for the "date" key // Render a date picker for the "date" key
const picker = `<input type="${itemData.id}" name="${itemData.id}">`; const picker = `<input type="${link.title}" name="${link.title}">`;
//convert picker to HTML node //convert picker to HTML node
const pickerNode = document const pickerNode = document
.createRange() .createRange()
@ -182,25 +154,49 @@ async function createCatalogItem(link, itemsContainer) {
} }
// Otherwise create a scrollable list with checkboxes for values if available // Otherwise create a scrollable list with checkboxes for values if available
else if ( else if (
itemData.key_type === "enum" && // dimension.type === "enum" &&
itemData.values && dimension.values &&
itemData.values.length > 0 dimension.values.length > 0
) { ) {
const listContainer = renderCheckboxList(itemData); const listContainer = renderCheckboxList(link);
itemDiv.appendChild(listContainer); itemDiv.appendChild(listContainer);
} else { } else {
const any = `<input type="text" name="${itemData.id}">`; const any = `<input type="text" name="${link.title}">`;
const anyNode = document.createRange().createContextualFragment(any); const anyNode = document.createRange().createContextualFragment(any);
itemDiv.appendChild(anyNode); itemDiv.appendChild(anyNode);
} }
} catch (error) { } catch (error) {
console.error("Error loading item data:", error); console.error("Error loading item data:", error);
itemDiv.innerHTML = `<p>Error loading item details: ${error}</p>`;
// In case of an error, display an error message
itemDiv.innerHTML = "<p>Error loading item details</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 // Render catalog items in the sidebar
function renderCatalogItems(links) { function renderCatalogItems(links) {
const itemsContainer = document.getElementById("items"); const itemsContainer = document.getElementById("items");
@ -217,39 +213,57 @@ function renderCatalogItems(links) {
}); });
} }
// Fetch and display item details function renderRequestBreakdown(request, descriptions) {
async function loadItemDetails(url) { const container = document.getElementById("request-breakdown");
try { const format_value = (key, value) => {
const resolved_url = new URL(url, API_BASE_URL); return `<span class="value" title="${descriptions[key]['value_descriptions'][value]}">"${value}"</span>`;
const response = await fetch(resolved_url); };
const item = await response.json();
// Show details in the 'details' panel const format_values = (key, values) => {
const itemDetails = document.getElementById("item-details"); if (values.length === 1) {
itemDetails.textContent = JSON.stringify(item, null, 2); return format_value(key, values[0]);
} catch (error) {
console.error("Error loading item details:", error);
} }
} return `[${values.map((v) =>
format_value(key, v)
).join(", ")}]`;
};
function show_resp_in_sidebar(catalog) { let html = `{\n` +
const itemDetails = document.getElementById("item-details"); 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); itemDetails.textContent = JSON.stringify(catalog, null, 2);
} }
// Fetch STAC catalog and display items // Fetch STAC catalog and display items
async function fetchCatalog(stacUrl) { async function fetchCatalog(request, stacUrl) {
try { try {
const response = await fetch(stacUrl); const response = await fetch(stacUrl);
const catalog = await response.json(); const catalog = await response.json();
// Always load the most recently clicked item on the right-hand side
show_resp_in_sidebar(catalog); // 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 // Render the items from the catalog
if (catalog.links) { if (catalog.links) {
console.log("Fetched STAC catalog:", stacUrl, catalog.links); console.log("Fetched STAC catalog:", stacUrl, catalog.links);
renderCatalogItems(catalog.links); renderCatalogItems(catalog.links);
} }
// Highlight the request and raw STAC
hljs.highlightElement(document.getElementById("raw-stac"));
} catch (error) { } catch (error) {
console.error("Error fetching STAC catalog:", error); console.error("Error fetching STAC catalog:", error);
} }
@ -258,10 +272,11 @@ async function fetchCatalog(stacUrl) {
// Initialize the viewer by fetching the STAC catalog // Initialize the viewer by fetching the STAC catalog
function initializeViewer() { function initializeViewer() {
const stacUrl = getSTACUrlFromQuery(); const stacUrl = getSTACUrlFromQuery();
const request = get_request_from_url();
if (stacUrl) { if (stacUrl) {
console.log("Fetching STAC catalog from query string URL:", stacUrl); console.log("Fetching STAC catalog from query string URL:", stacUrl);
fetchCatalog(stacUrl); fetchCatalog(request, stacUrl);
} else { } else {
console.error("No STAC URL provided in the query string."); console.error("No STAC URL provided in the query string.");
} }
@ -280,36 +295,3 @@ function initializeViewer() {
// Call initializeViewer on page load // Call initializeViewer on page load
initializeViewer(); initializeViewer();
function renderCheckboxList(itemData) {
const listContainer = document.createElement("div");
listContainer.className = "item-list-container";
const listLabel = document.createElement("label");
listLabel.textContent = "Select values:";
listLabel.className = "list-label";
const scrollableList = document.createElement("div");
scrollableList.className = "scrollable-list";
const checkboxesHtml = itemData.values
.map((valueArray) => {
const value = Array.isArray(valueArray) ? valueArray[0] : valueArray;
const labelText = Array.isArray(valueArray)
? valueArray.join(" - ")
: valueArray;
return `
<div class="checkbox-container">
<input type="checkbox" class="item-checkbox" value="${value}">
<label class="checkbox-label">${labelText}</label>
</div>
`;
})
.join("");
scrollableList.innerHTML = checkboxesHtml;
listContainer.appendChild(listLabel);
listContainer.appendChild(scrollableList);
return listContainer;
}

View File

@ -4,7 +4,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>STAC Viewer</title> <title>STAC Viewer</title>
<link rel="stylesheet" href="styles.css" /> <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>
</head> </head>
<body> <body>
<div id="viewer"> <div id="viewer">
@ -23,11 +27,18 @@
</div> </div>
</div> </div>
<div id="details"> <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> <h2>Raw STAC</h2>
<pre id="item-details"></pre> <pre><code id="raw-stac" class="language-json"></code></pre>
</div> </div>
</div> </div>
<script src="app.js"></script> <script src="/app/app.js"></script>
</body> </body>
</html> </html>

View File

@ -85,7 +85,7 @@ canvas {
border-color: #003399; /* Keep the original ECMWF blue for the border */ border-color: #003399; /* Keep the original ECMWF blue for the border */
} }
#item-details { #raw-stac {
white-space: pre-wrap; white-space: pre-wrap;
background-color: #f9f9f9; background-color: #f9f9f9;
padding: 10px; padding: 10px;
@ -147,7 +147,20 @@ button:hover {
.list-label { .list-label {
font-weight: bold; font-weight: bold;
margin-bottom: 5px; margin-bottom: 0.5em;
display: block; display: block;
color: #003399; color: #003399;
} }
span.key, span.value {
color: #ba2121;;
}
span.key {
font-weight: bold;
}
span.key:hover, span.value:hover {
color: #ff2a2a;
cursor: pointer;
}

123
cache/cache.py vendored Normal file
View File

@ -0,0 +1,123 @@
#! 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 compress_tree import print_schema_tree, compress_tree
request = {
"class": "d1",
# "dataset": "climate-dt",
"dataset" : "extremes-dt",
"date" : "-14/-1",
# "time": "0000"
# "activity": 'cmip6',
# "expver": "0001",
"stream": "oper",
# "date": "-1",
# "time": "0000",
# "type": "fc",
# "levtype": "sfc",
"step": "0",
# "param": ""
}
request = {
"class": "d1",
# "dataset": "climate-dt",
# "date" : "19920422",
# "time": "0000"
# "activity": 'cmip6',
# "expver": "0001",
# "stream": "oper",
# "date": "-1",
# "time": "0000",
# "type": "fc",
# "levtype": "sfc",
# "step": "0",
# "param": "129"
}
t0 = time.time()
fdb = pyfdb.FDB()
# spans = defaultdict(Counter)
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)
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]
# print(request)
# print(m)
# sys.exit()
total += 1
# for k, v in request.items():
# # spans[k][v] += 1
# spans[k].add(v)
if total % 1000 == 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: {total}")
print(f"Runtime: {(time.time() - t0):.0f} s")
# print_tree(tree, max_depth = 7)
print_schema_tree(compressed_tree)
os.system("clear")
print(f"Total: {total}")
print(f"Runtime: {(time.time() - t0) / 60:.0f} mins")
print_tree(tree, max_depth = 4)
with open("cache.json", "w") as f:
json.dump(tree, f)

1
cache/climate-dt-cache.json vendored Normal file

File diff suppressed because one or more lines are too long

87
cache/compress_tree.py vendored Normal file
View File

@ -0,0 +1,87 @@
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 print_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)
for k, v in sorted(name_cache.items()):
# print(f"{k} : {','.join(sorted(v.split(","), key = int))}")
print(f"{v} : {k}")
print()
print(schema_tree)

479
cache/demo.cast vendored Normal file
View File

@ -0,0 +1,479 @@
{"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"]

View File

@ -111,9 +111,10 @@ fdb_schema = pe.compile(
KeySpec <- key:String (flag:Flag)? (type:Type)? (values:Values)? ([ ]* comment:Comment)? KeySpec <- key:String (flag:Flag)? (type:Type)? (values:Values)? ([ ]* comment:Comment)?
Flag <- ~("?" / "-" / "*") Flag <- ~("?" / "-" / "*")
Type <- ":" [ ]* String Type <- ":" [ ]* String
Values <- "=" String ("/" String)* Values <- "=" Value ("/" Value)*
# Low level stuff # Low level stuff
Value <- ~([-a-zA-Z0-9_]+)
String <- ~([a-zA-Z0-9_]+) String <- ~([a-zA-Z0-9_]+)
EOF <- !. EOF <- !.
empty <- "" empty <- ""
@ -161,6 +162,9 @@ class Key:
key_spec: KeySpec key_spec: KeySpec
reason: str reason: str
def str_value(self):
return self.key_spec.type.format(self.value)
def __bool__(self): def __bool__(self):
return self.reason in {"Matches", "Skipped", "Select All"} return self.reason in {"Matches", "Skipped", "Select All"}
@ -178,7 +182,7 @@ class Key:
def as_json(self): def as_json(self):
return dict( return dict(
key=self.key, key=self.key,
value=self.as_string(), value=self.str_value(),
reason=self.reason, reason=self.reason,
) )

41
cache/raw_to_tree.py vendored Normal file
View File

@ -0,0 +1,41 @@
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)

12
cache/tree_to_compressed.py vendored Normal file
View File

@ -0,0 +1,12 @@
from compress_tree import print_schema_tree, compress_tree
import json
print("Loading tree json...")
with open("cache.json", "r") as f:
tree = json.load(f)
print("Compresssing...")
compressed_tree = compress_tree(tree, max_level = None)
print("Outputting")
print_schema_tree(compressed_tree)

1
fdb_schema/__init__.py Normal file
View File

@ -0,0 +1 @@
from .fdb_schema_parser import FDBSchema, FDBSchemaFile, KeySpec, Key

View File

@ -0,0 +1,375 @@
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
fdb_schema/fdb_types.py Normal file
View File

@ -0,0 +1,83 @@
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]
}

7
run.sh
View File

@ -1,2 +1,7 @@
cd backend cd backend
fastapi dev main.py # ../.venv/bin/fastapi dev main.py
../.venv/bin/uvicorn main:app --reload \
--reload-include="*.html" \
--reload-include="*.css" \
--reload-include="*.js" \
--reload-include="*.yaml"

7
run_prod.sh Executable file
View File

@ -0,0 +1,7 @@
cd backend
# sudo ../.venv/bin/fastapi dev main.py --port 80
sudo ../.venv/bin/uvicorn main:app --port 80 --host 0.0.0.0 --reload\
--reload-include="*.html" \
--reload-include="*.css" \
--reload-include="*.js" \
--reload-include="*.yaml"