diff --git a/docs/source/_static/DLC_to_poseinterface_worklow.svg b/docs/source/_static/DLC_to_poseinterface_worklow.svg
new file mode 100644
index 0000000..11d9af8
--- /dev/null
+++ b/docs/source/_static/DLC_to_poseinterface_worklow.svg
@@ -0,0 +1,5 @@
+
+
+DLC project benchmark project {DLCProjectName}/ └── labeled-data/ ├── videos/ ├── {VideoName}.mp4 └── {VideoName}/ ├── CollectedData_{Name}.csv ├── img{index}.png ├── img{index}.png ├── {VideoName}{model}.csv └── {VideoName}{model}.h5 poseinterface_benchmarks/ └── Train/ └── {BenchmarkProjectName}/ ├── Frames/ ├── sub-{ID}_ses-{ID}_cam-{ID}_frame-{index}.png ├── sub-{ID}_ses-{ID}_cam-{ID}_frame-{index}.png ├── ... └── sub-{ID}_ses-{ID}_cam-{ID}_framelabels.json ├── sub-{ID}_ses-{ID}_cam-{ID}.mp4 └── sub-{ID}_ses-{ID}/ ├── sub-{ID}_ses-{ID}_cam-{ID}_start-{index}_dur-{N}.mp4 ├── sub-{ID}_ses-{ID}_cam-{ID}_start-{index}_dur-{N}_cliplabels.json └── ... └── ... annotations_to_poseinterface frames_to_poseinterface video_to_poseinterface predictions_to_poseinterface ├── sub-{ID}_ses-{ID}_cam-{ID}_videolabels.json extract_clip exctract_clip 1. Convert project run once per session 2. Extract clips can be run many times per session └── Clips/
diff --git a/docs/source/_static/project_icon.png b/docs/source/_static/project_icon.png
new file mode 100644
index 0000000..0d48013
Binary files /dev/null and b/docs/source/_static/project_icon.png differ
diff --git a/docs/source/api_index.rst b/docs/source/api_index.rst
index 7e8de89..5ef924b 100644
--- a/docs/source/api_index.rst
+++ b/docs/source/api_index.rst
@@ -2,7 +2,7 @@ API
===
io
-----
+--
.. currentmodule:: poseinterface.io
@@ -11,11 +11,14 @@ io
:template: function.rst
annotations_to_poseinterface
- video_to_poseinterface
+ frames_to_poseinterface
predictions_to_poseinterface
+ video_to_poseinterface
+
clips
-----
+
.. currentmodule:: poseinterface.clips
.. autosummary::
@@ -23,3 +26,15 @@ clips
:template: function.rst
extract_clip
+
+
+utils
+-----
+
+.. currentmodule:: poseinterface.utils
+
+.. autosummary::
+ :toctree: api_generated
+ :template: function.rst
+
+ tree
diff --git a/docs/source/benchmark-dataset.md b/docs/source/benchmark-dataset.md
index e21cebb..fc620d9 100644
--- a/docs/source/benchmark-dataset.md
+++ b/docs/source/benchmark-dataset.md
@@ -17,6 +17,7 @@ We mark requirements with italicised *keywords* that should be interpreted as de
The current scope is limited to **single-animal pose estimation** from a **single camera view**. Support for multi-camera setups is planned for a future version.
+(target-dataset-folder-structure)=
## Folder structure
:::{note}
diff --git a/docs/source/conf.py b/docs/source/conf.py
index aaca80a..45a85be 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -76,6 +76,9 @@
autosummary_generate = True
autodoc_default_flags = ["members", "inherited-members"]
+# sphinx-autodoc-typehints configuration
+always_use_bars_union = True
+
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
@@ -86,6 +89,12 @@
"**/includes/**",
# Auto-generated by sphinx-gallery; contains dangling refs to ignored examples
"sg_execution_times.rst",
+ # exclude .py and .ipynb files in examples generated by sphinx-gallery
+ # this is to prevent sphinx from complaining about duplicate source files
+ "auto_examples/*.ipynb",
+ "auto_examples/*.py",
+ "auto_examples/**/*.ipynb",
+ "auto_examples/**/*.py",
]
# -- Options for HTML output -------------------------------------------------
@@ -138,14 +147,12 @@
}
# -- Sphinx-Gallery configuration -------------------------------------------
+
sphinx_gallery_conf = {
"examples_dirs": ["../../examples"],
"gallery_dirs": ["auto_examples"],
- # Patterns of example filenames to ignore (not built or shown in gallery).
- # Use this for scripts that depend on data/resources not available in CI
- # or on the developer's machine (e.g. files on a specific mount point).
- # To re-enable an example, remove its pattern from this list.
- "ignore_pattern": r"SWC-plusmaze_to_benchmark",
+ "reference_url": {"poseinterface": None},
+ "filename_pattern": "/*.py", # which files to execute before inclusion
}
# -- linkcheck configuration -------------------------------------------------
diff --git a/examples/SWC-plusmaze_to_benchmark.py b/examples/SWC-plusmaze_to_benchmark.py
deleted file mode 100644
index 7fa4600..0000000
--- a/examples/SWC-plusmaze_to_benchmark.py
+++ /dev/null
@@ -1,130 +0,0 @@
-"""Convert SWC EPM dataset to pose benchmarks format
-====================================================
-Convert keypoint annotations
-from the Elevated Plus Maze (EPM) dataset from DLC to COCO format.
-
-Also copy a video and its labeled frames to a target directory,
-organised in the pose benchmarks dataset structure.
-"""
-
-# %%
-# Imports
-# -------
-import shutil
-from pathlib import Path
-
-from poseinterface.io import annotations_to_poseinterface
-
-# %%
-# Background
-# ----------
-# We've identified potential datasets from SWC that could be used for the pilot
-# version of the pose benchmark dataset.
-# Among these is the Elevated Plus Maze (EPM) dataset produced by
-# Loukia Katsouri, for John O'Keefe's lab.
-# It contains single-animal top-down videos of mice exploring an elevated plus
-# maze, with keypoint annotations and predictions from DeepLabCut (DLC).
-#
-# In this example, we convert the DLC annotations to COCO .json format.
-
-# %%
-# Define source and target directories
-# ------------------------------------
-# We specify the paths to the source DLC project directory
-# as well as the target directory where converted files will be saved.
-# The target will be organised in the pose benchmarks dataset structure.
-
-source_base_dir = Path(
- "/media/ceph-niu/neuroinformatics/sirmpilatzen/behav_data"
- "/Loukia/MASTER_DoNotModify"
-)
-source_project_dir = source_base_dir / "MouseTopDown-Loukia-2022-09-13"
-assert source_project_dir.exists(), (
- f"DLC project directory not found: {source_project_dir}"
-)
-
-target_base_dir = Path("/mnt/Data/pose_benchmarks")
-target_dataset_dir = target_base_dir / "SWC-plusmaze"
-target_dataset_dir.mkdir(parents=True, exist_ok=True)
-
-# %%
-# Copy video to target location
-# -----------------------------
-# We identify a specific video by name and copy it to the target directory
-# with a standardised naming convention.
-
-source_video_name = "M708149_EPM_20200317_165049331-converted.mp4"
-source_video_path = source_project_dir / "videos" / source_video_name
-
-# Define subject, session, and view identifiers
-subject_id = "M708149"
-session_id = "20200317"
-view_id = "topdown"
-video_id = f"sub-{subject_id}_ses-{session_id}_view-{view_id}"
-
-# Create target session directory
-target_session_dir = target_dataset_dir / f"sub-{subject_id}_ses-{session_id}"
-target_session_dir.mkdir(parents=True, exist_ok=True)
-
-# Copy video to target location
-target_video_path = target_session_dir / f"{video_id}.mp4"
-if not target_video_path.exists():
- shutil.copy2(source_video_path, target_video_path)
- print(f"Copied video to: {target_video_path}")
-else:
- print(f"Video already exists at: {target_video_path}")
-
-# %%
-# Define source annotations path
-# ------------------------------
-# The first attempt failed because the paths in the DLC annotations
-# csv file were given as
-# ``labeled-data,,.``
-# instead of the required
-# ``labeled-data//.``.
-# We fixed this by replacing the commas with slashes in the csv file.
-
-source_labels_dir = (
- source_project_dir / "labeled-data" / source_video_name.replace(".mp4", "")
-)
-source_annotations_path = source_labels_dir / "CollectedData_Loukia.csv"
-
-# Create Frames directory inside the session directory
-target_frames_dir = target_session_dir / "Frames"
-target_frames_dir.mkdir(parents=True, exist_ok=True)
-
-# %%
-# Convert DLC annotations to COCO format
-# --------------------------------------
-# Here we use the :func:`annotations_to_poseinterface`
-# function from `poseinterface.io`
-# which wraps around `sleap_io` functionality to perform the conversion.
-
-output_annotations_path = annotations_to_poseinterface(
- input_path=source_annotations_path,
- output_dir=target_frames_dir,
- sub_id=subject_id,
- ses_id=session_id,
- cam_id=view_id,
-)
-print(f"Saved COCO annotations to: {output_annotations_path}")
-
-# %%
-# Copy labeled frames to target directory
-# ---------------------------------------
-# Copy the frames used for labeling and rename them to follow
-# the naming convention:
-# ``sub-{subjectID}_ses-{SessionID}_view-{ViewID}_frame-{FrameID}.png``
-
-for source_frame_path in source_labels_dir.glob("*.png"):
- # Extract frame number from original filename, e.g. "img0042.png" -> "0042"
- frame_number = source_frame_path.stem.replace("img", "")
- target_frame_path = (
- target_frames_dir / f"{video_id}_frame-{frame_number}.png"
- )
- if not target_frame_path.exists():
- shutil.copy2(source_frame_path, target_frame_path)
-
-print(f"Copied labeled frames to: {target_frames_dir}")
-
-# %%
diff --git a/examples/convert_dlc_to_benchmark.py b/examples/convert_dlc_to_benchmark.py
new file mode 100644
index 0000000..92fd996
--- /dev/null
+++ b/examples/convert_dlc_to_benchmark.py
@@ -0,0 +1,356 @@
+"""Convert DeepLabCut project to benchmark dataset
+==================================================
+
+Create a ``poseinterface`` benchmark dataset from a DeepLabCut (DLC) project.
+"""
+
+# sphinx_gallery_thumbnail_path = '_static/project_icon.png'
+
+# %%
+# Imports
+# -------
+import json
+import shutil
+import tempfile
+from datetime import datetime, timezone
+from pathlib import Path
+
+import poseinterface
+from poseinterface.clips import extract_clip
+from poseinterface.io import (
+ annotations_to_poseinterface,
+ frames_to_poseinterface,
+ predictions_to_poseinterface,
+ video_to_poseinterface,
+)
+from poseinterface.utils import tree
+
+# %%
+# Overview
+# --------
+# We'll handle the conversion in two steps:
+#
+# 1. **Convert:** DLC project files (videos, frame annotations, and
+# keypoint predictions) are restructured into the
+# :ref:`poseinterface benchmark layout `.
+# 2. **Extract clips:** Short video clips and their labels are extracted
+# from the converted videos and their corresponding keypoint
+# predictions, ready for expert review.
+#
+# .. figure:: /_static/DLC_to_poseinterface_worklow.svg
+# :alt: Workflow diagram showing how a DLC project is converted
+# to a poseinterface benchmark dataset
+# :align: center
+#
+# High-level overview of the two-step conversion workflow.
+
+# %%
+# Source DLC project
+# ------------------
+# We work with a dataset from the
+# `Sainsbury Wellcome Centre (SWC) `_,
+# produced by Loukia Katsouri from John O'Keefe's lab.
+# It contains single-animal top-down videos of mice exploring an
+# Elevated Plus Maze (EPM), analysed using
+# `DeepLabCut (DLC) `_.
+#
+# .. note::
+#
+# This example runs against a lightweight fixture shipped with the
+# repository (under ``tests/data/``). This fixture contains only a subset
+# of the original DLC project, and is intended for testing and demonstration
+# purposes.
+#
+# Replace ``source_project_dir`` and ``benchmark_base_dir`` with the paths
+# to your DLC project and benchmark dataset directories, respectively. Keep
+# in mind that your project will contain more files than are shown here.
+
+
+source_project_dir = (
+ Path(".").resolve().parent
+ / "tests"
+ / "data"
+ / "dlc"
+ / "MouseTopDown-Loukia-2022-09-13"
+)
+print(tree(source_project_dir, level=1, exclude_hidden=True))
+
+# For this example we use a temporary directory, cleaned up at the end.
+benchmark_base_dir = Path(tempfile.mkdtemp(prefix="poseinterface-benchmark-"))
+print(f"\nBenchmark dataset will be saved to: {benchmark_base_dir}")
+
+# %%
+# The two source project sub-directories we care about are:
+#
+# - ``videos/``: the session videos and their corresponding prediction files.
+# - ``labeled-data/``: sampled frames and their keypoint annotations.
+#
+# Let's peek inside each.
+
+print(tree(source_project_dir / "videos", level=1, exclude_hidden=True))
+
+# %%
+# In ``videos/``, each video (ending in ``converted.mp4``) has a companion .csv
+# prediction file.
+
+print(tree(source_project_dir / "labeled-data", level=2, exclude_hidden=True))
+
+# %%
+# In ``labeled-data/``, the sub-directories mirror the video names (without
+# .mp4) and contain the sampled frame images (.png) and their annotations
+# (.csv). In real projects you may also find predictions and annotations in
+# .h5 format, as well as filtered prediction files.
+
+# %%
+# Define sessions to convert
+# ---------------------------
+# We select two sessions from the DLC project and assign each to either
+# the ``Train`` or ``Test`` split of the
+# :ref:`benchmark dataset `.
+# You may expand this list with more sessions, but ensure that each session
+# belongs to exactly one split, and that the same subject doesn't appear in
+# both splits (to avoid data leakage).
+# All videos use the same top-down camera view (``cam-topdown``).
+
+sessions = [
+ {
+ "split": "Train",
+ "source_video": "M727755_EPM_20200317_170544999-converted.mp4",
+ "sub_id": "M727755",
+ "ses_id": "20200317",
+ "cam_id": "topdown",
+ },
+ {
+ "split": "Test",
+ "source_video": "M708154_EPM_20200317_185651629-converted.mp4",
+ "sub_id": "M708154",
+ "ses_id": "20200317",
+ "cam_id": "topdown",
+ },
+]
+
+project_name = "SWC-plusmaze"
+
+# %%
+# Convert to benchmark format
+# ----------------------------
+# For each session we:
+#
+# 1. copy (and re-encode, if necessary) the session video;
+# 2. convert DLC keypoint annotations to COCO JSON, as well as copy and
+# rename the corresponding frame images;
+# 3. convert DLC keypoint predictions to COCO JSON.
+
+for session in sessions:
+ split = session["split"]
+ ids = {k: session[k] for k in ["sub_id", "ses_id", "cam_id"]}
+ sub_ses_prefix = f"sub-{ids['sub_id']}_ses-{ids['ses_id']}"
+ sub_ses_cam_prefix = f"{sub_ses_prefix}_cam-{ids['cam_id']}"
+ source_video_path = source_project_dir / "videos" / session["source_video"]
+ source_frames_dir = (
+ source_project_dir / "labeled-data" / source_video_path.stem
+ )
+ target_session_dir = (
+ benchmark_base_dir / split / project_name / sub_ses_prefix
+ )
+ target_frames_dir = target_session_dir / "Frames"
+ target_frames_dir.mkdir(parents=True, exist_ok=True)
+
+ print(f"Converting session: {split}/{project_name}/{sub_ses_prefix}")
+ # Copy the session video, re-encoding to H.264/yuv420p if necessary
+ video_to_poseinterface(
+ input_video=source_video_path,
+ output_video_dir=target_session_dir,
+ **ids,
+ )
+ print(f"\tvideo: {source_video_path.name} -> {sub_ses_cam_prefix}.mp4")
+
+ # Convert DLC annotations to COCO frame labels JSON, then copy the
+ # corresponding frame images with standardised poseinterface filenames.
+ # In real projects there may be multiple annotation CSVs (e.g. for
+ # different labelers); adjust the glob pattern to select the right one.
+ source_annotations_path = next(
+ source_frames_dir.glob("CollectedData_*.csv"),
+ None,
+ )
+ if source_annotations_path is None:
+ print(
+ f"\tNo CollectedData CSV found in {source_frames_dir}."
+ " Skipping annotations-to-poseinterface conversion."
+ )
+ else:
+ framelabels_path = annotations_to_poseinterface(
+ input_path=source_annotations_path,
+ output_dir=target_frames_dir,
+ format="frame",
+ **ids,
+ )
+ frames_to_poseinterface(
+ input_dir=source_frames_dir,
+ output_dir=target_frames_dir,
+ framelabels_path=framelabels_path,
+ )
+ print(
+ f"\tannotations (+ frame images): {source_annotations_path.name} "
+ f"-> {framelabels_path.name}"
+ )
+
+ # Convert DLC predictions to COCO video labels JSON for clip extraction.
+ # In real projects there may be multiple prediction CSVs (e.g. filtered
+ # versions); adjust the glob pattern to select the right one.
+ source_predictions_path = next(
+ (source_project_dir / "videos").glob(f"{source_video_path.stem}*.csv"),
+ None,
+ )
+ if source_predictions_path is None:
+ print(
+ f"\tNo prediction CSV found for {source_video_path.stem!r} in "
+ f"{source_project_dir / 'videos'}. Skipping predictions-to-"
+ "poseinterface conversion."
+ )
+ else:
+ predictions_to_poseinterface(
+ input_path=source_predictions_path,
+ video_path=source_video_path,
+ output_dir=target_session_dir,
+ **ids,
+ )
+ print(
+ f"\tpredictions: {source_predictions_path.name} -> "
+ f"{sub_ses_cam_prefix}_videolabels.json"
+ )
+ print("Done.\n")
+
+# %%
+# The resulting benchmark dataset:
+
+print(tree(benchmark_base_dir, level=5))
+
+# %%
+# .. note::
+#
+# Frame labels (``framelabels.json``) are generated for both splits, but in
+# the **published** dataset the ``Test`` split intentionally omits them for
+# evaluation. See the
+# :ref:`folder structure specification` for
+# details.
+#
+# The ``videolabels.json`` files generated alongside each session video are
+# intermediate artifacts used for clip extraction in the next section, and
+# will not be included in the published dataset.
+
+
+# %%
+# Extract clips
+# -------------
+# Clips (short video segments) can be extracted from the converted session
+# videos. When the ``videolabels.json`` files are present, the corresponding
+# clip label files (``cliplabels.json``) are generated automatically during
+# clip extraction.
+# These clip label files should then be proof-read and corrected by
+# experts before being included in the benchmark dataset.
+#
+# First, we specify the clip-extraction parameters. This step can be repeated
+# with different parameters to incrementally expand the clip set.
+
+duration = 5 # in frames
+start_frames = [25, 50, 75]
+print(f"Extracting {duration}-frame clips starting at frames: {start_frames}")
+
+# %%
+# We loop over all sessions and extract clips at each start frame.
+# The resulting video clips and their ``cliplabels.json`` files are saved
+# in a ``Clips/`` subdirectory within each session folder.
+
+for session in sessions:
+ sub_ses_prefix = f"sub-{session['sub_id']}_ses-{session['ses_id']}"
+ sub_ses_cam_prefix = f"{sub_ses_prefix}_cam-{session['cam_id']}"
+ session_dir = (
+ benchmark_base_dir / session["split"] / project_name / sub_ses_prefix
+ )
+
+ for start_frame in start_frames:
+ clip_path, _ = extract_clip(
+ video_path=session_dir / f"{sub_ses_cam_prefix}.mp4",
+ start_frame=start_frame,
+ duration=duration,
+ )
+ print(f"Extracted clip: {clip_path.stem}")
+
+
+# %%
+# The resulting benchmark dataset, including the extracted clips and their
+# corresponding labels:
+
+print(tree(benchmark_base_dir, level=5))
+
+
+# %%
+# .. note::
+#
+# In the published dataset, the ``Train`` split includes all
+# ``cliplabels.json`` files. The ``Test`` split omits all
+# ``cliplabels.json`` files and instead provides only clip start labels
+# (``startlabels.json``), derived from each clip's first frame,
+# to support point-tracker evaluation.
+# The ``videolabels.json`` files generated in the previous section are
+# intermediate artifacts used for clip extraction, and are never shared.
+# See the :ref:`folder structure specification` for details.
+
+
+# %%
+# Record provenance (optional)
+# ----------------------------
+# This step is optional and can be safely skipped, but it is highly recommended
+# when converting real data, for book-keeping and reproducibility purposes.
+#
+# We save a copy of this script alongside a JSON sidecar with the
+# ``poseinterface`` version (including git commit, via ``setuptools_scm``)
+# and a UTC timestamp. Both files are written to a top-level
+# ``.provenance/`` folder, named by project, so multiple projects under the
+# same ``benchmark_base_dir`` stay distinct.
+
+# sphinx_gallery_capture_repr = ()
+provenance_dir = benchmark_base_dir / ".provenance"
+provenance_dir.mkdir(parents=True, exist_ok=True)
+
+# ``__file__`` is set when running this script directly with Python, but not
+# when sphinx-gallery executes it during the docs build, guard accordingly.
+script_path_str = globals().get("__file__")
+if script_path_str:
+ shutil.copy(Path(script_path_str), provenance_dir / f"{project_name}.py")
+
+(provenance_dir / f"{project_name}.json").write_text(
+ json.dumps(
+ {
+ "poseinterface_version": poseinterface.__version__,
+ "converted_at": datetime.now(timezone.utc).isoformat(),
+ "source_project_dir": str(source_project_dir),
+ },
+ indent=2,
+ )
+)
+
+# %%
+# Clean up
+# --------
+# Since this example writes to a temporary directory, we remove it at the end.
+#
+# .. warning::
+#
+# Only run this cell when ``benchmark_base_dir`` points to a temporary
+# location. The guard below refuses to delete anything outside the system
+# temp directory, so it is safe to leave in place when you adapt this
+# example to a real benchmark dataset path.
+
+system_tempdir = Path(tempfile.gettempdir()).resolve()
+target = benchmark_base_dir.resolve()
+if target.is_relative_to(system_tempdir) and target != system_tempdir:
+ shutil.rmtree(target)
+ print(f"Removed temporary benchmark directory: {target}")
+else:
+ print(
+ f"Refusing to remove {target}: not inside system temp dir "
+ f"({system_tempdir}). Delete manually if you really want to."
+ )
diff --git a/poseinterface/io.py b/poseinterface/io.py
index 4a6b798..bbabfa8 100644
--- a/poseinterface/io.py
+++ b/poseinterface/io.py
@@ -5,6 +5,7 @@
import logging
import re
import shutil
+import warnings
from pathlib import Path
from typing import Literal, TypeAlias
@@ -466,6 +467,69 @@ def _reencode_video(
return reencoded_video_path
+def frames_to_poseinterface(
+ input_dir: Path,
+ output_dir: Path,
+ framelabels_path: Path,
+) -> None:
+ """Copy and rename frame images to match filenames in COCO JSON.
+
+ Source frames are matched to target names by frame number: the
+ first group of digits in each source filename is compared against
+ the ``frame-`` field in the COCO ``file_name`` entries.
+
+ Parameters
+ ----------
+ input_dir
+ Directory containing the source frame images (e.g. DLC
+ ``labeled-data//`` folder).
+ output_dir
+ Directory to copy the renamed frames into.
+ framelabels_path
+ Path to a COCO JSON file whose ``images`` entries provide
+ the target filenames.
+
+ Raises
+ ------
+ FileNotFoundError
+ If a source frame cannot be found for a frame number
+ listed in the COCO JSON.
+ """
+ # Build a map from frame number to source image path
+ source_frame_map: dict[int, Path] = {}
+ for ext in ("*.jpg", "*.jpeg", "*.png"):
+ for img_path in input_dir.glob(ext):
+ match = re.search(r"(\d+)", img_path.stem)
+ if match:
+ source_frame_map[int(match.group(1))] = img_path
+
+ if not source_frame_map:
+ raise FileNotFoundError(f"No image files found in {input_dir}")
+
+ with open(framelabels_path) as f:
+ coco_data = json.load(f)
+
+ missing_frames = []
+ for img in coco_data["images"]:
+ target_filename = img["file_name"]
+ frame_number = _extract_frame_number(target_filename)
+ if frame_number not in source_frame_map:
+ missing_frames.append(target_filename)
+ continue
+ target_path = output_dir / target_filename
+ if not target_path.exists():
+ shutil.copy2(source_frame_map[frame_number], target_path)
+
+ if missing_frames:
+ missing = "\n".join(f" {f}" for f in missing_frames)
+ warnings.warn(
+ f"{len(missing_frames)} frame(s) not found in {input_dir} "
+ f"and were skipped:\n{missing}",
+ UserWarning,
+ stacklevel=2,
+ )
+
+
def predictions_to_poseinterface(
input_path: Path | str,
video_path: Path | str,
diff --git a/poseinterface/utils.py b/poseinterface/utils.py
new file mode 100644
index 0000000..b95bd40
--- /dev/null
+++ b/poseinterface/utils.py
@@ -0,0 +1,97 @@
+"""General utility functions for ``poseinterface``."""
+
+from collections.abc import Iterator
+from itertools import islice
+from pathlib import Path
+
+
+def tree(
+ dir_path: Path,
+ *,
+ level: int = -1,
+ limit_to_directories: bool = False,
+ exclude_hidden: bool = False,
+ length_limit: int = 1000,
+) -> str:
+ """Return a visual tree structure of a directory as a string.
+
+ Parameters
+ ----------
+ dir_path
+ Path to the root directory.
+ level
+ Maximum depth to display. ``-1`` means no limit. Default is ``-1``.
+ limit_to_directories
+ If ``True``, only directories are shown. Default is ``False``.
+ exclude_hidden
+ If ``True``, files and directories starting with ``.`` are excluded.
+ Default is ``False``.
+ length_limit
+ Maximum number of lines to include before truncating.
+ Default is ``1000``.
+
+ Returns
+ -------
+ str
+ Tree representation of the directory structure, including a
+ summary line with the count of directories and files.
+
+ Notes
+ -----
+ Based on https://stackoverflow.com/a/59109706 by Aaron Hall, modified
+ by community (see post 'Timeline' for change history).
+ Retrieved 2026-03-27. License: CC BY-SA 4.0.
+
+ Examples
+ --------
+ >>> from pathlib import Path
+ >>> from poseinterface.utils import tree
+ >>> print(tree(Path(".")))
+ """
+ space = " "
+ branch = "│ "
+ tee = "├── "
+ last = "└── "
+
+ dir_path = Path(dir_path)
+ files = 0
+ directories = 0
+
+ def _inner(
+ dir_path: Path, prefix: str = "", level: int = -1
+ ) -> Iterator[str]:
+ nonlocal files, directories
+ if not level:
+ return
+ contents = [
+ d
+ for d in sorted(dir_path.iterdir(), key=lambda d: d.name)
+ if not (exclude_hidden and d.name.startswith("."))
+ ]
+ if limit_to_directories:
+ contents = [d for d in contents if d.is_dir()]
+ last_index = len(contents) - 1
+ for index, path in enumerate(contents):
+ pointer = last if index == last_index else tee
+ if path.is_dir():
+ yield prefix + pointer + path.name + "/"
+ directories += 1
+ extension = branch if pointer == tee else space
+ yield from _inner(
+ path, prefix=prefix + extension, level=level - 1
+ )
+ elif not limit_to_directories:
+ yield prefix + pointer + path.name
+ files += 1
+
+ lines: list[str] = [dir_path.name + "/"]
+ iterator = _inner(dir_path, level=level)
+ for line in islice(iterator, length_limit):
+ lines.append(line)
+ if next(iterator, None):
+ lines.append(f"... length_limit, {length_limit}, reached, counted:")
+ summary = f"\n{directories} directories"
+ if files:
+ summary += f", {files} files"
+ lines.append(summary)
+ return "\n".join(lines)
diff --git a/pyproject.toml b/pyproject.toml
index 919595f..0f9bf3e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -12,8 +12,8 @@ dynamic = ["version"]
dependencies = [
"jupyter>=1.1.1",
+ "movement>=0.16.0",
"sleap-io>=0.6.4",
- "movement"
]
license = {text = "BSD-3-Clause"}
@@ -50,6 +50,7 @@ dev = [
]
docs = [
"linkify-it-py",
+ "matplotlib",
"myst-parser",
"nbsphinx",
"pydata-sphinx-theme",
@@ -140,6 +141,6 @@ commands =
[tool.codespell]
-skip = '.git'
+skip = '.git,*.svg'
check-hidden = true
ignore-words-list = 'reencode'
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/CollectedData_Loukia.csv b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/CollectedData_Loukia.csv
new file mode 100644
index 0000000..a56ee6a
--- /dev/null
+++ b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/CollectedData_Loukia.csv
@@ -0,0 +1,6 @@
+scorer,,,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia
+bodyparts,,,snout,snout,left_ear,left_ear,right_ear,right_ear,tailbase,tailbase
+coords,,,x,y,x,y,x,y,x,y
+labeled-data,M708154_EPM_20200317_185651629-converted,img01841.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
+labeled-data,M708154_EPM_20200317_185651629-converted,img08489.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
+labeled-data,M708154_EPM_20200317_185651629-converted,img09286.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img01841.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img01841.png
new file mode 100644
index 0000000..5e3a5ea
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img01841.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img08489.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img08489.png
new file mode 100644
index 0000000..27aa6d1
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img08489.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img09286.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img09286.png
new file mode 100644
index 0000000..4c78f34
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M708154_EPM_20200317_185651629-converted/img09286.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/CollectedData_Loukia.csv b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/CollectedData_Loukia.csv
new file mode 100644
index 0000000..cb02a32
--- /dev/null
+++ b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/CollectedData_Loukia.csv
@@ -0,0 +1,6 @@
+scorer,,,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia,Loukia
+bodyparts,,,snout,snout,left_ear,left_ear,right_ear,right_ear,tailbase,tailbase
+coords,,,x,y,x,y,x,y,x,y
+labeled-data,M727755_EPM_20200317_170544999-converted,img00114.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
+labeled-data,M727755_EPM_20200317_170544999-converted,img00927.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
+labeled-data,M727755_EPM_20200317_170544999-converted,img05794.png,10.0,20.0,15.0,25.0,20.0,30.0,25.0,35.0
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00114.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00114.png
new file mode 100644
index 0000000..585284f
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00114.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00927.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00927.png
new file mode 100644
index 0000000..f755902
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img00927.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img05794.png b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img05794.png
new file mode 100644
index 0000000..ad89fbd
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/labeled-data/M727755_EPM_20200317_170544999-converted/img05794.png differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-converted.mp4 b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-converted.mp4
new file mode 100644
index 0000000..92f80e1
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-converted.mp4 differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv
new file mode 100644
index 0000000..2d33d03
--- /dev/null
+++ b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M708154_EPM_20200317_185651629-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv
@@ -0,0 +1,103 @@
+scorer,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000
+bodyparts,snout,snout,snout,left_ear,left_ear,left_ear,right_ear,right_ear,right_ear,centre,centre,centre,lateral_left,lateral_left,lateral_left,lateral_right,lateral_right,lateral_right,tailbase,tailbase,tailbase,tail_end,tail_end,tail_end
+coords,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood
+0,507.6593017578125,2.3274242877960205,3.797309909714386e-05,1.088080644607544,1038.5609130859375,7.96744498074986e-05,-2.0264973640441895,0.7079694271087646,5.777740807388909e-05,0.09753966331481934,3.3162670135498047,8.44649548525922e-05,602.3050537109375,812.3359985351562,0.0001780553866410628,505.2978515625,-0.3341493606567383,4.9774163926485926e-05,590.3013305664062,816.8384399414062,8.057797094807029e-05,590.5715942382812,821.5577392578125,0.003958893474191427
+1,507.53643798828125,2.4382729530334473,3.4121192584279925e-05,1.088080883026123,1038.5609130859375,7.96746026026085e-05,-2.0264954566955566,0.7079722881317139,5.777697151643224e-05,0.09753918647766113,3.3162624835968018,8.446528227068484e-05,602.3160400390625,812.3317260742188,0.00015587828238494694,505.29791259765625,-0.3712749481201172,4.92189428769052e-05,590.3126220703125,816.8261108398438,7.318599818972871e-05,590.6128540039062,821.5676879882812,0.003944797441363335
+2,507.45513916015625,2.4241065979003906,3.1437270081369206e-05,1.0880801677703857,1038.5609130859375,7.96744498074986e-05,-2.026496410369873,0.7079710960388184,5.777702608611435e-05,0.09753799438476562,3.316265106201172,8.446511492365971e-05,602.334716796875,812.3264770507812,0.00015765137504786253,505.2773132324219,-0.3822927474975586,4.4987285946263e-05,590.255126953125,816.8463134765625,7.27663718862459e-05,590.5610961914062,821.5614013671875,0.004273005295544863
+3,507.2628479003906,2.4453821182250977,2.7450059860711917e-05,1.088080644607544,1038.5609130859375,7.967452984303236e-05,-2.026496410369873,0.7079699039459229,5.777674959972501e-05,0.09753537178039551,3.3162689208984375,8.44649548525922e-05,602.3396606445312,812.3331298828125,0.00015632735448889434,509.3617858886719,1043.5556640625,4.402976992423646e-05,590.2650756835938,816.846435546875,7.357134745689109e-05,590.5650024414062,821.5712280273438,0.004425473976880312
+4,507.3101806640625,2.4408037662506104,2.684820537979249e-05,1.0880804061889648,1038.5609130859375,7.967452984303236e-05,-2.0264945030212402,0.7079710960388184,5.7777629990596324e-05,0.09753870964050293,3.316263198852539,8.446560241281986e-05,602.3341674804688,812.3328247070312,0.00015232527221087366,509.3161315917969,1043.5703125,4.700763020082377e-05,590.2893676757812,816.8314208984375,7.353143155341968e-05,590.576904296875,821.5442504882812,0.004406807012856007
+5,507.31304931640625,2.449086904525757,2.6751518817036413e-05,1.0880799293518066,1038.5609130859375,7.96746026026085e-05,-2.0264973640441895,0.7079734802246094,5.7777629990596324e-05,0.09753608703613281,3.3162622451782227,8.446520223515108e-05,602.333984375,812.3328247070312,0.00015237538900692016,509.31744384765625,1043.571044921875,4.6872486564097926e-05,590.2890625,816.8313598632812,7.354258559644222e-05,590.5765380859375,821.5445556640625,0.004404961597174406
+6,507.322021484375,2.466890335083008,2.678036253200844e-05,1.0881526470184326,1038.5609130859375,7.966191333252937e-05,-2.0264992713928223,0.7079710960388184,5.7777629990596324e-05,0.09753656387329102,3.3162660598754883,8.44649548525922e-05,602.3338623046875,812.3328247070312,0.00015239384083542973,509.315673828125,1043.5745849609375,4.662870924221352e-05,590.2894897460938,816.8309326171875,7.333179382840171e-05,590.5762939453125,821.5449829101562,0.004388715606182814
+7,507.38287353515625,2.500864028930664,2.8850239687017165e-05,1.088310956954956,1038.560791015625,7.964034011820331e-05,-2.0264945030212402,0.7079739570617676,5.777730621048249e-05,0.09753799438476562,3.31626558303833,8.44649548525922e-05,602.3336791992188,812.3328247070312,0.00015247669944074005,509.3182373046875,1043.572265625,4.6792141802143306e-05,590.2898559570312,816.8304443359375,7.313673995668069e-05,590.576171875,821.5455932617188,0.004376196768134832
+8,507.3809814453125,2.5016539096832275,2.8422316972864792e-05,1.0883102416992188,1038.560791015625,7.964027463458478e-05,-2.0264968872070312,0.7079722881317139,5.777724436484277e-05,0.09754085540771484,3.3162667751312256,8.446568244835362e-05,602.3335571289062,812.3329467773438,0.0001525059196865186,509.318359375,1043.572509765625,4.6836874389555305e-05,590.2904663085938,816.8299560546875,7.293079397641122e-05,590.5759887695312,821.5460815429688,0.004361603409051895
+9,507.3866271972656,2.489865303039551,2.8401804229361005e-05,1.0883102416992188,1038.560791015625,7.964034011820331e-05,-2.0264949798583984,0.7079718112945557,5.777719343313947e-05,0.09754180908203125,3.3162641525268555,8.446520223515108e-05,602.3335571289062,812.3329467773438,0.00015250562864821404,509.318359375,1043.572509765625,4.6836874389555305e-05,590.2904663085938,816.8299560546875,7.293281669262797e-05,590.5759887695312,821.5460205078125,0.004361667670309544
+10,507.3866882324219,2.4899001121520996,2.8392381864250638e-05,1.0883100032806396,1038.560791015625,7.964034011820331e-05,-2.0264973640441895,0.7079734802246094,5.7777629990596324e-05,0.09754085540771484,3.3162615299224854,8.446528227068484e-05,602.3335571289062,812.3329467773438,0.00015250506112352014,509.318359375,1043.572509765625,4.6836874389555305e-05,590.2904663085938,816.8299560546875,7.293198723345995e-05,590.5759887695312,821.5460815429688,0.004361686296761036
+11,507.3866882324219,2.489898443222046,2.8392410968081094e-05,1.0883104801177979,1038.560791015625,7.964034011820331e-05,-2.0264992713928223,0.7079718112945557,5.777724436484277e-05,0.09754085540771484,3.3162620067596436,8.44649548525922e-05,602.3336181640625,812.3329467773438,0.0001525024272268638,509.318359375,1043.572509765625,4.6836874389555305e-05,590.2904663085938,816.8300170898438,7.293260568985716e-05,590.5759887695312,821.5460815429688,0.004361686296761036
+12,507.3896789550781,2.4908924102783203,2.82090204564156e-05,1.0883102416992188,1038.560791015625,7.964034011820331e-05,-2.0264949798583984,0.7079713344573975,5.777724436484277e-05,0.09753870964050293,3.316263198852539,8.44649548525922e-05,602.3336181640625,812.3329467773438,0.00015250228170771152,509.318359375,1043.572509765625,4.6836874389555305e-05,590.2904663085938,816.8300170898438,7.292912778211758e-05,590.5759887695312,821.5460815429688,0.004361518193036318
+13,507.3361511230469,2.440107583999634,2.8091302738175727e-05,1.0881524085998535,1038.5609130859375,7.966207340359688e-05,-2.0264968872070312,0.7079732418060303,5.777730621048249e-05,0.09754037857055664,3.316265106201172,8.446528227068484e-05,602.3193359375,812.3167724609375,0.00016239429533015937,509.35064697265625,1043.5797119140625,4.796280336449854e-05,590.2557983398438,816.9011840820312,8.060794061748311e-05,590.5995483398438,821.6290283203125,0.0054710255935788155
+14,599.9473876953125,815.0089721679688,2.7521093215909787e-05,1.088080644607544,1038.5609130859375,7.967452984303236e-05,-2.0264992713928223,0.7079710960388184,5.777740807388909e-05,0.0975339412689209,3.3162641525268555,8.44655223772861e-05,602.3150634765625,812.3163452148438,0.00016463632346130908,509.3753356933594,1043.644775390625,4.4199012336321175e-05,590.2584228515625,816.9176025390625,7.956215995363891e-05,590.616943359375,821.6619873046875,0.005467236042022705
+15,599.9505004882812,815.0126953125,2.865011992980726e-05,1.0880813598632812,1038.5609130859375,7.967452984303236e-05,-2.0264954566955566,0.7079718112945557,5.777740807388909e-05,0.09753823280334473,3.3162662982940674,8.446544234175235e-05,602.3063354492188,812.3168334960938,0.00017132174980361015,509.3616638183594,1043.638671875,4.313897079555318e-05,590.2437744140625,816.9415893554688,8.356614125659689e-05,590.6234741210938,821.682373046875,0.005766806658357382
+16,599.9487915039062,815.0113525390625,2.8077563911210746e-05,1.088080644607544,1038.5609130859375,7.967438432388008e-05,-2.026498317718506,0.7079710960388184,5.7777629990596324e-05,0.09753870964050293,3.3162636756896973,8.446488209301606e-05,602.3016357421875,812.3145751953125,0.00016672539641149342,509.3479309082031,1043.6539306640625,4.3311811168678105e-05,590.2587280273438,816.9324340820312,8.18022308521904e-05,590.6310424804688,821.6634521484375,0.005530122201889753
+17,599.9486694335938,815.011474609375,2.807434975693468e-05,1.0880804061889648,1038.5609130859375,7.967438432388008e-05,-2.0264973640441895,0.7079722881317139,5.777796468464658e-05,0.09753537178039551,3.3162667751312256,8.446600259048864e-05,602.3013916015625,812.314453125,0.00016676849918439984,509.3479919433594,1043.6534423828125,4.325612826505676e-05,590.2582397460938,816.9322509765625,8.201054151868448e-05,590.6307983398438,821.66455078125,0.005554269067943096
+18,599.9486083984375,815.0113525390625,2.807716009556316e-05,1.0880801677703857,1038.5609130859375,7.96742970123887e-05,-2.0264973640441895,0.7079718112945557,5.777740807388909e-05,0.09753870964050293,3.3162662982940674,8.446568244835362e-05,602.3014526367188,812.3143920898438,0.00016678503016009927,509.3478698730469,1043.6533203125,4.329888542997651e-05,590.2579956054688,816.9321899414062,8.205520134652033e-05,590.6309204101562,821.664306640625,0.00555688189342618
+19,599.9485473632812,815.01123046875,2.808281351462938e-05,1.0880801677703857,1038.5609130859375,7.967438432388008e-05,-2.0264973640441895,0.7079722881317139,5.7777579058893025e-05,0.09753870964050293,3.3162648677825928,8.446592255495489e-05,602.3014526367188,812.3143920898438,0.0001668123877607286,509.34783935546875,1043.6531982421875,4.327469287090935e-05,590.2578125,816.9321899414062,8.20920686237514e-05,590.6309814453125,821.6640014648438,0.005559090990573168
+20,599.9486694335938,815.0108032226562,2.809864417940844e-05,1.0880801677703857,1038.5609130859375,7.967452984303236e-05,-2.0264992713928223,0.7079741954803467,5.7777466281550005e-05,0.09753966331481934,3.3162660598754883,8.44655223772861e-05,602.3015747070312,812.3143920898438,0.00016687459719832987,509.3475646972656,1043.6529541015625,4.333122706157155e-05,590.2575073242188,816.9317626953125,8.214437548303977e-05,590.6315307617188,821.6629028320312,0.005555096548050642
+21,599.850830078125,814.8887329101562,2.5191136955982074e-05,1.0880794525146484,1038.5609130859375,7.967438432388008e-05,-2.026496410369873,0.7079722881317139,5.777697151643224e-05,0.0975348949432373,3.3162689208984375,8.446633000858128e-05,602.3414306640625,812.4032592773438,0.00013045831292402,509.333251953125,1043.6416015625,4.065516623086296e-05,590.4910888671875,816.81982421875,6.485464837169275e-05,590.8504028320312,821.5640258789062,0.003968200646340847
+22,600.0106811523438,814.855224609375,2.453397974022664e-05,1.0880794525146484,1038.5609130859375,7.967467536218464e-05,-2.026496410369873,0.7079722881317139,5.777730621048249e-05,0.09753608703613281,3.3162646293640137,8.446576248388737e-05,602.366455078125,812.4386596679688,0.00011193782847840339,509.3167724609375,1043.61669921875,3.863021993311122e-05,590.8744506835938,816.52685546875,5.842638711328618e-05,591.2802124023438,821.0407104492188,0.002035783603787422
+23,599.9437866210938,814.8656616210938,2.290493284817785e-05,1.0880799293518066,1038.5609130859375,7.967422425281256e-05,-2.0264978408813477,0.7079718112945557,5.7777142501436174e-05,0.0975348949432373,3.316265344619751,8.446592255495489e-05,506.22515869140625,1043.2081298828125,0.00011027417349396273,509.33709716796875,1043.6131591796875,3.814790034084581e-05,590.7843017578125,816.5741577148438,5.709196557290852e-05,591.096435546875,821.216552734375,0.002218028996139765
+24,599.8908081054688,814.87841796875,2.3791299099684693e-05,1.0880823135375977,1038.5609130859375,7.967467536218464e-05,-2.0264968872070312,0.7079732418060303,5.777708429377526e-05,0.0975339412689209,3.316265821456909,8.446544234175235e-05,602.377685546875,812.3685913085938,0.0001127587747760117,509.3426818847656,1043.60888671875,3.8123100239317864e-05,590.6903076171875,816.6407470703125,5.912520646234043e-05,590.9615478515625,821.3651733398438,0.002586022950708866
+25,715.3369140625,1.9876086711883545,2.6965341021423228e-05,1.08848237991333,1038.5609130859375,7.967528654262424e-05,-2.0262675285339355,0.7081050872802734,5.776969555881806e-05,0.09682011604309082,3.316255807876587,8.444063132628798e-05,506.1536865234375,1042.9256591796875,8.081582927843556e-05,0.26653027534484863,-0.7679719924926758,3.530635149218142e-05,590.7393188476562,816.1197509765625,5.575652903644368e-05,591.292236328125,819.6935424804688,0.0011217789724469185
+26,715.342529296875,1.9919776916503906,2.7060836146119982e-05,1.1049542427062988,1038.566162109375,8.022628026083112e-05,-2.0264978408813477,0.7079722881317139,5.777768819825724e-05,0.09753823280334473,3.3162646293640137,8.446511492365971e-05,506.1088562011719,1042.7581787109375,6.366755405906588e-05,0.26665830612182617,-0.7677874565124512,3.530318645061925e-05,590.7337646484375,816.1112060546875,5.6427070376230404e-05,591.2883911132812,819.687744140625,0.0011418049689382315
+27,715.3287963867188,1.9832158088684082,2.6934652851196006e-05,1.1049556732177734,1038.566162109375,8.022620022529736e-05,-2.0264968872070312,0.7079739570617676,5.777780097560026e-05,0.09753561019897461,3.316267251968384,8.446584251942113e-05,506.1005859375,1042.7384033203125,6.292441685218364e-05,0.2666585445404053,-0.767789363861084,3.5302917240187526e-05,590.7339477539062,816.1111450195312,5.6419863540213555e-05,591.28857421875,819.687744140625,0.0011415645712986588
+28,715.3548583984375,1.987865924835205,2.6677993446355686e-05,1.104956865310669,1038.566162109375,8.022620022529736e-05,-2.0262699127197266,0.7081072330474854,5.7769586419453844e-05,0.09682059288024902,3.3162569999694824,8.444111153949052e-05,506.11175537109375,1042.775146484375,6.610778655158356e-05,0.26653313636779785,-0.767967700958252,3.530631511239335e-05,590.7337036132812,816.1113891601562,5.6467772083124146e-05,591.2880249023438,819.688232421875,0.001143705565482378
+29,506.79608154296875,1.9473717212677002,2.768965896393638e-05,1.095958948135376,1038.56298828125,7.971101149450988e-05,-2.0266542434692383,0.7082526683807373,5.774816236225888e-05,0.09655499458312988,3.316403865814209,8.441004320047796e-05,506.09747314453125,1042.7408447265625,6.955585558898747e-05,505.5033264160156,-0.5908603668212891,3.641982766566798e-05,2.0907974243164062,1040.8592529296875,4.7021392674651e-05,590.5875244140625,820.0953369140625,0.00021669419948011637
+30,506.7832946777344,1.954503059387207,2.6508383598411456e-05,1.0957236289978027,1038.56298828125,7.971419108798727e-05,-2.0262675285339355,0.7081079483032227,5.776991747552529e-05,0.09682011604309082,3.316253662109375,8.444063132628798e-05,506.09326171875,1042.72412109375,7.265646127052605e-05,0.2665276527404785,-0.7679667472839355,3.5306282370584086e-05,2.0908043384552,1040.8592529296875,4.7021658247103915e-05,590.5534057617188,820.2390747070312,0.00023874898033682257
+31,506.7351989746094,1.9335603713989258,2.6066156351589598e-05,1.0957250595092773,1038.56298828125,7.971457671374083e-05,-2.0262675285339355,0.7081093788146973,5.7769371778704226e-05,0.09682226181030273,3.316255569458008,8.444159175269306e-05,506.0743408203125,1042.6790771484375,6.941061292309314e-05,0.26653099060058594,-0.7679696083068848,3.5305944038555026e-05,2.0908052921295166,1040.8592529296875,4.702174919657409e-05,590.5662841796875,820.2178344726562,0.00024406754528172314
+32,506.7803649902344,1.9017233848571777,2.5815481421886943e-05,1.0844590663909912,1038.5592041015625,7.928707054816186e-05,-2.026268482208252,0.7081081867218018,5.776969555881806e-05,0.09682321548461914,3.3162527084350586,8.444087143288925e-05,506.0713806152344,1042.6934814453125,6.815379310864955e-05,0.2665271759033203,-0.7679719924926758,3.530641697579995e-05,2.0857620239257812,1040.855224609375,4.675949094234966e-05,590.499267578125,820.2894897460938,0.00023915109341032803
+33,506.95440673828125,1.8671588897705078,2.75858910754323e-05,1.0750312805175781,1038.5548095703125,7.852484850445762e-05,-2.0261988639831543,0.7080507278442383,5.777686237706803e-05,0.09674692153930664,3.316357135772705,8.445142157142982e-05,506.08795166015625,1042.6185302734375,6.140054028946906e-05,0.2663118839263916,-0.7678079605102539,3.5314700653543696e-05,2.0825443267822266,1040.8623046875,4.6260433009592816e-05,590.3557739257812,820.642333984375,0.0008372969459742308
+34,506.9604797363281,1.8640880584716797,2.775572647806257e-05,1.0737192630767822,1038.5545654296875,7.853061833884567e-05,-2.0261969566345215,0.7080504894256592,5.777785190730356e-05,0.09674477577209473,3.3163602352142334,8.44511014292948e-05,506.0758972167969,1042.7547607421875,5.988045086269267e-05,0.2663087844848633,-0.7678089141845703,3.5314500564709306e-05,492.6009826660156,1042.96435546875,5.586723273154348e-05,590.3861083984375,820.5923461914062,0.0009135359432548285
+35,506.9583740234375,1.8634734153747559,2.777412737486884e-05,1.092729091644287,1038.565185546875,8.035988867050037e-05,-2.0261988639831543,0.7080552577972412,5.777708429377526e-05,0.09673738479614258,3.3163676261901855,8.445086132269353e-05,506.09600830078125,1042.69677734375,5.308120307745412e-05,0.2662942409515381,-0.7678127288818359,3.5314162232680246e-05,492.5870056152344,1042.9732666015625,5.445648275781423e-05,590.3707885742188,820.6148071289062,0.0009380512055940926
+36,507.0737609863281,1.673818826675415,3.686356285470538e-05,1.0271515846252441,1038.5230712890625,7.639150135219097e-05,-2.026193141937256,0.7080538272857666,5.777642581961118e-05,0.09672856330871582,3.3163721561431885,8.444932609563693e-05,506.135009765625,1042.5960693359375,5.362054434954189e-05,505.4412536621094,-0.5069961547851562,3.7417539715534076e-05,506.0782470703125,1.0693118572235107,5.2227358537493274e-05,590.39501953125,820.5455932617188,0.0009648330742493272
+37,507.0121154785156,1.6230502128601074,3.132459823973477e-05,0.9997053146362305,1038.5224609375,7.649070903426036e-05,-2.018232822418213,0.7101466655731201,5.8114710554946214e-05,0.09588170051574707,3.329944133758545,8.481321856379509e-05,730.5513305664062,1043.6888427734375,5.105407763039693e-05,505.42425537109375,-0.5452432632446289,3.606426253099926e-05,505.8302001953125,0.933523416519165,4.990805609850213e-05,590.6281127929688,820.5811767578125,0.0004873670113738626
+38,506.9498596191406,1.6473076343536377,3.1117993785301223e-05,0.9777626991271973,1038.515380859375,7.603523408761248e-05,-2.027064800262451,0.7163171768188477,5.775174577138387e-05,0.0956263542175293,3.324070930480957,8.44011883600615e-05,730.582763671875,1043.714599609375,5.429335215012543e-05,505.4375,-0.5512428283691406,3.679332075989805e-05,505.7550048828125,0.9298667907714844,4.892254219157621e-05,590.6298217773438,820.5845947265625,0.0004970895824953914
+39,506.94964599609375,1.6474483013153076,3.1117640901356936e-05,0.9573776721954346,1038.5244140625,7.574532355647534e-05,-2.0292716026306152,0.7146105766296387,5.75731392018497e-05,0.0929560661315918,3.322338342666626,8.408307621721178e-05,730.5639038085938,1043.71484375,4.764064942719415e-05,505.4381408691406,-0.5509881973266602,3.676908454508521e-05,505.7549743652344,0.9290831089019775,4.8908830649452284e-05,590.629638671875,820.5836791992188,0.0004970718291588128
+40,506.9494934082031,1.6469392776489258,3.122864291071892e-05,0.9866852760314941,1038.52880859375,7.564448605990037e-05,-2.024918556213379,0.7150721549987793,5.7860612287186086e-05,0.09633278846740723,3.326478958129883,8.445641287835315e-05,730.6627807617188,1043.8021240234375,5.3264404414221644e-05,505.4378356933594,-0.5500297546386719,3.6915487726219e-05,505.7559509277344,0.9304351806640625,4.912450458505191e-05,590.6300659179688,820.5831909179688,0.0004956181510351598
+41,506.9298095703125,1.6051506996154785,3.207815097994171e-05,0.985478401184082,1038.5291748046875,7.550416921731085e-05,-2.0245485305786133,0.7144639492034912,5.787733607576229e-05,0.09645438194274902,3.324937343597412,8.448219887213781e-05,730.6401977539062,1043.7711181640625,4.7957906645024195e-05,505.4570617675781,-0.5346527099609375,3.6032735806657e-05,505.72784423828125,0.9174983501434326,4.876654566032812e-05,590.6254272460938,820.5975952148438,0.000493833445943892
+42,506.9100646972656,1.6187000274658203,3.211034709238447e-05,0.9854025840759277,1038.52880859375,7.557778735645115e-05,-2.0236101150512695,0.7127785682678223,5.786640758742578e-05,0.0949859619140625,3.3248937129974365,8.439056546194479e-05,730.626220703125,1043.761962890625,4.8907990276347846e-05,505.4554443359375,-0.5282201766967773,3.615544846979901e-05,505.7113037109375,0.9250035285949707,4.839149187318981e-05,590.6156005859375,820.5819702148438,0.00048707862151786685
+43,506.9179382324219,1.622875452041626,3.182724685757421e-05,0.9879422187805176,1038.5281982421875,7.571312016807497e-05,-2.0235743522644043,0.7127737998962402,5.786949986941181e-05,0.09499287605285645,3.324902057647705,8.439290104433894e-05,506.0770568847656,1042.4755859375,5.268888708087616e-05,505.4580383300781,-0.5274825096130371,3.575066875782795e-05,505.7218933105469,0.9257092475891113,4.781287498190068e-05,590.6072387695312,820.5845947265625,0.0004739986325148493
+44,506.9127502441406,1.677586317062378,3.170165655319579e-05,0.9870586395263672,1038.5286865234375,7.566273416159675e-05,-2.0236101150512695,0.7127771377563477,5.786696419818327e-05,0.0949854850769043,3.3248939514160156,8.439088560407981e-05,506.0532531738281,1042.4754638671875,5.1692270062630996e-05,505.43157958984375,-0.5375299453735352,3.593606743379496e-05,505.7287292480469,0.9672210216522217,4.882155189989135e-05,590.567138671875,820.609375,0.000499923771712929
+45,506.9127502441406,1.6775851249694824,3.170171839883551e-05,0.9871201515197754,1038.5286865234375,7.567370630567893e-05,-2.023611068725586,0.7127785682678223,5.786673864349723e-05,0.0949854850769043,3.324892044067383,8.439056546194479e-05,506.04541015625,1042.47412109375,5.2092960686422884e-05,505.43157958984375,-0.5375251770019531,3.593606743379496e-05,505.7287292480469,0.9672179222106934,4.8822104872670025e-05,590.5977172851562,820.6136474609375,0.000492002465762198
+46,506.9127502441406,1.6775896549224854,3.170141644659452e-05,0.9870805740356445,1038.5286865234375,7.566685235360637e-05,-2.023609161376953,0.7127797603607178,5.7866680435836315e-05,0.0949850082397461,3.3248918056488037,8.439056546194479e-05,506.0481262207031,1042.4739990234375,5.190422962186858e-05,505.43157958984375,-0.5375270843505859,3.593579094740562e-05,505.7287292480469,0.9672191143035889,4.882192297372967e-05,590.6021118164062,820.6226806640625,0.0005127540207467973
+47,506.9127502441406,1.677586317062378,3.1701536499895155e-05,0.9871175289154053,1038.5286865234375,7.567334978375584e-05,-2.0236096382141113,0.7127785682678223,5.786673864349723e-05,0.09498763084411621,3.3248953819274902,8.43901580083184e-05,506.0481872558594,1042.47412109375,5.187438728171401e-05,505.43157958984375,-0.5375285148620605,3.593592919060029e-05,505.7287292480469,0.9672162532806396,4.8822104872670025e-05,590.5980224609375,820.61181640625,0.0004910057177767158
+48,506.9127502441406,1.6775858402252197,3.1701598345534876e-05,0.987076997756958,1038.5286865234375,7.566497515654191e-05,-2.023611545562744,0.7127761840820312,5.786635301774368e-05,0.09498953819274902,3.324892520904541,8.43901580083184e-05,506.04827880859375,1042.4742431640625,5.195330595597625e-05,505.43157958984375,-0.5375332832336426,3.5935998312197626e-05,505.7287292480469,0.9672186374664307,4.8821591917658225e-05,590.567138671875,820.609375,0.0004999233060516417
+49,506.8375244140625,1.4713318347930908,2.4852446586010046e-05,1.0769469738006592,1038.5552978515625,7.935673784231767e-05,-2.025561809539795,0.7075996398925781,5.78055769437924e-05,0.09777665138244629,3.315998077392578,8.452618931187317e-05,715.3161010742188,588.3399047851562,5.538214463740587e-05,0.26694321632385254,-0.767845630645752,3.5333265259396285e-05,2.0825490951538086,1040.850341796875,4.688991975854151e-05,590.881591796875,819.3247680664062,0.001643270836211741
+50,506.8375244140625,1.4713308811187744,2.485239747329615e-05,1.076939582824707,1038.5552978515625,7.935394387459382e-05,-2.0255627632141113,0.7076029777526855,5.7805849792202935e-05,0.0977787971496582,3.3160011768341064,8.45252288854681e-05,715.3679809570312,588.3095703125,5.420540401246399e-05,0.2669384479522705,-0.7678422927856445,3.5333127016201615e-05,2.0825400352478027,1040.850341796875,4.6887194912415e-05,590.8404541015625,819.3191528320312,0.0015474571846425533
+51,506.856201171875,1.4664816856384277,2.4837660021148622e-05,1.0833544731140137,1038.55615234375,7.95662563177757e-05,-2.0256409645080566,0.7076542377471924,5.7808501878753304e-05,0.09784340858459473,3.316073179244995,8.452175825368613e-05,715.3640747070312,588.310302734375,5.513379073818214e-05,0.26695728302001953,-0.7677311897277832,3.5330936952959746e-05,2.0854997634887695,1040.848876953125,4.700637509813532e-05,590.8466796875,819.32373046875,0.0015956781571730971
+52,506.8370361328125,1.4696059226989746,2.501225026207976e-05,1.077786922454834,1038.5556640625,7.950945291668177e-05,-2.025641441345215,0.7076559066772461,5.780794526799582e-05,0.09784650802612305,3.3160762786865234,8.452191832475364e-05,715.3832397460938,588.3125,5.731704004574567e-05,0.2669563293457031,-0.767728328704834,3.5330936952959746e-05,2.0821356773376465,1040.8475341796875,4.701753641711548e-05,590.8457641601562,819.2904052734375,0.001601642114110291
+53,506.82904052734375,1.3919870853424072,2.517468783480581e-05,1.0840682983398438,1038.5565185546875,7.972977618919685e-05,-2.0256400108337402,0.7076516151428223,5.780794526799582e-05,0.09784555435180664,3.3160743713378906,8.452215843135491e-05,715.5194702148438,588.1546630859375,6.049249350326136e-05,0.2669563293457031,-0.7677316665649414,3.5330838727531955e-05,590.697265625,815.8709106445312,4.896674363408238e-05,591.202392578125,819.571533203125,0.0018486246699467301
+54,506.8174743652344,1.4041662216186523,2.5659719540271908e-05,1.0777902603149414,1038.5556640625,7.951118459459394e-05,-2.026094436645508,0.7077391147613525,5.780518404208124e-05,0.09795832633972168,3.3161234855651855,8.450813766103238e-05,715.3672485351562,588.0745239257812,5.054639041190967e-05,0.2670869827270508,-0.7676396369934082,3.532574919518083e-05,2.082141399383545,1040.847412109375,4.701928628492169e-05,591.029052734375,820.1502075195312,0.0013649057364091277
+55,506.810791015625,1.4279146194458008,2.6464029360795394e-05,1.01719069480896,1038.54443359375,7.372978870989755e-05,-2.0258517265319824,0.7077023983001709,5.780491846962832e-05,0.09786558151245117,3.316121816635132,8.451732719549909e-05,715.28466796875,588.0588989257812,4.918684498989023e-05,0.2669823169708252,-0.7677884101867676,3.532888149493374e-05,505.7918395996094,0.8046491146087646,4.452595021575689e-05,590.757080078125,820.5006103515625,0.0010651802876964211
+56,506.8161315917969,1.4585151672363281,2.693241913220845e-05,1.0824828147888184,1038.560302734375,7.960997027112171e-05,-2.0258493423461914,0.7077014446258545,5.7804634707281366e-05,0.09786725044250488,3.316122531890869,8.45167669467628e-05,506.1335144042969,1042.63623046875,5.0867853133240715e-05,0.2669844627380371,-0.7677860260009766,3.53293216903694e-05,2.0827579498291016,1040.8486328125,4.706243998953141e-05,590.7321166992188,820.4130249023438,0.0007659897673875093
+57,506.8356628417969,1.452829122543335,2.7462263460620306e-05,1.0840871334075928,1038.5606689453125,7.965052645886317e-05,-2.0258474349975586,0.7076997756958008,5.780457649962045e-05,0.09786510467529297,3.316120147705078,8.451732719549909e-05,506.1303405761719,1042.6414794921875,5.077063906355761e-05,0.26697850227355957,-0.7677841186523438,3.53290161001496e-05,2.0836434364318848,1040.8494873046875,4.707747575594112e-05,590.67236328125,820.5076293945312,0.000800748763140291
+58,506.8260803222656,1.4575960636138916,2.727879473241046e-05,1.0993731021881104,1038.56640625,8.003654511412606e-05,-2.025847911834717,0.7077016830444336,5.7804798416327685e-05,0.09786510467529297,3.3161203861236572,8.451684698229656e-05,506.1330261230469,1042.6297607421875,5.0626367738004774e-05,0.26697707176208496,-0.7677898406982422,3.5328848753124475e-05,2.092191696166992,1040.857666015625,4.7230456402758136e-05,590.6630859375,820.5026245117188,0.0007902412908151746
+59,506.8349609375,1.4548137187957764,2.7221234631724656e-05,1.0842876434326172,1038.5606689453125,7.963890675455332e-05,-2.0258498191833496,0.7077031135559082,5.78041908738669e-05,0.09786558151245117,3.3161253929138184,8.451781468465924e-05,506.12890625,1042.631591796875,5.0210477638756856e-05,0.2669813632965088,-0.7677855491638184,3.532945265760645e-05,2.0837326049804688,1040.849365234375,4.706688196165487e-05,590.641845703125,820.5157470703125,0.000869948707986623
+60,506.835205078125,1.4506945610046387,2.731636050157249e-05,1.0824832916259766,1038.560302734375,7.961005030665547e-05,-2.0258498191833496,0.707705020904541,5.7804798416327685e-05,0.09786725044250488,3.3161206245422363,8.451684698229656e-05,0.22904753684997559,1037.751953125,4.935068136546761e-05,0.2669806480407715,-0.7677884101867676,3.532891787472181e-05,2.0827574729919434,1040.8486328125,4.7062661906238645e-05,590.722412109375,820.4583129882812,0.0006974306306801736
+61,506.8251037597656,1.4516842365264893,2.740470699791331e-05,1.0757136344909668,1038.5611572265625,7.949284190544859e-05,-2.02571439743042,0.7076196670532227,5.7809927966445684e-05,0.09795188903808594,3.316058397293091,8.452554902760312e-05,0.23016953468322754,1037.7576904296875,4.935905963066034e-05,0.2671017646789551,-0.767735481262207,3.533423659973778e-05,2.0832958221435547,1040.8492431640625,4.694804738392122e-05,590.78125,820.4766235351562,0.0010132195893675089
+62,506.8182067871094,1.459681510925293,2.7530439183465205e-05,1.0757102966308594,1038.5611572265625,7.949223800096661e-05,-2.0257134437561035,0.7076234817504883,5.780998253612779e-05,0.09795403480529785,3.316056489944458,8.452538895653561e-05,715.2609252929688,588.1759033203125,4.97313667437993e-05,0.267103910446167,-0.7677359580993652,3.533447306836024e-05,2.08329176902771,1040.8492431640625,4.694777453551069e-05,590.783935546875,820.4755249023438,0.0010168952867388725
+63,506.81732177734375,1.4630303382873535,2.744412086030934e-05,1.0758321285247803,1038.5606689453125,7.939829811220989e-05,-2.0252599716186523,0.7077791690826416,5.7830216974252835e-05,0.09824085235595703,3.3158092498779297,8.45423128339462e-05,0.22911787033081055,1037.7574462890625,4.933195668854751e-05,0.2671840190887451,-0.7675442695617676,3.5343473427928984e-05,2.081850290298462,1040.848876953125,4.688688204623759e-05,590.7877807617188,820.4776611328125,0.001009814441204071
+64,506.7514953613281,1.4527873992919922,2.7374799174140207e-05,1.0577223300933838,1038.5662841796875,7.844432548154145e-05,-2.0252580642700195,0.7077798843383789,5.7829667639452964e-05,0.09824395179748535,3.3158116340637207,8.45417525852099e-05,506.13519287109375,1042.6441650390625,5.016400245949626e-05,0.2671792507171631,-0.767545223236084,3.534323695930652e-05,2.080288887023926,1040.8516845703125,4.6256594941951334e-05,590.7378540039062,820.4683837890625,0.0008655276033096015
+65,506.8291015625,1.4949100017547607,2.642027902766131e-05,1.0582232475280762,1038.56640625,7.848255336284637e-05,-2.0252604484558105,0.7077791690826416,5.7830216974252835e-05,0.09824180603027344,3.315808057785034,8.454183262074366e-05,715.2584228515625,588.18701171875,4.984902625437826e-05,0.2671792507171631,-0.7675457000732422,3.5343473427928984e-05,2.0807275772094727,1040.851806640625,4.6283726987894624e-05,590.6574096679688,820.5452880859375,0.00108137889765203
+66,506.82525634765625,1.4998533725738525,2.6172590878559276e-05,1.0576844215393066,1038.5662841796875,7.837000157451257e-05,-2.0252580642700195,0.7077782154083252,5.78298895561602e-05,0.09824204444885254,3.315812826156616,8.454296039417386e-05,715.2598876953125,588.200927734375,5.090861304779537e-05,0.2671775817871094,-0.7675433158874512,3.534354254952632e-05,2.081624984741211,1040.8551025390625,4.618051752913743e-05,590.6796875,820.5484619140625,0.0009664701647125185
+67,506.8458251953125,1.5024023056030273,2.7541416784515604e-05,1.0568513870239258,1038.56591796875,7.828754314687103e-05,-2.0252599716186523,0.707780122756958,5.7830104196909815e-05,0.09824466705322266,3.3158116340637207,8.454183262074366e-05,715.2601318359375,588.2003784179688,5.108977711643092e-05,0.2671844959259033,-0.7675409317016602,3.5343407944310457e-05,505.7363586425781,0.8887238502502441,4.647953755920753e-05,590.7114868164062,820.4879150390625,0.0009645003592595458
+68,506.88311767578125,1.514479398727417,2.711821252887603e-05,1.0567619800567627,1038.56640625,7.838240708224475e-05,-2.025259494781494,0.7077813148498535,5.7830002333503217e-05,0.09824442863464355,3.3158085346221924,8.454215276287869e-05,715.255126953125,588.1900634765625,4.944871398038231e-05,0.26718711853027344,-0.7675409317016602,3.5343608033144847e-05,2.0822067260742188,1040.8548583984375,4.6186331019271165e-05,590.7528686523438,820.4126586914062,0.0009919055737555027
+69,506.8848876953125,1.5112950801849365,2.7257132387603633e-05,1.057685375213623,1038.565673828125,7.838181045372039e-05,-2.025210380554199,0.7077200412750244,5.7835182815324515e-05,0.0982968807220459,3.315791368484497,8.455014176433906e-05,715.2610473632812,588.2110595703125,5.13785780640319e-05,0.2672288417816162,-0.7675175666809082,3.534724601195194e-05,2.0811328887939453,1040.854248046875,4.618672755896114e-05,590.7055053710938,820.4657592773438,0.0010460155317559838
+70,506.8781433105469,1.5137321949005127,2.7140100428368896e-05,1.0576722621917725,1038.56591796875,7.840154285077006e-05,-2.0252113342285156,0.7077198028564453,5.7835233747027814e-05,0.09829521179199219,3.315791130065918,8.454941416857764e-05,715.2579345703125,588.2113037109375,5.1596878620330244e-05,0.26723265647888184,-0.7675199508666992,3.534704592311755e-05,2.081460475921631,1040.8543701171875,4.619610990630463e-05,590.7055053710938,820.4656372070312,0.0010458764154464006
+71,506.8833312988281,1.514068841934204,2.714835682127159e-05,1.0576636791229248,1038.56591796875,7.83966897870414e-05,-2.025216579437256,0.7077150344848633,5.7835732150124386e-05,0.09830546379089355,3.315791606903076,8.455070201307535e-05,715.2581176757812,588.205810546875,5.093454456073232e-05,0.2672410011291504,-0.7675094604492188,3.534765346557833e-05,2.0814690589904785,1040.8543701171875,4.619298124453053e-05,590.706298828125,820.4656372070312,0.0010448661632835865
+72,506.876708984375,1.4986340999603271,2.6337464078096673e-05,1.0567166805267334,1038.5665283203125,7.840670150471851e-05,-2.0252184867858887,0.7077224254608154,5.7835233747027814e-05,0.09829902648925781,3.3157877922058105,8.45502145239152e-05,715.2548828125,588.190185546875,4.942504892824218e-05,0.26723408699035645,-0.7675104141235352,3.534751886036247e-05,2.082651138305664,1040.8551025390625,4.619632818503305e-05,590.7550659179688,820.4126586914062,0.000988968531601131
+73,506.8756408691406,1.4893643856048584,2.571221557445824e-05,1.0616698265075684,1038.5611572265625,7.836462464183569e-05,-2.0219693183898926,0.7073273658752441,5.797980338684283e-05,0.09443259239196777,3.3175363540649414,8.456537761958316e-05,715.193359375,588.1957397460938,5.477507511386648e-05,0.2675204277038574,-0.7639350891113281,3.544642459019087e-05,2.0809366703033447,1040.853759765625,4.615836951415986e-05,590.7682495117188,820.5902099609375,0.0012344698188826442
+74,506.8938903808594,1.4876959323883057,2.574882637418341e-05,1.0809028148651123,1038.5675048828125,7.926643593236804e-05,-2.019589424133301,0.7071990966796875,5.803412932436913e-05,0.09301257133483887,3.3166399002075195,8.461579272989184e-05,715.2052001953125,588.1900024414062,5.544491796172224e-05,0.26813316345214844,-0.764319896697998,3.550028122845106e-05,2.0873169898986816,1040.849365234375,4.674955198424868e-05,590.7791748046875,820.6087646484375,0.0011340318014845252
+75,506.9464111328125,1.4625506401062012,2.647953078849241e-05,1.0884785652160645,1038.560791015625,7.964050018927082e-05,-2.004586696624756,0.6943340301513672,5.894910646020435e-05,0.0802609920501709,3.3214876651763916,8.470555621897802e-05,715.184326171875,588.1815795898438,5.40677756362129e-05,0.2739980220794678,-0.744847297668457,3.607124381233007e-05,2.0855560302734375,1040.8497314453125,4.704283128376119e-05,590.7958374023438,820.6005249023438,0.0012239617062732577
+76,506.9410095214844,1.4575862884521484,2.6529118258622475e-05,1.0884885787963867,1038.5606689453125,7.964474934851751e-05,-2.002805233001709,0.6939218044281006,5.9051559219369665e-05,0.08241772651672363,3.319305181503296,8.487454761052504e-05,715.2008056640625,588.1639404296875,5.442419205792248e-05,0.27362918853759766,-0.7431402206420898,3.614579327404499e-05,2.085517168045044,1040.849609375,4.704605817096308e-05,590.8009643554688,820.58447265625,0.0012020275462418795
+77,506.8808898925781,1.4686834812164307,2.6275096388417296e-05,1.0884442329406738,1038.5609130859375,7.965758413774893e-05,-2.019845485687256,0.7069659233093262,5.8015262766275555e-05,0.09261369705200195,3.317131280899048,8.459448872599751e-05,715.2034301757812,588.1737670898438,5.2761191909667104e-05,0.26816868782043457,-0.7646045684814453,3.5492292226990685e-05,2.085887908935547,1040.8497314453125,4.705095125245862e-05,590.7908325195312,820.60693359375,0.001302040764130652
+78,506.8819274902344,1.471132755279541,2.6665913537726738e-05,1.0883467197418213,1038.5609130859375,7.967688725329936e-05,-2.0257773399353027,0.7072961330413818,5.779339335276745e-05,0.09733009338378906,3.3163352012634277,8.450273162452504e-05,715.210205078125,588.1857299804688,5.3334955737227574e-05,0.2669501304626465,-0.7680478096008301,3.5328375815879554e-05,2.086153030395508,1040.849853515625,4.705934406956658e-05,590.7935180664062,820.6162109375,0.0013289415510371327
+79,506.8813171386719,1.46224045753479,2.603524990263395e-05,1.0883715152740479,1038.5609130859375,7.967970304889604e-05,-2.0254178047180176,0.7072985172271729,5.7804310927167535e-05,0.09733390808105469,3.3161544799804688,8.451925532426685e-05,715.2163696289062,588.1846313476562,5.319181946106255e-05,0.26682353019714355,-0.7679672241210938,3.533838389557786e-05,2.0861892700195312,1040.8497314453125,4.7062349040061235e-05,590.7976684570312,820.6189575195312,0.0013179548550397158
+80,506.8353271484375,1.4987590312957764,2.6694993721321225e-05,1.0884816646575928,1038.5606689453125,7.964201358845457e-05,-2.0252275466918945,0.7071259021759033,5.782646621810272e-05,0.09774565696716309,3.316161632537842,8.45423128339462e-05,506.1520080566406,1042.7093505859375,5.1758470362983644e-05,0.26741838455200195,-0.7672696113586426,3.535345240379684e-05,2.0854403972625732,1040.8497314453125,4.704336970462464e-05,590.7760620117188,820.5949096679688,0.0013029221445322037
+81,506.8745422363281,1.4954910278320312,2.7590258468990214e-05,1.0884044170379639,1038.5606689453125,7.961316441651434e-05,-2.02522611618042,0.7071266174316406,5.782657899544574e-05,0.09774446487426758,3.3161611557006836,8.454191265627742e-05,0.23066091537475586,1037.751953125,4.940944927511737e-05,0.26741933822631836,-0.7672739028930664,3.535325231496245e-05,2.085084915161133,1040.849609375,4.702507067122497e-05,590.7681884765625,820.55126953125,0.0013088169507682323
+82,506.88995361328125,1.504328966140747,2.8415217457222752e-05,1.0885343551635742,1038.560546875,7.965006079757586e-05,-2.0252275466918945,0.7071261405944824,5.782613516203128e-05,0.09774494171142578,3.3161652088165283,8.454183262074366e-05,715.2244262695312,588.173583984375,5.0919054046971723e-05,0.2674140930175781,-0.7672710418701172,3.5353117709746584e-05,2.085223913192749,1040.8497314453125,4.7047677071532235e-05,590.7604370117188,820.5466918945312,0.0012679918436333537
+83,506.8716125488281,1.5046172142028809,2.779201531666331e-05,1.0884144306182861,1038.5604248046875,7.960116636240855e-05,-2.0252223014831543,0.7071270942687988,5.782602966064587e-05,0.09774279594421387,3.3161635398864746,8.454223279841244e-05,715.2276000976562,588.1688232421875,5.098912515677512e-05,0.26741671562194824,-0.76727294921875,3.535372161422856e-05,2.084681987762451,1040.8494873046875,4.701802754425444e-05,590.7552490234375,820.5489501953125,0.001227978733368218
+84,506.8443603515625,1.5118434429168701,2.6958501621265896e-05,1.088216781616211,1038.5601806640625,7.960169023135677e-05,-2.025228500366211,0.7071266174316406,5.782602966064587e-05,0.09774231910705566,3.316162109375,8.454247290501371e-05,715.214599609375,588.1671142578125,5.0373873818898574e-05,0.26741766929626465,-0.7672715187072754,3.535345240379684e-05,2.0842537879943848,1040.8492431640625,4.7018969780765474e-05,590.7775268554688,820.5418701171875,0.0012735180789604783
+85,506.8027038574219,1.3386852741241455,2.6670591978472658e-05,1.0908172130584717,1038.561279296875,7.97012762632221e-05,-2.025294303894043,0.7072019577026367,5.78218387090601e-05,0.09771537780761719,3.3161654472351074,8.453699410893023e-05,715.2208862304688,588.2948608398438,5.222347681410611e-05,0.26737022399902344,-0.7674612998962402,3.5346238291822374e-05,2.0841023921966553,1040.8524169921875,4.707805783255026e-05,590.7837524414062,820.6332397460938,0.0013250741176307201
+86,506.8016357421875,1.3316078186035156,2.634452175698243e-05,1.0910000801086426,1038.5615234375,7.972081220941618e-05,-2.0255794525146484,0.7073755264282227,5.78070648771245e-05,0.09756183624267578,3.3162519931793213,8.451627945760265e-05,715.232177734375,588.32373046875,5.256673466647044e-05,0.267195463180542,-0.7676873207092285,3.5334676795173436e-05,2.084691047668457,1040.852783203125,4.708959750132635e-05,590.7716674804688,820.650634765625,0.0013781165471300483
+87,506.78265380859375,1.3131985664367676,2.5008836018969305e-05,1.088501214981079,1038.5606689453125,7.960831135278568e-05,-2.026163101196289,0.7076332569122314,5.778964259661734e-05,0.09737086296081543,3.316481590270996,8.44831665745005e-05,715.2279052734375,588.3092041015625,5.088920079288073e-05,0.2670001983642578,-0.7677421569824219,3.5320292226970196e-05,2.08467435836792,1040.8497314453125,4.702045043813996e-05,590.4713134765625,821.0196533203125,0.0019107824191451073
+88,506.74072265625,1.3082895278930664,2.4687800760148093e-05,1.088322401046753,1038.560791015625,7.962029485497624e-05,-2.0261683464050293,0.7076356410980225,5.778898412245326e-05,0.09737396240234375,3.3164970874786377,8.448195876553655e-05,715.2367553710938,588.2898559570312,5.2352370403241366e-05,0.26699113845825195,-0.7677450180053711,3.532042683218606e-05,2.0851354598999023,1040.849853515625,4.702645674115047e-05,590.7188720703125,820.5643920898438,0.0010856386506929994
+89,506.740478515625,1.2918541431427002,2.6129146135644987e-05,1.0921564102172852,1038.5616455078125,7.970370643306524e-05,-2.0258774757385254,0.7075686454772949,5.779360799351707e-05,0.09737610816955566,3.316328287124634,8.449153392575681e-05,715.2036743164062,588.2802124023438,5.154907557880506e-05,0.2669854164123535,-0.767824649810791,3.532615301082842e-05,2.0871033668518066,1040.851806640625,4.705988249043003e-05,590.6795043945312,820.9265747070312,0.0015156816225498915
+90,506.9202575683594,1.3457670211791992,2.691141708055511e-05,1.0795905590057373,1038.555908203125,7.920455391285941e-05,-2.026395320892334,0.7078473567962646,5.7822275266516954e-05,0.09728837013244629,3.3169500827789307,8.448719745501876e-05,715.1792602539062,588.3031616210938,4.994695700588636e-05,0.2660329341888428,-0.7670660018920898,3.5342021874384955e-05,2.0820250511169434,1040.8541259765625,4.675007949117571e-05,590.82861328125,820.61865234375,0.0009215223253704607
+91,506.947265625,1.3316526412963867,2.801078517222777e-05,1.0912444591522217,1038.563720703125,7.975525659276173e-05,-2.0303220748901367,0.7095706462860107,5.766638423665427e-05,0.09259629249572754,3.306964159011841,8.461700053885579e-05,0.23351168632507324,1037.75244140625,4.9515867431182414e-05,0.2744276523590088,-0.7748088836669922,3.533781273290515e-05,505.8627624511719,0.793503999710083,4.8372392484452575e-05,590.6220703125,820.8804321289062,0.0013805124908685684
+92,506.872314453125,1.3441457748413086,2.489602229616139e-05,1.0983526706695557,1038.5626220703125,7.977609493536875e-05,-2.03041934967041,0.7066996097564697,5.757594408350997e-05,0.09137916564941406,3.3070688247680664,8.421113307122141e-05,506.1405334472656,1042.607421875,5.3876618039794266e-05,0.27437901496887207,-0.772707462310791,3.543571074260399e-05,2.0875282287597656,1040.852294921875,4.7125580749707296e-05,590.6322631835938,820.9439697265625,0.0008042376139201224
+93,507.086181640625,1.3118324279785156,2.557082916609943e-05,1.1066298484802246,1038.562255859375,8.003608672879636e-05,-2.0302138328552246,0.707066535949707,5.759856867371127e-05,0.09167599678039551,3.308037757873535,8.421868551522493e-05,506.0551452636719,1042.467529296875,5.027822408010252e-05,0.27407050132751465,-0.7726955413818359,3.545301660778932e-05,2.087236166000366,1040.85009765625,4.730663567897864e-05,590.9051513671875,820.714111328125,0.0008177352719940245
+94,507.03875732421875,1.3120737075805664,2.6191817596554756e-05,1.1123337745666504,1038.56103515625,7.965067925397307e-05,-2.029834270477295,0.7069392204284668,5.761636566603556e-05,0.09186983108520508,3.307372570037842,8.425796841038391e-05,506.0726013183594,1042.479736328125,5.2968694944866e-05,0.27425360679626465,-0.7724127769470215,3.5466848203213885e-05,2.087932586669922,1040.85107421875,4.706010804511607e-05,591.1583862304688,820.5183715820312,0.0009328776504844427
+95,506.9603576660156,1.3363611698150635,2.7460324417916127e-05,1.0959365367889404,1038.5601806640625,7.99683402874507e-05,-2.0302844047546387,0.7072515487670898,5.759367559221573e-05,0.09224438667297363,3.3073160648345947,8.423121471423656e-05,506.0741271972656,1042.489501953125,5.138269261806272e-05,0.2734947204589844,-0.7722811698913574,3.54394614987541e-05,505.890380859375,0.803504467010498,4.748697756440379e-05,591.1707153320312,820.588623046875,0.0009591046837158501
+96,506.9368896484375,1.3805358409881592,2.6743409762275405e-05,1.121901512145996,1038.564453125,8.005402196431533e-05,-2.0302844047546387,0.7072510719299316,5.759390114690177e-05,0.09224581718444824,3.307316541671753,8.423089457210153e-05,506.08062744140625,1042.4166259765625,5.486227018991485e-05,0.27348947525024414,-0.77227783203125,3.543952698237263e-05,2.0948567390441895,1040.85888671875,4.7233155783033e-05,591.1630249023438,820.6246948242188,0.001367223565466702
+97,506.8707275390625,1.5281431674957275,2.6710706151789054e-05,1.1055829524993896,1038.5635986328125,8.013016486074775e-05,-2.029463768005371,0.7071106433868408,5.76329039176926e-05,0.09290528297424316,3.3080453872680664,8.427765715168789e-05,506.07659912109375,1042.416259765625,5.990168938296847e-05,0.27425408363342285,-0.7722306251525879,3.545068466337398e-05,2.0897111892700195,1040.856689453125,4.7358000301755965e-05,590.9913330078125,820.3478393554688,0.0013962468365207314
+98,506.84185791015625,1.5346808433532715,2.6410350983496755e-05,1.105419635772705,1038.5657958984375,8.040633838390931e-05,-2.0273332595825195,0.7057654857635498,5.7687288062879816e-05,0.09171462059020996,3.3068225383758545,8.436152711510658e-05,506.0794982910156,1042.492919921875,5.740488995797932e-05,0.2744789123535156,-0.7716412544250488,3.551216650521383e-05,2.096439838409424,1040.8577880859375,4.747738057631068e-05,590.9199829101562,820.6522827148438,0.0009264121763408184
+99,506.85986328125,1.50825834274292,2.5900135369738564e-05,1.1054933071136475,1038.5660400390625,8.043694106163457e-05,-2.0266919136047363,0.7049684524536133,5.783364031231031e-05,0.0908956527709961,3.306628704071045,8.456198702333495e-05,506.0472717285156,1042.5302734375,5.5734570196364075e-05,0.2733731269836426,-0.769963264465332,3.5592689528129995e-05,2.0961689949035645,1040.8575439453125,4.750563675770536e-05,590.6755981445312,821.13671875,0.0006741689285263419
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-converted.mp4 b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-converted.mp4
new file mode 100644
index 0000000..a6025ef
Binary files /dev/null and b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-converted.mp4 differ
diff --git a/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv
new file mode 100644
index 0000000..bc4c002
--- /dev/null
+++ b/tests/data/dlc/MouseTopDown-Loukia-2022-09-13/videos/M727755_EPM_20200317_170544999-convertedDLC_resnet50_MouseTopDownSep13shuffle1_340000.csv
@@ -0,0 +1,103 @@
+scorer,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000,DLC_resnet50_MouseTopDownSep13shuffle1_340000
+bodyparts,snout,snout,snout,left_ear,left_ear,left_ear,right_ear,right_ear,right_ear,centre,centre,centre,lateral_left,lateral_left,lateral_left,lateral_right,lateral_right,lateral_right,tailbase,tailbase,tailbase,tail_end,tail_end,tail_end
+coords,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood
+0,507.4206237792969,1.9574730396270752,3.469233342912048e-05,1.1105692386627197,1038.568603515625,8.028613228816539e-05,-2.026496410369873,0.7079739570617676,5.777780097560026e-05,0.09753561019897461,3.3162622451782227,8.446504216408357e-05,506.22430419921875,-0.579319953918457,6.175192538648844e-05,505.4253845214844,-0.3258786201477051,5.423595939646475e-05,591.6043090820312,814.9873046875,0.00010386729263700545,592.1827392578125,817.8712768554688,0.0023454856127500534
+1,507.308349609375,1.9867403507232666,3.106145595666021e-05,1.1105690002441406,1038.568603515625,8.028605225263163e-05,-2.0264978408813477,0.7079713344573975,5.777740807388909e-05,0.09753918647766113,3.3162660598754883,8.446528227068484e-05,506.2406921386719,-0.577216625213623,5.636533023789525e-05,505.4661560058594,-0.32129526138305664,5.143607995705679e-05,591.615966796875,814.9632568359375,0.00010399424354545772,592.1842041015625,817.8521728515625,0.002373091410845518
+2,507.31854248046875,1.9538030624389648,2.9796687158523127e-05,1.1105701923370361,1038.568603515625,8.028620504774153e-05,-2.0264973640441895,0.7079722881317139,5.777697151643224e-05,0.09753608703613281,3.31626296043396,8.44655223772861e-05,506.2586364746094,-0.6020894050598145,5.410418089013547e-05,505.4949035644531,-0.3301658630371094,5.0234470108989626e-05,591.6546020507812,814.929931640625,0.00010282111179549247,592.215576171875,817.8079833984375,0.002249507699161768
+3,507.1992492675781,1.9233613014221191,2.7463338483357802e-05,1.110569715499878,1038.568603515625,8.028597221709788e-05,-2.0264992713928223,0.7079739570617676,5.777752085123211e-05,0.09753751754760742,3.316262722015381,8.446544234175235e-05,731.1403198242188,1043.4100341796875,5.2125407819403335e-05,505.5062255859375,-0.35498046875,4.6919220039853826e-05,591.6796264648438,814.8981323242188,0.00010407032823422924,592.232666015625,817.7711181640625,0.002272790065035224
+4,507.08294677734375,1.8801798820495605,2.606145790196024e-05,1.110569953918457,1038.568603515625,8.028620504774153e-05,-2.0264973640441895,0.7079710960388184,5.777686237706803e-05,0.09753537178039551,3.3162641525268555,8.446528227068484e-05,731.17431640625,1043.3736572265625,5.360817158361897e-05,505.4898986816406,-0.3941311836242676,4.329033981775865e-05,591.689453125,814.8843994140625,0.00010346002090955153,592.2349243164062,817.7483520507812,0.0022205282002687454
+5,507.1020812988281,1.9185724258422852,2.5199933588737622e-05,1.110584020614624,1038.5687255859375,8.028015145100653e-05,-2.0264954566955566,0.7079730033874512,5.777697151643224e-05,0.09753656387329102,3.3162636756896973,8.44653623062186e-05,0.23803114891052246,1037.75634765625,4.998731310479343e-05,505.4761962890625,-0.3955693244934082,4.179419920546934e-05,591.6844482421875,814.8954467773438,0.00010220293916063383,592.2371215820312,817.7444458007812,0.002164034638553858
+6,507.13848876953125,1.9649791717529297,2.5446253857808188e-05,1.094451665878296,1038.5625,7.897422619862482e-05,-2.0264954566955566,0.7079722881317139,5.777697151643224e-05,0.09753561019897461,3.3162646293640137,8.446520223515108e-05,506.2986755371094,-0.6637711524963379,4.938241181662306e-05,505.48583984375,-0.37786436080932617,4.322845779825002e-05,591.6767578125,814.9016723632812,0.00010088605631608516,592.2377319335938,817.7403564453125,0.002109367633238435
+7,507.13848876953125,1.9649767875671387,2.5446448489674367e-05,1.0944523811340332,1038.5625,7.8974524512887e-05,-2.026496410369873,0.7079708576202393,5.777724436484277e-05,0.09753274917602539,3.3162667751312256,8.44660826260224e-05,506.2986755371094,-0.6637706756591797,4.9382597353542224e-05,505.48583984375,-0.37786102294921875,4.3229614675510675e-05,591.677734375,814.9019165039062,0.00010045944509329274,592.2372436523438,817.741943359375,0.0021019831765443087
+8,507.13848876953125,1.9649779796600342,2.544630115153268e-05,1.094451665878296,1038.5625,7.897430623415858e-05,-2.026494026184082,0.7079706192016602,5.777719343313947e-05,0.0975339412689209,3.31626558303833,8.446600259048864e-05,506.2986755371094,-0.6637721061706543,4.938255369779654e-05,505.48583984375,-0.37786102294921875,4.3228952563367784e-05,591.6775512695312,814.9020385742188,0.0001004567529889755,592.2371215820312,817.741943359375,0.002101320307701826
+9,507.13848876953125,1.964979648590088,2.5446350264246576e-05,1.094451904296875,1038.5625,7.897437899373472e-05,-2.0264954566955566,0.7079730033874512,5.777702608611435e-05,0.09753227233886719,3.3162646293640137,8.44653623062186e-05,506.2986755371094,-0.6637721061706543,4.9382793804397807e-05,505.48583984375,-0.37786054611206055,4.322932363720611e-05,591.6776123046875,814.902099609375,0.00010045291855931282,592.2371215820312,817.7420654296875,0.0021015331149101257
+10,507.13848876953125,1.964979887008667,2.5446181098232046e-05,1.094451665878296,1038.5625,7.897422619862482e-05,-2.026498317718506,0.7079713344573975,5.777730621048249e-05,0.0975334644317627,3.316262722015381,8.446544234175235e-05,506.2986755371094,-0.6637740135192871,4.938217898597941e-05,505.48583984375,-0.37786102294921875,4.322919630794786e-05,591.6776733398438,814.902099609375,0.0001004625009954907,592.2373046875,817.7421264648438,0.002101670252159238
+11,507.14398193359375,1.7374536991119385,2.2768857888877392e-05,1.0909559726715088,1038.5606689453125,7.89733967394568e-05,-2.0264949798583984,0.7079741954803467,5.777774640591815e-05,0.09753656387329102,3.3162646293640137,8.446528227068484e-05,731.1456909179688,1043.35693359375,5.269326356938109e-05,505.5173645019531,-0.4394869804382324,3.568873580661602e-05,591.6809692382812,814.8417358398438,9.436763502890244e-05,592.2595825195312,817.7037353515625,0.0019887923263013363
+12,598.0142822265625,814.2281494140625,2.3580891138408333e-05,1.0732614994049072,1038.55517578125,7.840641046641394e-05,-2.0264954566955566,0.7079730033874512,5.777730621048249e-05,0.0975344181060791,3.31626296043396,8.44649548525922e-05,731.09912109375,1043.370361328125,5.870160021004267e-05,0.2666590213775635,-0.767791748046875,3.530318645061925e-05,591.7010498046875,814.8671875,0.0001003103971015662,592.308349609375,817.699951171875,0.00218805274926126
+13,598.0009765625,814.2074584960938,2.328926530026365e-05,1.0686609745025635,1038.552978515625,7.773674587951973e-05,-2.0264945030212402,0.7079727649688721,5.7777579058893025e-05,0.09753537178039551,3.3162636756896973,8.446544234175235e-05,731.101318359375,1043.3636474609375,6.515876884805039e-05,0.2666594982147217,-0.7677884101867676,3.530298636178486e-05,591.714111328125,814.8735961914062,0.00010025044321082532,592.3074340820312,817.661865234375,0.0021861211862415075
+14,507.6581726074219,1.1373322010040283,2.6914060072158463e-05,1.0663950443267822,1038.552734375,7.742379966657609e-05,-2.0264968872070312,0.7079696655273438,5.777735714218579e-05,0.09754014015197754,3.316265344619751,8.446488209301606e-05,731.1007080078125,1043.3604736328125,6.522068724734709e-05,0.266650915145874,-0.7677888870239258,3.530338653945364e-05,591.7202758789062,814.85888671875,9.765430149855092e-05,592.2947387695312,817.6350708007812,0.0021457786206156015
+15,507.6582946777344,1.1372385025024414,2.690397741389461e-05,1.066394567489624,1038.552734375,7.742409798083827e-05,-2.026498317718506,0.7079727649688721,5.777730621048249e-05,0.09753799438476562,3.316265821456909,8.44653623062186e-05,731.1007080078125,1043.3603515625,6.522068724734709e-05,0.26665306091308594,-0.7677903175354004,3.5302851756569e-05,591.7206420898438,814.8588256835938,9.787169983610511e-05,592.2943115234375,817.6339721679688,0.002150257583707571
+16,507.6582946777344,1.1372361183166504,2.6903795514954254e-05,1.066394329071045,1038.552734375,7.742395246168599e-05,-2.0264954566955566,0.7079718112945557,5.777730621048249e-05,0.09753751754760742,3.3162624835968018,8.446528227068484e-05,731.106201171875,1043.375,6.548979581566527e-05,0.26665592193603516,-0.7677903175354004,3.5303117329021916e-05,591.720703125,814.8588256835938,9.789531759452075e-05,592.2940063476562,817.6343994140625,0.002151400549337268
+17,507.6582946777344,1.1372241973876953,2.6903284378931858e-05,1.066394567489624,1038.552734375,7.742417801637203e-05,-2.026496410369873,0.7079694271087646,5.777752085123211e-05,0.09753870964050293,3.3162693977355957,8.446560241281986e-05,731.1063842773438,1043.376220703125,6.547169323312119e-05,0.26665687561035156,-0.7677912712097168,3.530318645061925e-05,591.7208251953125,814.85888671875,9.801170381251723e-05,592.293701171875,817.63427734375,0.0021556150168180466
+18,507.6582946777344,1.1371972560882568,2.6899871954810806e-05,1.066394329071045,1038.552734375,7.742424349999055e-05,-2.0264945030212402,0.7079722881317139,5.7777466281550005e-05,0.09754180908203125,3.316265821456909,8.446560241281986e-05,731.1282348632812,1043.402099609375,6.589750410057604e-05,0.26665592193603516,-0.7677907943725586,3.530315370880999e-05,591.7206420898438,814.8594360351562,9.807734022615477e-05,592.2931518554688,817.6346435546875,0.0021589375101029873
+19,507.6582336425781,1.1373510360717773,2.6907951905741356e-05,1.066394567489624,1038.552734375,7.742424349999055e-05,-2.026498317718506,0.7079730033874512,5.777740807388909e-05,0.09753751754760742,3.3162646293640137,8.446544234175235e-05,731.1422729492188,1043.2576904296875,6.584178481716663e-05,0.26665425300598145,-0.767789363861084,3.530294998199679e-05,591.7206420898438,814.8594360351562,9.80771510512568e-05,592.2931518554688,817.6346435546875,0.0021589365787804127
+20,598.1370239257812,814.2520141601562,2.8888591259601526e-05,1.062767744064331,1038.553466796875,7.737715350231156e-05,-2.0264973640441895,0.7079732418060303,5.777730621048249e-05,0.09753656387329102,3.3162643909454346,8.446544234175235e-05,731.1058959960938,1043.23095703125,6.0057383961975574e-05,0.26665592193603516,-0.7677898406982422,3.5303117329021916e-05,591.823974609375,814.9180908203125,0.0001253605732927099,592.4786376953125,817.6478881835938,0.0030808323062956333
+21,598.1156005859375,814.246337890625,2.918874815804884e-05,1.0590019226074219,1038.556396484375,7.728696800768375e-05,-2.026498317718506,0.7079718112945557,5.777735714218579e-05,0.09754085540771484,3.3162636756896973,8.44660826260224e-05,731.0794067382812,1043.1385498046875,5.395538391894661e-05,0.2666585445404053,-0.7677907943725586,3.530359026626684e-05,591.8338012695312,814.9144287109375,0.00012664195674005896,592.4609375,817.6248779296875,0.0033900632988661528
+22,590.006103515625,815.6796875,2.5976447432185523e-05,1.0589191913604736,1038.5565185546875,7.72914572735317e-05,-2.0264949798583984,0.7079730033874512,5.777708429377526e-05,0.09754014015197754,3.31626296043396,8.446592255495489e-05,731.0863647460938,1043.14697265625,5.619289731839672e-05,0.26665782928466797,-0.7677912712097168,3.530342291924171e-05,591.3339233398438,814.9146118164062,0.00010873119754251093,591.8120727539062,817.5800170898438,0.003050754312425852
+23,590.0770263671875,815.6058959960938,2.6336434530094266e-05,1.0589187145233154,1038.5565185546875,7.72916100686416e-05,-2.0264949798583984,0.7079715728759766,5.7777629990596324e-05,0.09753966331481934,3.31626296043396,8.446528227068484e-05,731.0660400390625,1043.1444091796875,6.024782487656921e-05,0.2666590213775635,-0.7677884101867676,3.530278263497166e-05,591.3778686523438,814.861572265625,0.00011036453361157328,591.8291015625,817.5026245117188,0.003109340788796544
+24,590.0803833007812,815.6049194335938,2.6363321012468077e-05,1.058844804763794,1038.5565185546875,7.73374704294838e-05,-2.0264968872070312,0.7079715728759766,5.777735714218579e-05,0.09753966331481934,3.316267967224121,8.446511492365971e-05,730.8944702148438,1043.14404296875,7.05482525518164e-05,0.2666590213775635,-0.7677912712097168,3.530325193423778e-05,591.380126953125,814.860107421875,0.00011054684728151187,591.8289794921875,817.5029296875,0.003111526370048523
+25,590.0792846679688,815.6083984375,2.617081736389082e-05,1.0712220668792725,1038.5614013671875,7.808973896317184e-05,-2.0264978408813477,0.7079734802246094,5.7777579058893025e-05,0.0975339412689209,3.3162643909454346,8.446560241281986e-05,730.8231811523438,1043.166015625,7.782590546412393e-05,0.26665353775024414,-0.767786979675293,3.5303557524457574e-05,591.3817138671875,814.8626098632812,0.00010982314415741712,591.8292236328125,817.5057373046875,0.0030857068486511707
+26,506.68170166015625,1.5856356620788574,3.054510671063326e-05,1.0857055187225342,1038.5533447265625,7.893657311797142e-05,-2.0317435264587402,0.7093348503112793,5.768162009189837e-05,0.09581351280212402,3.314192771911621,8.43508169054985e-05,714.8185424804688,588.9508666992188,6.829704943811521e-05,505.65863037109375,-0.5953493118286133,4.16267394030001e-05,2.076920509338379,1040.85009765625,4.6424429456237704e-05,508.0068359375,-1.3482818603515625,0.0001406864175805822
+27,506.6817321777344,1.585636854171753,3.054496119148098e-05,1.050036907196045,1038.5330810546875,7.653083594050258e-05,-2.0422520637512207,0.697380542755127,5.658534064423293e-05,0.09163331985473633,3.293217182159424,8.279301255242899e-05,714.8185424804688,588.9508666992188,6.829613994341344e-05,505.65863037109375,-0.5953493118286133,4.162641926086508e-05,505.7945861816406,1.049333095550537,4.4785247155232355e-05,508.0068359375,-1.3482794761657715,0.0001406866795150563
+28,506.68170166015625,1.585636854171753,3.054542685276829e-05,1.050036907196045,1038.5330810546875,7.653105421923101e-05,-2.042250633239746,0.6973779201507568,5.658534064423293e-05,0.09163308143615723,3.293217658996582,8.279411849798635e-05,714.8338012695312,589.0068359375,7.178074883995578e-05,505.65863037109375,-0.5953493118286133,4.162653931416571e-05,505.7945861816406,1.0493338108062744,4.478541450225748e-05,508.0068359375,-1.348278522491455,0.0001406870869686827
+29,506.68170166015625,1.585636854171753,3.054510671063326e-05,1.052133560180664,1038.5316162109375,7.66391385695897e-05,-2.0422515869140625,0.6973779201507568,5.6585009588161483e-05,0.09163212776184082,3.293215274810791,8.279301255242899e-05,714.8307495117188,589.0313720703125,7.197527884272859e-05,505.65863037109375,-0.5953478813171387,4.1626659367466345e-05,505.7945861816406,1.0493347644805908,4.4785159843740985e-05,508.0068359375,-1.3482780456542969,0.00014068721793591976
+30,506.6871337890625,1.5806195735931396,3.109960016445257e-05,1.0541396141052246,1038.531982421875,7.638231909368187e-05,-2.0430126190185547,0.6977615356445312,5.654067354043946e-05,0.09123992919921875,3.293924331665039,8.27473122626543e-05,714.66845703125,588.9828491210938,7.210848707472906e-05,505.6623840332031,-0.5846414566040039,4.184444696875289e-05,505.8276062011719,1.0463426113128662,4.559302033158019e-05,507.9793395996094,-1.3446364402770996,0.00014687975635752082
+31,506.57373046875,1.5656671524047852,2.918156678788364e-05,1.0545740127563477,1038.5321044921875,7.66890007071197e-05,-2.043010711669922,0.6977627277374268,5.654045526171103e-05,0.09124279022216797,3.2939233779907227,8.274667925434187e-05,714.7289428710938,588.9505004882812,7.255759555846453e-05,505.6622314453125,-0.6379666328430176,3.8818037864984944e-05,2.0808544158935547,1040.8189697265625,4.4716834963764995e-05,507.8511047363281,-1.4495482444763184,0.00012822038843296468
+32,506.5589904785156,1.58341383934021,3.0301169317681342e-05,1.0512447357177734,1038.5335693359375,7.653747161384672e-05,-2.0430097579956055,0.697761058807373,5.6540837249485776e-05,0.09123992919921875,3.29392671585083,8.274754509329796e-05,714.7537231445312,588.93603515625,7.352028478635475e-05,505.6867370605469,-0.6459345817565918,3.9875623770058155e-05,2.08180570602417,1040.8221435546875,4.461703429115005e-05,507.7914123535156,-1.4125285148620605,0.00013751426013186574
+33,506.55499267578125,1.6029541492462158,3.0208839234546758e-05,1.052175760269165,1038.533447265625,7.657265814486891e-05,-2.043306827545166,0.6978881359100342,5.652293475577608e-05,0.09112310409545898,3.294098138809204,8.272419654531404e-05,714.7426147460938,588.9239501953125,7.088624261086807e-05,505.678955078125,-0.6412019729614258,4.042143700644374e-05,2.0814638137817383,1040.8221435546875,4.4648662878898904e-05,507.7923583984375,-1.3859567642211914,0.00013593921903520823
+34,506.7126159667969,1.6256844997406006,3.110339821432717e-05,1.0559911727905273,1038.5347900390625,7.67861056374386e-05,-2.0429067611694336,0.6977250576019287,5.654542110278271e-05,0.09145069122314453,3.293947696685791,8.27541807666421e-05,714.7449340820312,588.9906616210938,6.264911644393578e-05,505.6636657714844,-0.571378231048584,4.320480366004631e-05,492.66998291015625,1043.078125,4.748851642943919e-05,508.0953063964844,-1.319704532623291,0.00014081606059335172
+35,506.7254638671875,1.6262621879577637,3.180285420967266e-05,1.05601167678833,1038.5347900390625,7.678903784835711e-05,-2.0426149368286133,0.6976215839385986,5.655879431287758e-05,0.09164071083068848,3.2938315868377686,8.277138840639964e-05,714.7484741210938,589.0294189453125,6.376307283062488e-05,505.66046142578125,-0.5650005340576172,4.380561949801631e-05,492.6903381347656,1043.1336669921875,4.916330726700835e-05,508.10565185546875,-1.2991018295288086,0.00014931113400962204
+36,506.7244567871094,1.6282572746276855,3.1616877095075324e-05,1.05601167678833,1038.5347900390625,7.67891833675094e-05,-2.0426177978515625,0.6976203918457031,5.655944187310524e-05,0.09163594245910645,3.293832540512085,8.277146116597578e-05,714.6517944335938,589.1362915039062,5.846802014275454e-05,505.66168212890625,-0.5679078102111816,4.343759792391211e-05,492.6937561035156,1043.1397705078125,4.926256224280223e-05,508.1015930175781,-1.305189609527588,0.0001480720966355875
+37,507.6141357421875,1.8178095817565918,4.543901377473958e-05,1.0934209823608398,1038.572265625,7.920410280348733e-05,507.4032287597656,-0.47879457473754883,5.936435627518222e-05,0.09322762489318848,3.318732738494873,8.435837662545964e-05,506.6244812011719,-0.6245989799499512,7.293956150533631e-05,505.69818115234375,-0.37719249725341797,6.324880087049678e-05,506.66522216796875,1.421401023864746,7.251663919305429e-05,626.317626953125,432.9179992675781,0.0002863327390514314
+38,507.58428955078125,1.817253828048706,4.719857679447159e-05,1.093421220779419,1038.572265625,7.920395728433505e-05,507.4219970703125,-0.5289463996887207,6.199549534358084e-05,0.09322762489318848,3.318734884262085,8.435861673206091e-05,506.5791931152344,-0.5963730812072754,7.281272701220587e-05,505.6538391113281,-0.36322021484375,6.301815301412717e-05,506.6618347167969,1.4535775184631348,7.566829299321398e-05,626.1373291015625,432.88836669921875,0.00039476450183428824
+39,507.6060791015625,1.8009865283966064,4.6968507376732305e-05,1.0934209823608398,1038.572265625,7.920425559859723e-05,507.452880859375,-0.5234203338623047,6.207588739925995e-05,0.093231201171875,3.3187317848205566,8.435837662545964e-05,506.60400390625,-0.6233539581298828,7.343970355577767e-05,505.6618957519531,-0.3868422508239746,6.371693598339334e-05,506.67657470703125,1.42877197265625,7.516329787904397e-05,626.1419067382812,432.91644287109375,0.0003623759839683771
+40,507.59014892578125,1.816056251525879,4.7510897275060415e-05,1.0934226512908936,1038.572265625,7.920425559859723e-05,507.447021484375,-0.5163979530334473,6.280481466092169e-05,509.8350830078125,1.5332636833190918,8.44147871248424e-05,506.5936584472656,-0.6023044586181641,7.386617653537542e-05,505.66278076171875,-0.3722519874572754,6.422246224246919e-05,506.6781921386719,1.4516143798828125,7.633178756805137e-05,626.0730590820312,432.82806396484375,0.0004524599062278867
+41,507.5738220214844,1.8142714500427246,4.7882778744678944e-05,1.0934391021728516,1038.5721435546875,7.92101418483071e-05,507.4338073730469,-0.52899169921875,6.318266241578385e-05,509.8317565917969,1.5366158485412598,8.468884334433824e-05,506.5832214355469,-0.5837454795837402,7.383814227068797e-05,505.6642761230469,-0.35986804962158203,6.412680522771552e-05,506.6643371582031,1.4572250843048096,7.685548189328983e-05,626.1128540039062,432.92919921875,0.0003327133599668741
+42,507.52618408203125,1.7977232933044434,4.7121717216214165e-05,1.0880494117736816,1038.5609130859375,7.964656833792105e-05,507.4119873046875,-0.5156445503234863,6.213191227288917e-05,509.81072998046875,1.4825701713562012,8.555607928428799e-05,506.5916748046875,-0.6820716857910156,7.50074177631177e-05,505.65423583984375,-0.4182109832763672,6.585578375961632e-05,506.6208190917969,1.4645307064056396,7.539243233622983e-05,625.854248046875,432.705810546875,0.0005543692386709154
+43,507.4158020019531,1.9018754959106445,4.436624294612557e-05,1.0880484580993652,1038.5609130859375,7.964277028804645e-05,-2.026590347290039,0.7032594680786133,5.7701759942574427e-05,0.09318304061889648,3.3188157081604004,8.434760820819065e-05,506.4422912597656,-0.7435564994812012,6.674662290606648e-05,505.5917663574219,-0.3655891418457031,6.173502333695069e-05,506.6461181640625,1.5171289443969727,7.120711234165356e-05,509.27166748046875,-0.5333056449890137,0.0002455112698953599
+44,507.3717956542969,1.9250690937042236,4.003432331955992e-05,1.088036060333252,1038.5609130859375,7.96450549387373e-05,-2.0242786407470703,0.7024145126342773,5.77122118556872e-05,0.09353065490722656,3.3177847862243652,8.441036334261298e-05,506.51593017578125,-0.8508543968200684,6.263871910050511e-05,505.63458251953125,-0.4177699089050293,5.7219887821702287e-05,506.58697509765625,1.4902992248535156,6.308488809736446e-05,509.1607971191406,-0.5673809051513672,0.00020357426546979696
+45,507.2379455566406,1.9043395519256592,3.8302827306324616e-05,1.0871598720550537,1038.56103515625,7.95974483480677e-05,-2.0256309509277344,0.7032957077026367,5.7650937378639355e-05,0.09362602233886719,3.317317008972168,8.433135371888056e-05,506.4901123046875,-0.859952449798584,5.912109190830961e-05,505.5023193359375,-0.353060245513916,5.594885442405939e-05,506.5834045410156,1.4618456363677979,6.400132406270131e-05,625.3948364257812,433.5830383300781,0.00020161860447842628
+46,507.3056640625,1.8795051574707031,3.843066588160582e-05,1.088155746459961,1038.5609130859375,7.966556586325169e-05,-2.026824474334717,0.7028398513793945,5.7597360864747316e-05,0.09228253364562988,3.3185343742370605,8.42377994558774e-05,506.54949951171875,-0.7761120796203613,6.225734978215769e-05,505.52203369140625,-0.33573150634765625,5.9052235883427784e-05,506.6413879394531,1.5002985000610352,6.644876702921465e-05,625.457763671875,433.4476013183594,0.0011690909741446376
+47,507.0221862792969,1.6150124073028564,2.870440403057728e-05,1.0981941223144531,1038.5682373046875,7.976726919878274e-05,-2.0252785682678223,0.702991247177124,5.762273940490559e-05,0.0928349494934082,3.3185923099517822,8.426768908975646e-05,731.0728149414062,1043.6195068359375,5.555606912821531e-05,618.3692016601562,427.0876770019531,4.0820468711899593e-05,492.6044616699219,1043.0799560546875,5.809725189465098e-05,625.45703125,433.49261474609375,0.0010227608727291226
+48,506.9749450683594,1.6175875663757324,2.936556666099932e-05,1.1028428077697754,1038.56689453125,8.002601680345833e-05,-2.025418758392334,0.7031736373901367,5.763422814197838e-05,0.09288263320922852,3.318220376968384,8.42827939777635e-05,731.1055297851562,1043.56298828125,5.90158742852509e-05,505.66680908203125,-0.557307243347168,4.125962368561886e-05,492.65985107421875,1043.0872802734375,5.33908350917045e-05,625.4690551757812,433.49139404296875,0.001038511865772307
+49,506.935302734375,1.6423568725585938,2.7196298105991445e-05,1.0881187915802002,1038.560791015625,7.967133569763973e-05,-2.0244922637939453,0.7078721523284912,5.7859175285557285e-05,0.09906911849975586,3.3163018226623535,8.457021613139659e-05,731.138916015625,1043.603759765625,5.797831909148954e-05,618.3562622070312,427.0559997558594,4.000493936473504e-05,492.6208801269531,1043.053955078125,5.359359784051776e-05,625.4078369140625,433.47308349609375,0.0010453041177242994
+50,506.90850830078125,1.6200952529907227,2.6714680643635802e-05,1.0708911418914795,1038.570556640625,7.905371603555977e-05,-2.0194692611694336,0.7095673084259033,5.802931264042854e-05,0.09651899337768555,3.314160108566284,8.480699762003496e-05,731.134521484375,1043.609619140625,5.7298348110634834e-05,618.3965454101562,427.0797119140625,3.9330658182734624e-05,492.7233581542969,1043.0518798828125,5.1000650273635983e-05,624.4415283203125,433.64813232421875,0.0010266624158248305
+51,506.90850830078125,1.6200954914093018,2.671442780410871e-05,1.0708918571472168,1038.570556640625,7.905364327598363e-05,-2.018744945526123,0.7085201740264893,5.804956890642643e-05,0.09615492820739746,3.3020882606506348,8.467754378216341e-05,731.1267700195312,1043.5941162109375,5.692859485861845e-05,618.3889770507812,427.0772399902344,3.812938666669652e-05,492.75738525390625,1043.06982421875,5.229229645919986e-05,625.404296875,433.5284118652344,0.0009606365347281098
+52,506.8777770996094,1.6151671409606934,2.755465538939461e-05,1.0708675384521484,1038.5704345703125,7.906238897703588e-05,-2.0187458992004395,0.708519458770752,5.804945976706222e-05,0.09615755081176758,3.3020896911621094,8.467874431516975e-05,731.1262817382812,1043.60205078125,5.7107157772406936e-05,618.3754272460938,427.0743408203125,3.850465509458445e-05,492.6846008300781,1043.0802001953125,5.365695687942207e-05,624.4415893554688,433.63336181640625,0.0009405607124790549
+53,506.92022705078125,1.6109371185302734,2.87607399513945e-05,1.070777416229248,1038.5701904296875,7.903374353190884e-05,-2.0187549591064453,0.708521842956543,5.804896500194445e-05,0.0961463451385498,3.3020973205566406,8.467817679047585e-05,731.1094970703125,1043.57666015625,5.69560143048875e-05,618.3712158203125,427.07421875,4.00987446482759e-05,492.6895751953125,1043.07470703125,5.3146595746511593e-05,625.4290771484375,433.4869384765625,0.0009816735982894897
+54,506.8628234863281,1.6145834922790527,2.741902972047683e-05,1.0708529949188232,1038.568359375,7.933729648357257e-05,-2.019038200378418,0.7085716724395752,5.8030200307257473e-05,0.09564208984375,3.302093505859375,8.465590508421883e-05,731.1109619140625,1043.5782470703125,5.7031014875974506e-05,618.370361328125,427.07281494140625,3.9847265725256875e-05,492.6944885253906,1043.078369140625,5.3097657655598596e-05,625.42822265625,433.4891357421875,0.000980820506811142
+55,506.86053466796875,1.610360860824585,2.7329127988195978e-05,1.070493221282959,1038.5655517578125,7.9922225268092e-05,-2.0190296173095703,0.7085187435150146,5.802947634947486e-05,0.09564065933227539,3.3020641803741455,8.46550174173899e-05,731.1109619140625,1043.577880859375,5.711657286155969e-05,618.3728637695312,427.0737609863281,3.962411210522987e-05,492.6950378417969,1043.0784912109375,5.310889901011251e-05,625.4298095703125,433.4913330078125,0.0009762722183950245
+56,506.9163818359375,1.598839282989502,2.8453257982619107e-05,1.0694868564605713,1038.56494140625,8.006669668247923e-05,-2.0190296173095703,0.7085199356079102,5.802931264042854e-05,0.09563899040222168,3.3020682334899902,8.465557766612619e-05,731.1103515625,1043.576904296875,5.715183215215802e-05,618.3713989257812,427.0733947753906,3.97765361412894e-05,492.6944885253906,1043.078369140625,5.309786138241179e-05,625.43017578125,433.49041748046875,0.0009781380649656057
+57,506.92022705078125,1.610935926437378,2.8760878194589168e-05,1.0693180561065674,1038.5650634765625,8.007616270333529e-05,-2.0191116333007812,0.7085206508636475,5.80268788326066e-05,0.09559249877929688,3.302079200744629,8.465161954518408e-05,731.1094970703125,1043.57666015625,5.695595609722659e-05,618.3732299804688,427.0752258300781,3.9961472793947905e-05,492.6895751953125,1043.07470703125,5.3146392019698396e-05,625.431884765625,433.4891662597656,0.0009769570315256715
+58,506.92041015625,1.6104400157928467,2.8997723347856663e-05,1.0721399784088135,1038.5665283203125,7.990034646354616e-05,-2.021824359893799,0.707655668258667,5.786861584056169e-05,0.09391665458679199,3.3054161071777344,8.448195876553655e-05,731.1098022460938,1043.5565185546875,5.5861586588434875e-05,618.3785400390625,427.0755310058594,3.9956743421498686e-05,492.6707458496094,1043.076171875,5.499369581229985e-05,625.4334716796875,433.4842224121094,0.0009729553712531924
+59,506.9208679199219,1.6115195751190186,2.901963671320118e-05,1.072131633758545,1038.566650390625,7.989356527104974e-05,-2.021512508392334,0.7039744853973389,5.7873196055879816e-05,0.09214901924133301,3.3090131282806396,8.45032263896428e-05,731.1038208007812,1043.572265625,5.4481155530083925e-05,618.3778686523438,427.07537841796875,3.980271867476404e-05,506.1149597167969,1.1287729740142822,4.8868361773202196e-05,625.4374389648438,433.48272705078125,0.000968756852671504
+60,506.9208679199219,1.6115193367004395,2.9019609428360127e-05,1.0721380710601807,1038.566650390625,7.989014557097107e-05,-2.0234875679016113,0.7056894302368164,5.780452556791715e-05,0.09020066261291504,3.313577651977539,8.428761793766171e-05,731.1038208007812,1043.572265625,5.4481206461787224e-05,618.3778686523438,427.07537841796875,3.980279143434018e-05,506.1149597167969,1.1287736892700195,4.8868310841498896e-05,625.4374389648438,433.4827575683594,0.0009687623823992908
+61,506.9065856933594,1.489778995513916,3.1082403438631445e-05,1.0898749828338623,1038.564453125,7.948329584905878e-05,-2.0243401527404785,0.7025699615478516,5.7792625739239156e-05,0.0883333683013916,3.3174118995666504,8.423772669630125e-05,731.0031127929688,1043.625,5.120781861478463e-05,618.3292236328125,427.0517272949219,4.713371890829876e-05,505.8909606933594,0.8828999996185303,5.110839265398681e-05,625.3138427734375,433.0472106933594,0.0015947106294333935
+62,506.90118408203125,1.4902994632720947,3.0468272598227486e-05,1.0898761749267578,1038.564453125,7.948336860863492e-05,-2.024338722229004,0.7025704383850098,5.779317143606022e-05,0.08833599090576172,3.3174080848693848,8.42377994558774e-05,731.0045776367188,1043.6243896484375,5.1043516577919945e-05,505.65728759765625,-0.5920381546020508,3.9811602619010955e-05,505.8834228515625,0.8827152252197266,5.038679591962136e-05,595.4609375,220.39498901367188,0.00022252518101595342
+63,506.90118408203125,1.4899675846099854,3.052105603273958e-05,1.0898771286010742,1038.564453125,7.948344136821106e-05,-2.0243425369262695,0.7025697231292725,5.779360799351707e-05,0.08832907676696777,3.317409038543701,8.42372392071411e-05,731.0045776367188,1043.6243896484375,5.1041664846707135e-05,505.6566162109375,-0.5923347473144531,3.984654540545307e-05,505.8843078613281,0.8822765350341797,5.042861812398769e-05,595.516357421875,220.42237854003906,0.00021496111003216356
+64,506.9003601074219,1.488173484802246,3.0510522265103646e-05,1.0898771286010742,1038.564453125,7.948352140374482e-05,-2.024336338043213,0.702568769454956,5.7793728046817705e-05,0.0883321762084961,3.3174080848693848,8.423747931374237e-05,731.0045776367188,1043.62451171875,5.10372847202234e-05,505.6561279296875,-0.5920438766479492,3.9747792470734566e-05,505.8853759765625,0.881279706954956,5.0397276936564595e-05,595.5221557617188,220.4080047607422,0.0002232792176073417
+65,506.915771484375,1.4889400005340576,3.083767296629958e-05,1.0898759365081787,1038.564453125,7.948344136821106e-05,-2.024339199066162,0.7025704383850098,5.779344792244956e-05,0.0883321762084961,3.3174080848693848,8.423747931374237e-05,731.0045166015625,1043.62451171875,5.1043953135376796e-05,505.65380859375,-0.5874385833740234,4.028532566735521e-05,505.8944396972656,0.8857183456420898,5.084258737042546e-05,595.533935546875,220.3928985595703,0.00022009771782904863
+66,506.915771484375,1.4889414310455322,3.083734918618575e-05,1.0898759365081787,1038.564453125,7.948344136821106e-05,-2.0243377685546875,0.7025711536407471,5.779355706181377e-05,0.0883328914642334,3.317409038543701,8.423763938480988e-05,731.0507202148438,1043.6282958984375,5.223025073064491e-05,505.65380859375,-0.5874419212341309,4.028521289001219e-05,505.8944396972656,0.8857202529907227,5.084258737042546e-05,595.5341186523438,220.39263916015625,0.00022009499662090093
+67,506.9209289550781,1.4896292686462402,3.0581919418182224e-05,1.090888261795044,1038.56591796875,7.943146920297295e-05,-2.0243382453918457,0.7025699615478516,5.779328421340324e-05,0.08833122253417969,3.317409038543701,8.423667895840481e-05,731.060302734375,1043.560791015625,5.225211862125434e-05,505.64996337890625,-0.5876655578613281,3.985361399827525e-05,505.89501953125,0.8874404430389404,5.029026578995399e-05,595.2315673828125,220.38833618164062,0.0002778716734610498
+68,506.9206848144531,1.4898943901062012,3.051945532206446e-05,1.0944252014160156,1038.5665283203125,7.952574378577992e-05,-2.024341583251953,0.7025723457336426,5.779294951935299e-05,0.08833074569702148,3.317410707473755,8.423684630542994e-05,731.05615234375,1043.5745849609375,5.1245875511085615e-05,505.64959716796875,-0.588374137878418,3.971445039496757e-05,505.89471435546875,0.8871591091156006,5.014028647565283e-05,595.0933837890625,220.43789672851562,0.00022863723279442638
+69,506.919189453125,1.4908857345581055,3.039716830244288e-05,1.091571569442749,1038.56640625,7.937800546642393e-05,-2.0243377685546875,0.7025690078735352,5.779328421340324e-05,0.0883328914642334,3.317408561706543,8.42377994558774e-05,731.0117797851562,1043.5740966796875,5.114744635648094e-05,505.64813232421875,-0.5893564224243164,3.9507784094894305e-05,505.8926696777344,0.8864991664886475,4.986890417058021e-05,595.0345458984375,220.48976135253906,0.00020674984261859208
+70,506.91693115234375,1.4972076416015625,3.0447999961324967e-05,1.0914201736450195,1038.5654296875,7.966336124809459e-05,-2.0243396759033203,0.7025723457336426,5.7792840379988775e-05,0.08833122253417969,3.317410469055176,8.423684630542994e-05,0.23048067092895508,1037.7523193359375,4.949853610014543e-05,505.6464538574219,-0.588383674621582,3.938376539736055e-05,505.8942565917969,0.8899977207183838,4.975181582267396e-05,595.1920776367188,220.52316284179688,0.0001711436198092997
+71,506.9806213378906,1.4517371654510498,3.289340384071693e-05,1.0909368991851807,1038.56396484375,7.946396362967789e-05,-2.0264601707458496,0.7042579650878906,5.77803875785321e-05,0.0880439281463623,3.319751262664795,8.423948020208627e-05,0.23189067840576172,1037.752197265625,4.9454985855845734e-05,505.6814880371094,-0.5685739517211914,4.063908272655681e-05,505.95477294921875,0.8786969184875488,5.285395309329033e-05,507.40936279296875,1042.9754638671875,0.0001602732518222183
+72,507.0261535644531,1.5184261798858643,3.286505670985207e-05,1.0896823406219482,1038.5599365234375,7.997597276698798e-05,-2.029107093811035,0.705397367477417,5.769608833361417e-05,0.0943002700805664,3.3149871826171875,8.432766480837017e-05,716.87353515625,492.00128173828125,5.148888521944173e-05,505.6759338378906,-0.5192441940307617,4.134955088375136e-05,505.97747802734375,0.9458990097045898,5.159628562978469e-05,508.9815979003906,-1.4021663665771484,0.00015929725486785173
+73,507.1922912597656,1.545699119567871,3.669723810162395e-05,1.089158535003662,1038.56103515625,7.969199941726401e-05,-2.0311474800109863,0.7009725570678711,5.760872954851948e-05,0.09156322479248047,3.3105387687683105,8.416031778324395e-05,716.9152221679688,492.0832214355469,5.573686212301254e-05,505.6348571777344,-0.4710683822631836,4.689426350523718e-05,506.1646423339844,0.9975883960723877,5.9917343605775386e-05,509.1191101074219,-1.2320294380187988,0.00019582851382438093
+74,507.19195556640625,1.5574116706848145,3.69166154996492e-05,1.0880796909332275,1038.5609130859375,7.967422425281256e-05,-2.031148910522461,0.7009716033935547,5.760944259236567e-05,0.09156227111816406,3.310537338256836,8.416040509473532e-05,716.9170532226562,492.097900390625,5.1744947995757684e-05,505.64990234375,-0.4676785469055176,4.817062654183246e-05,506.1655578613281,1.0211632251739502,6.122998456703499e-05,509.1058044433594,-1.1676287651062012,0.00020543267601169646
+75,507.1867370605469,1.5506393909454346,3.762309643207118e-05,1.0880815982818604,1038.5609130859375,7.967467536218464e-05,-2.026181221008301,0.7078745365142822,5.777498518000357e-05,0.09736919403076172,3.3162708282470703,8.447301661362872e-05,506.6943664550781,-0.7248945236206055,5.240451355348341e-05,505.654541015625,-0.4623908996582031,4.9024914915207773e-05,506.1723327636719,1.0218453407287598,6.25507309450768e-05,509.110107421875,-1.1614155769348145,0.00022092481958679855
+76,507.18853759765625,1.5499675273895264,3.799291152972728e-05,1.088080883026123,1038.5609130859375,7.96744498074986e-05,-2.0261807441711426,0.7078781127929688,5.777576006948948e-05,0.09737086296081543,3.316270351409912,8.447284926660359e-05,506.69024658203125,-0.7200608253479004,5.247958324616775e-05,505.6568603515625,-0.46489953994750977,4.914970850222744e-05,506.17205810546875,1.0195894241333008,6.289759767241776e-05,509.10693359375,-1.159609317779541,0.00022331542277242988
+77,507.18853759765625,1.5499680042266846,3.7992729630786926e-05,1.088080644607544,1038.5609130859375,7.967452984303236e-05,-2.0261788368225098,0.7078771591186523,5.777532351203263e-05,0.09737086296081543,3.3162765502929688,8.447325672022998e-05,506.69024658203125,-0.720062255859375,5.247958324616775e-05,505.6568603515625,-0.46489953994750977,4.915027238894254e-05,506.17205810546875,1.0195908546447754,6.289765588007867e-05,509.1069030761719,-1.1596078872680664,0.0002233128616353497
+78,507.18853759765625,1.5499677658081055,3.7993166188243777e-05,1.0880823135375977,1038.5609130859375,7.96747553977184e-05,-2.0261802673339844,0.7078754901885986,5.7775538152782246e-05,0.09736919403076172,3.316270112991333,8.447317668469623e-05,506.69024658203125,-0.7200617790222168,5.247968147159554e-05,505.6568603515625,-0.46489953994750977,4.9150978156831115e-05,506.17205810546875,1.0195889472961426,6.289771408773959e-05,509.1069030761719,-1.1596083641052246,0.0002233156410511583
+79,507.1863708496094,1.5509250164031982,3.810601629083976e-05,1.0879590511322021,1038.560791015625,7.966966222738847e-05,-2.0261778831481934,0.7078745365142822,5.7775265304371715e-05,0.09736776351928711,3.3162717819213867,8.447293657809496e-05,506.690185546875,-0.7181529998779297,5.264925857773051e-05,505.6552429199219,-0.46291255950927734,4.930016439175233e-05,506.1706848144531,1.0195622444152832,6.308302545221522e-05,509.105712890625,-1.157212257385254,0.00022413475380744785
+80,507.1880798339844,1.5513067245483398,3.827868931693956e-05,1.087719440460205,1038.560302734375,7.963009556988254e-05,-2.026181221008301,0.7078762054443359,5.7775152527028695e-05,0.09736824035644531,3.3162732124328613,8.447317668469623e-05,506.6877136230469,-0.7144861221313477,5.2870993386022747e-05,505.65362548828125,-0.45925426483154297,4.9499478336656466e-05,506.1722717285156,1.0184118747711182,6.331789336400107e-05,509.1069641113281,-1.1540570259094238,0.00022568492568098009
+81,507.2610168457031,1.5524067878723145,3.9598049625055864e-05,1.0797362327575684,1038.56005859375,7.978446956258267e-05,-2.0261807441711426,0.707876443862915,5.7775101595325395e-05,0.09736919403076172,3.3162693977355957,8.447365689789876e-05,506.67633056640625,-0.6833162307739258,5.3787291108164936e-05,505.6584167480469,-0.4263291358947754,5.094251537229866e-05,506.2337646484375,1.021162509918213,6.39944919385016e-05,509.1994934082031,-1.1302170753479004,0.0002377098280703649
+82,507.25726318359375,1.5493106842041016,4.0389608329860494e-05,1.0664758682250977,1038.5589599609375,7.973191532073542e-05,-2.026181221008301,0.7078752517700195,5.777564729214646e-05,0.09736394882202148,3.316269874572754,8.447284926660359e-05,506.67987060546875,-0.6835017204284668,5.458401938085444e-05,505.6649169921875,-0.4287533760070801,5.168887219042517e-05,506.2264709472656,1.014559030532837,6.514864071505144e-05,509.195556640625,-1.1138453483581543,0.0002439819072606042
+83,507.27679443359375,1.5386526584625244,4.0776234527584165e-05,1.0833032131195068,1038.5623779296875,7.969154830789194e-05,-2.0261712074279785,0.7078778743743896,5.777465776191093e-05,0.09736084938049316,3.3162784576416016,8.447261643595994e-05,506.6927795410156,-0.6971302032470703,5.4719475883757696e-05,505.6709899902344,-0.43331480026245117,5.2079201850574464e-05,506.23358154296875,1.0034897327423096,6.573639257112518e-05,509.2160339355469,-1.098623275756836,0.0002498042013030499
+84,507.2552795410156,1.548769235610962,4.101565355085768e-05,1.094069242477417,1038.5625,7.967164128785953e-05,-2.0261707305908203,0.7078790664672852,5.777465776191093e-05,0.09736442565917969,3.3162765502929688,8.447333675576374e-05,506.650146484375,-0.7520112991333008,5.432338730315678e-05,505.6676025390625,-0.47536325454711914,5.257320299278945e-05,506.1788330078125,1.0153396129608154,6.623683293582872e-05,509.133056640625,-1.0954742431640625,0.00025848011136986315
+85,506.9696350097656,1.537224531173706,3.108634700765833e-05,1.0014808177947998,1038.5177001953125,7.604646816616878e-05,-2.026024341583252,0.7077085971832275,5.777674959972501e-05,0.0974264144897461,3.3162569999694824,8.447897562291473e-05,0.21865534782409668,1037.747802734375,4.7831665142439306e-05,505.6517639160156,-0.5722718238830566,4.4224943849258125e-05,505.912841796875,0.9743096828460693,5.1413422625046223e-05,508.8174133300781,-1.3295269012451172,0.0001606413716217503
+86,506.98956298828125,1.5392942428588867,3.184139495715499e-05,1.00138521194458,1038.517822265625,7.605277642142028e-05,-2.026029586791992,0.7077047824859619,5.777619662694633e-05,0.09740471839904785,3.3162667751312256,8.447784784948453e-05,0.2186732292175293,1037.7479248046875,4.7827787057030946e-05,505.6428527832031,-0.5661616325378418,4.484341116040014e-05,505.9422912597656,0.973334789276123,5.290730405249633e-05,508.83807373046875,-1.325901985168457,0.00016642901755403727
+87,506.9917297363281,1.5353386402130127,3.267265492468141e-05,1.0012073516845703,1038.517822265625,7.603117410326377e-05,-2.021076202392578,0.7038722038269043,5.797090852865949e-05,0.09885144233703613,3.313168525695801,8.470127795590088e-05,0.2184278964996338,1037.747802734375,4.781378811458126e-05,505.6502685546875,-0.559241771697998,4.5127617340767756e-05,505.9520568847656,0.9667279720306396,5.506075467565097e-05,508.8434143066406,-1.320427417755127,0.00017325396765954792
+88,506.874267578125,1.553987979888916,3.0434932341449894e-05,1.0010828971862793,1038.517333984375,7.600166281918064e-05,-2.012129306793213,0.6971237659454346,5.835583942825906e-05,0.10652661323547363,3.2942605018615723,8.55787584441714e-05,0.21792149543762207,1037.747314453125,4.7801844630157575e-05,505.6696472167969,-0.592832088470459,4.266158430255018e-05,505.876220703125,0.9620463848114014,5.105456511955708e-05,508.6906433105469,-1.3582587242126465,0.00014981854474171996
+89,506.9052734375,1.551335096359253,3.086253491346724e-05,1.0013303756713867,1038.5177001953125,7.601753895869479e-05,-2.015638828277588,0.7019298076629639,5.824775871587917e-05,0.10305452346801758,3.3051681518554688,8.521052950527519e-05,0.2182912826538086,1037.7476806640625,4.7811325202928856e-05,505.6679382324219,-0.5773725509643555,4.3024792830692604e-05,505.90771484375,0.9615907669067383,5.2071107347728685e-05,508.73150634765625,-1.3440957069396973,0.00015489209908992052
+90,506.8991394042969,1.5486650466918945,3.070828825002536e-05,1.001417875289917,1038.5177001953125,7.605068094562739e-05,-2.020033359527588,0.7041027545928955,5.8083347539650276e-05,0.0994102954864502,3.3133397102355957,8.486652950523421e-05,0.2186722755432129,1037.7479248046875,4.782847099704668e-05,505.6804504394531,-0.5844731330871582,4.3107964302180335e-05,505.9001159667969,0.9593296051025391,5.157522900844924e-05,508.7245788574219,-1.3409733772277832,0.0001540782250231132
+91,506.8999938964844,1.549978494644165,3.071886021643877e-05,1.0013306140899658,1038.517333984375,7.601681863889098e-05,-2.015638828277588,0.7019319534301758,5.824708932777867e-05,4.557994365692139,620.076171875,0.0004740016011055559,2.082392692565918,633.0515747070312,0.0008297105086967349,505.678466796875,-0.584071159362793,4.3078005546703935e-05,505.8990173339844,0.9622316360473633,5.1564067689469084e-05,508.7221374511719,-1.3419852256774902,0.0001540946977911517
+92,62.539939880371094,610.3524780273438,0.0003055338456761092,49.2010383605957,597.4171142578125,0.010130459442734718,60.38710403442383,617.0364379882812,0.0012584590585902333,26.177091598510742,598.1459350585938,0.002966407686471939,19.20775604248047,622.646728515625,0.04062454402446747,4.5282440185546875,622.13330078125,0.0020382360089570284,59.430721282958984,612.8370361328125,0.005762191489338875,0.7254102230072021,625.43017578125,0.0003329132741782814
+93,99.43724060058594,587.4215698242188,0.0006521567702293396,95.8729019165039,582.3377685546875,0.07939919084310532,97.51309967041016,592.052734375,0.0063625662587583065,86.62353515625,598.2904663085938,0.04195089638233185,32.18739318847656,588.0506591796875,0.3963722288608551,59.53102111816406,535.0396118164062,0.04875031113624573,93.82814025878906,577.9566040039062,0.10476384311914444,98.63639831542969,589.1751708984375,0.0013035150477662683
+94,1.3823163509368896,476.3007507324219,0.003165077418088913,141.24777221679688,577.4462280273438,0.09250910580158234,137.1832733154297,602.5972290039062,0.01772467978298664,88.83393096923828,545.56787109375,0.65482097864151,57.011085510253906,565.2830810546875,0.5118264555931091,104.47357177734375,525.9035034179688,0.3266600966453552,83.56423950195312,495.1080322265625,0.5758489966392517,127.84866333007812,625.7157592773438,0.020679770037531853
+95,176.9296112060547,599.5225830078125,0.0031131182331591845,175.88446044921875,564.78857421875,0.09536519646644592,168.04354858398438,589.6183471679688,0.10539652407169342,117.30683135986328,524.7610473632812,0.8267754316329956,98.30793762207031,551.2948608398438,0.6298299431800842,150.96046447753906,517.1394653320312,0.25204581022262573,129.22119140625,491.0977783203125,0.6011962890625,164.8076629638672,610.341796875,0.2790151834487915
+96,176.933837890625,599.5244750976562,0.0031186044216156006,175.8900146484375,564.7930908203125,0.09506676346063614,168.02748107910156,589.6015625,0.10611217468976974,117.31627655029297,524.7750854492188,0.8256902694702148,98.32892608642578,551.363037109375,0.6283702254295349,150.95388793945312,517.1303100585938,0.2510414123535156,129.21316528320312,491.1165771484375,0.6010371446609497,164.80775451660156,610.3348999023438,0.27754688262939453
+97,174.46571350097656,489.82647705078125,0.0006683028768748045,207.92198181152344,531.8128662109375,0.019316742196679115,178.1095733642578,492.5539245605469,0.02286905236542225,158.68971252441406,511.97686767578125,0.8664875626564026,140.72979736328125,543.2265625,0.6588167548179626,190.3418731689453,498.8170166015625,0.42291736602783203,178.8086700439453,489.4242858886719,0.26040035486221313,209.67823791503906,594.3378295898438,0.0019193115876987576
+98,135.4116973876953,519.026123046875,0.0009548421949148178,137.531005859375,515.93212890625,0.03453057259321213,262.1387023925781,559.3531494140625,0.009724984876811504,203.24221801757812,509.8065490722656,0.9659218192100525,182.4763641357422,535.6710205078125,0.8946450352668762,234.81051635742188,495.3527526855469,0.7432665228843689,220.72512817382812,477.4675598144531,0.12154480069875717,143.65560913085938,644.9348754882812,0.01083120796829462
+99,176.2841339111328,512.7484741210938,0.004382398910820484,306.8043518066406,535.8963012695312,0.09476874768733978,295.60211181640625,557.911865234375,0.03870109096169472,243.78700256347656,507.9176025390625,0.976233184337616,216.11444091796875,529.2833251953125,0.8826664090156555,273.1356506347656,494.0600891113281,0.8108749389648438,259.4261779785156,475.4853515625,0.2556033134460449,171.19285583496094,516.30615234375,0.023869957774877548
diff --git a/tests/test_unit/test_io.py b/tests/test_unit/test_io.py
index 4a342a7..7268085 100644
--- a/tests/test_unit/test_io.py
+++ b/tests/test_unit/test_io.py
@@ -23,6 +23,7 @@
_reencode_video,
_update_image_ids,
annotations_to_poseinterface,
+ frames_to_poseinterface,
predictions_to_poseinterface,
video_to_poseinterface,
)
@@ -439,6 +440,106 @@ def test_pad_integers_to_same_width():
assert _pad_integers_to_same_width(input) == expected
+# ---------- Frames to poseinterface ----------------
+
+
+@pytest.fixture
+def frames_coco_json(tmp_path):
+ """Create a minimal COCO JSON with 3 image entries."""
+ data = {
+ "images": [
+ {"id": 100, "file_name": "sub-A_ses-1_cam-top_frame-0100.png"},
+ {"id": 200, "file_name": "sub-A_ses-1_cam-top_frame-0200.png"},
+ {"id": 350, "file_name": "sub-A_ses-1_cam-top_frame-0350.png"},
+ ],
+ "annotations": [],
+ "categories": [],
+ }
+ path = tmp_path / "framelabels.json"
+ path.write_text(json.dumps(data))
+ return path
+
+
+@pytest.fixture
+def frames_source_dir(tmp_path):
+ """Create a source directory with DLC-style frame images."""
+ src = tmp_path / "source_frames"
+ src.mkdir()
+ for name in ["img0100.png", "img0200.png", "img0350.png"]:
+ (src / name).write_bytes(b"fake png")
+ return src
+
+
+@pytest.fixture
+def frames_target_dir(tmp_path):
+ """Create an empty target directory."""
+ tgt = tmp_path / "target_frames"
+ tgt.mkdir()
+ return tgt
+
+
+def test_frames_to_poseinterface_copies_and_renames(
+ frames_source_dir, frames_target_dir, frames_coco_json
+):
+ """Test that frames are copied with standardised names."""
+ frames_to_poseinterface(
+ frames_source_dir, frames_target_dir, frames_coco_json
+ )
+
+ expected_names = {
+ "sub-A_ses-1_cam-top_frame-0100.png",
+ "sub-A_ses-1_cam-top_frame-0200.png",
+ "sub-A_ses-1_cam-top_frame-0350.png",
+ }
+ actual_names = {f.name for f in frames_target_dir.glob("*.png")}
+ assert actual_names == expected_names
+
+
+def test_frames_to_poseinterface_skips_existing(
+ frames_source_dir, frames_target_dir, frames_coco_json
+):
+ """Test that existing target files are not overwritten."""
+ existing = frames_target_dir / "sub-A_ses-1_cam-top_frame-0100.png"
+ existing.write_bytes(b"do not overwrite")
+
+ frames_to_poseinterface(
+ frames_source_dir, frames_target_dir, frames_coco_json
+ )
+
+ assert existing.read_bytes() == b"do not overwrite"
+
+
+def test_frames_to_poseinterface_raises_for_missing_source(
+ frames_target_dir, frames_coco_json, tmp_path
+):
+ """Test FileNotFoundError when source frame is missing."""
+ empty_src = tmp_path / "empty_source"
+ empty_src.mkdir()
+
+ with pytest.raises(FileNotFoundError, match="No image files found"):
+ frames_to_poseinterface(empty_src, frames_target_dir, frames_coco_json)
+
+
+def test_frames_to_poseinterface_warns_for_partial_match(
+ frames_source_dir, frames_target_dir, frames_coco_json
+):
+ """Test that a warning is emitted when some frames are missing."""
+ # Remove one source image so it can't be matched
+ (frames_source_dir / "img0200.png").unlink()
+
+ with pytest.warns(UserWarning, match="1 frame.*not found.*skipped"):
+ frames_to_poseinterface(
+ frames_source_dir, frames_target_dir, frames_coco_json
+ )
+
+ # The two matched frames should still be copied
+ actual_names = {f.name for f in frames_target_dir.glob("*.png")}
+ assert actual_names == {
+ "sub-A_ses-1_cam-top_frame-0100.png",
+ "sub-A_ses-1_cam-top_frame-0350.png",
+ }
+
+
# ---------- Video to poseinterface ----------------
diff --git a/tests/test_unit/test_utils.py b/tests/test_unit/test_utils.py
new file mode 100644
index 0000000..58d0dda
--- /dev/null
+++ b/tests/test_unit/test_utils.py
@@ -0,0 +1,94 @@
+import pytest
+
+from poseinterface.utils import tree
+
+
+class TestTree:
+ """Tests for the tree function that generates
+ a string representation of a directory structure."""
+
+ def test_empty_directory(self, tmp_path):
+ """Test tree of an empty directory."""
+ result = tree(tmp_path)
+ assert result.startswith(tmp_path.name + "/")
+ assert "0 directories" in result
+
+ def test_files_and_directories(self, tmp_path):
+ """Test tree with a mix of files and directories."""
+ (tmp_path / "a_dir").mkdir()
+ (tmp_path / "b_file.txt").touch()
+
+ result = tree(tmp_path)
+ assert "a_dir/" in result
+ assert "b_file.txt" in result
+ assert "b_file.txt/" not in result
+ assert "1 directories" in result
+ assert "1 files" in result
+
+ def test_level_limits_depth(self, tmp_path):
+ """Test that level limits the depth of the tree."""
+ (tmp_path / "a" / "b" / "c").mkdir(parents=True)
+
+ result_shallow = tree(tmp_path, level=1)
+ result_deep = tree(tmp_path, level=3)
+
+ # level=1 shows "a/" but not "b/"
+ assert "a/" in result_shallow
+ assert "b/" not in result_shallow
+ # level=3 shows all
+ assert "c/" in result_deep
+
+ @pytest.mark.parametrize(
+ "tree_kwargs, expected_present, expected_absent",
+ [
+ (
+ {"limit_to_directories": True},
+ ["subdir/", ".hidden_dir/"],
+ ["visible.txt", ".hidden_file"],
+ ),
+ (
+ {"exclude_hidden": True},
+ ["subdir/", "visible.txt"],
+ [".hidden_dir", ".hidden_file"],
+ ),
+ ],
+ )
+ def test_filtering_options(
+ self, tmp_path, tree_kwargs, expected_present, expected_absent
+ ):
+ """Test that filtering options include/exclude entries."""
+ (tmp_path / "subdir").mkdir()
+ (tmp_path / "visible.txt").touch()
+ (tmp_path / ".hidden_dir").mkdir()
+ (tmp_path / ".hidden_file").touch()
+
+ result = tree(tmp_path, **tree_kwargs)
+ for name in expected_present:
+ assert name in result
+ for name in expected_absent:
+ assert name not in result
+
+ def test_length_limit(self, tmp_path):
+ """Test that output is truncated at length_limit."""
+ for i in range(20):
+ (tmp_path / f"file_{i:02d}.txt").touch()
+
+ result = tree(tmp_path, length_limit=5)
+ assert "length_limit" in result
+ assert "5" in result
+
+ def test_sorted_output(self, tmp_path):
+ """Test that entries are sorted alphabetically."""
+ (tmp_path / "cherry.txt").touch()
+ (tmp_path / "apple.txt").touch()
+ (tmp_path / "banana.txt").touch()
+
+ result = tree(tmp_path)
+ lines = result.split("\n")
+ content_lines = [
+ line
+ for line in lines
+ if any(f in line for f in ["apple", "banana", "cherry"])
+ ]
+ names = [line.split("── ")[-1] for line in content_lines]
+ assert names == ["apple.txt", "banana.txt", "cherry.txt"]