sleap.util

A miscellaneous set of utility functions. Try not to put things in here unless they really have no other place.

sleap.util.attr_to_dtype(cls: Any)[source]

Converts classes with basic types to numpy composite dtypes.

Parameters

cls – class to convert

Returns

numpy dtype.

sleap.util.dict_cut(d: Dict, a: int, b: int)Dict[source]

Helper function for creating subdictionary by numeric indexing of items.

Assumes that dict.items() will have a fixed order.

Parameters
  • d – The dictionary to “split”

  • a – Start index of range of items to include in result.

  • b – End index of range of items to include in result.

Returns

A dictionary that contains a subset of the items in the original dict.

sleap.util.find_files_by_suffix(root_dir: str, suffix: str, prefix: str = '', depth: int = 0)List[posix.DirEntry][source]

Returns list of files matching suffix, optionally searching in subdirs.

Parameters
  • root_dir – Path to directory where we start searching

  • suffix – File suffix to match (e.g., ‘.json’)

  • prefix – Optional file prefix to match

  • depth – How many subdirectories deep to keep searching

Returns

List of os.DirEntry objects.

sleap.util.frame_list(frame_str: str)Optional[List[int]][source]

Converts ‘n-m’ string to list of ints.

Parameters

frame_str – string representing range

Returns

List of ints, or None if string does not represent valid range.

sleap.util.get_config_file(shortname: str, ignore_file_not_found: bool = False, get_defaults: bool = False)str[source]

Returns the full path to the specified config file.

The config file will be at ~/.sleap/<version>/<shortname>

If that file doesn’t yet exist, we’ll look for a <shortname> file inside the package config directory (sleap/config) and copy the file into the user’s config directory (creating the directory if needed).

Parameters
  • shortname – The short filename, e.g., shortcuts.yaml

  • ignore_file_not_found – If True, then return path for config file regardless of whether it exists.

  • get_defaults – If True, then just return the path to default config file.

Raises

FileNotFoundError – If the specified config file cannot be found.

Returns

The full path to the specified config file.

sleap.util.get_package_file(filename: str)str[source]

Returns full path to specified file within sleap package.

sleap.util.json_dumps(d: Dict, filename: Optional[str] = None)[source]

A simple wrapper around the JSON encoder we are using.

Parameters
  • d – The dict to write.

  • filename – The filename to write to.

Returns

None

sleap.util.json_loads(json_str: str)Dict[source]

A simple wrapper around the JSON decoder we are using.

Parameters

json_str – JSON string to decode.

Returns

Result of decoding JSON string.

sleap.util.make_scoped_dictionary(flat_dict: Dict[str, Any], exclude_nones: bool = True)Dict[str, Dict[str, Any]][source]

Converts dictionary with scoped keys to dictionary of dictionaries.

Parameters
  • flat_dict – The dictionary to convert. Keys should be strings with scope.foo format.

  • exclude_nodes – Whether to exclude items where value is None.

Returns

Dictionary in which keys are scope and values are dictionary with

foo (etc) as keys and original value of scope.foo as value.

sleap.util.save_dict_to_hdf5(h5file: h5py._hl.files.File, path: str, dic: dict)[source]

Saves dictionary to an HDF5 file.

Calls itself recursively if items in dictionary are not np.ndarray, np.int64, np.float64, str, or bytes. Objects must be iterable.

Parameters
  • h5file – The HDF5 filename object to save the data to. Assume it is open.

  • path – The path to group save the dict under.

  • dic – The dict to save.

Raises

ValueError – If type for item in dict cannot be saved.

Returns

None

sleap.util.uniquify(seq: Iterable[Hashable])List[source]

Returns unique elements from list, preserving order.

Note: This will not work on Python 3.5 or lower since dicts don’t preserve order.

Parameters

seq – The list to remove duplicates from.

Returns

The unique elements from the input list extracted in original order.

sleap.util.usable_cpu_count()int[source]

Gets number of CPUs usable by the current process.

Takes into consideration cpusets restrictions.

Returns

The number of usable cpus

sleap.util.weak_filename_match(filename_a: str, filename_b: str)bool[source]

Check if paths probably point to same file.

Compares the filename and names of two directories up.

Parameters
  • filename_a – first path to check

  • filename_b – path to check against first path

Returns

True if the paths probably match.