Skip to content

liblaf.melon.io.wrap.landmarks ยค

Functions:

  • get_landmarks_path โ€“
  • load_landmarks โ€“
  • save_landmarks โ€“

get_landmarks_path ยค

get_landmarks_path(path: str | PathLike[str]) -> Path
Source code in src/liblaf/melon/io/wrap/landmarks/_utils.py
5
6
7
8
9
def get_landmarks_path(path: str | os.PathLike[str]) -> Path:
    path: Path = Path(path)
    if path.suffix != ".json":
        return path.with_suffix(".landmarks.json")
    return path

load_landmarks ยค

load_landmarks(
    path: str | PathLike[str],
) -> Float[ndarray, "N 3"]
Source code in src/liblaf/melon/io/wrap/landmarks/_reader.py
12
13
14
15
16
17
def load_landmarks(path: str | os.PathLike[str]) -> Float[np.ndarray, "N 3"]:
    path: Path = get_landmarks_path(path)
    if not path.exists():
        return np.empty((0, 3), dtype=float)
    data: list[dict[str, float]] = grapes.load(path)
    return np.asarray([[p["x"], p["y"], p["z"]] for p in data])

save_landmarks ยค

save_landmarks(
    path: str | PathLike[str],
    points: Float[ArrayLike, "N 3"],
) -> None
Source code in src/liblaf/melon/io/wrap/landmarks/_writer.py
12
13
14
15
16
17
18
19
20
def save_landmarks(
    path: str | os.PathLike[str], points: Float[ArrayLike, "N 3"]
) -> None:
    path: Path = get_landmarks_path(path)
    points: Float[np.ndarray, "N 3"] = np.asarray(points)
    data: list[dict[str, float]] = [
        {"x": p[0], "y": p[1], "z": p[2]} for p in points.tolist()
    ]
    grapes.save(path, data)