diff --git a/src/robofish/io/file.py b/src/robofish/io/file.py index 616eb9257b9628379f78fbda46cbe5b82df14713..f4ceb994c7d98ad5e15928dc0f49b8fbda41ff06 100644 --- a/src/robofish/io/file.py +++ b/src/robofish/io/file.py @@ -30,6 +30,7 @@ import uuid import deprecation import types +# Remember: Update docstring when updating these two global variables default_format_version = np.array([1, 0], dtype=np.int32) default_format_url = ( @@ -61,26 +62,64 @@ class File(h5py.File): ): """Create a new RoboFish Track Format object. - When called with a path, it is loaded, otherwise a new temporary file is created. + When called with a path, it is loaded, otherwise a new temporary + file is created. File contents can be validated against the + track format specification. Parameters ---------- path : str or Path, optional Location of file to be opened. If not provided, mode is ignored. - - mode : str - r Readonly, file must exist (default) - r+ Read/write, file must exist - w Create file, truncate if exists - x Create file, fail if exists - a Read/write if exists, create otherwise - - world_size_cm - optional integer array of the world size in cm - strict_validate - optional boolean, if the file should be strictly validated, when loaded from a path. The default is False. - format_version - optional version [major, minor] of the trackformat specification + mode : str, default='r' + 'r' Readonly, file must exist + 'r+' Read/write, file must exist + 'w' Create file, truncate if exists + 'x' Create file, fail if exists + 'a' Read/write if exists, create otherwise + world_size_cm : [int, int] , optional + side lengths [x, y] of the world in cm. + rectangular world shape is assumed. + TODO: Cuboid world is also possible in track format + strict_validate : bool, default=False + if the file should be strictly validated against the track + format specification, when loaded from a path. + TODO: Should this validate against the version sepcified in + format_version or just against the most recent version? + format_version : [int, int], default=[1,0] + version [major, minor] of track format specification + format_url : str, default="https://git.imp.fu-berlin.de/bioroboticslab/robofish/track_format/-/releases/1.0" + location of track format specification. + should fit `format_version`. + sampling_name : str, optional + How to specify your sampling: + + 1. (optional) + provide text description of your sampling in `sampling_name` + + 2.a (mandatory, if you have a constant sampling frequency) + specify `frequency_hz` with your sampling frequency in Hz + + 2.b (mandatory, if you do NOT have a constant sampling frequency) + specify `monotonic_time_points_us` with a list[1] of time + points in microseconds on a montonic clock, one for each + sample in your dataset. + + 3. (optional) + specify `calendar_time_points` with a list[2] of time points + in the ISO 8601 extended format with microsecond precision + and time zone designator[3], one for each sample in your + dataset. + + [1] any Iterable of int + [2] any Iterable of str + [3] example: "2020-11-18T13:21:34.117015+01:00" + + frequency_hz: int, optional + refer to explanation of `sampling_name` + monotonic_time_points_us: Iterable of int, optional + refer to explanation of `sampling_name` + calendar_time_points: Iterable of str, optional + refer to explanation of `sampling_name` """ if path is None: