Source code for mendevi.database.meta

#!/usr/bin/env python3

"""Help to get the good extractor."""

import collections

from mendevi.database import extract


ExtractContext = collections.namedtuple("ExtractContext", ["label", "func", "is_log"])


[docs] def get_extractor(name: str): """Get the way to deserialize a raw value. Parameters ---------- name : str The label name. Returns ------- label : str The description of the physical quantity. This description can be used to label the axes of a graph. func : callable The function that performs the verification and deserialisation task. is_log : boolean or None True to display in log space, False for linear. The value None means the axis is not continuous. """ assert isinstance(name, str), name.__class__.__name__ match name: # catched by mendevi.cst.labels.extract_labels case "act_duration": return ExtractContext( "Video processing activity duration in seconds", extract.extract_act_duration, False, ) case "bitrate" | "rate": return ExtractContext( r"Video bitrate in $bit.s^{-1}$", extract.extract_bitrate, True, ) case "codec": return ExtractContext( "Codec name", extract.extract_codec, None, ) case "cores": return ExtractContext( "Average cumulative utilisation rate of logical cores", extract.extract_cores, False, ) case "effort" | "preset": return ExtractContext( "Effort provided as a parameter to the encoder", extract.extract_effort, None, ) case "enc_scenario": return ExtractContext( "Unique string specific to the encoding scenario", extract.extract_enc_scenario, None, ) case "encoder": return ExtractContext( "Name of the encoder", extract.extract_encoder, None, ) case "energy": return ExtractContext( "Total energy consumption in Joules", extract.extract_energy, True, ) case "lpips": return ExtractContext( "Learned Perceptual Image Patch Similarity (LPIPS)", extract.extract_lpips, False, ) case "lpips_alex": return ExtractContext( "Learned Perceptual Image Patch Similarity (LPIPS) with alex", extract.extract_lpips_alex, False, ) case "lpips_vgg": return ExtractContext( "Learned Perceptual Image Patch Similarity (LPIPS) with vgg", extract.extract_lpips_vgg, False, ) case "power": return ExtractContext( "Average power consumption in Watts", extract.extract_power, False, ) case "mode": return ExtractContext( "Bitrate mode, constant (cbr) or variable (vbr)", extract.extract_mode, None, ) case "profile": return ExtractContext( "Profile of the video", extract.extract_profile, None, ) case "psnr": return ExtractContext( "Peak Signal to Noise Ratio (PSNR)", extract.extract_psnr, False, ) case "quality": return ExtractContext( "Quality level passed to the encoder", extract.extract_quality, False, ) case "ssim": return ExtractContext( "Structural Similarity (SSIM)", extract.extract_ssim, False, ) case "ssim_rev" | "rev_ssim": return ExtractContext( "Reverse of Structural Similarity (1-SSIM)", extract.extract_ssim_rev, True, ) case "threads": return ExtractContext( "Number of threads provided as a parameter to the encoder", extract.extract_threads, False, ) case "vmaf": return ExtractContext( "Video Multi-Method Assessment Fusion (VMAF)", extract.extract_vmaf, False, ) case "video_duration" | "vid_duration": return ExtractContext( "Video duration in seconds", extract.extract_video_duration, False, ) case "video_name" | "vid_name" | "name": return ExtractContext( "Input video name", extract.extract_video_name, None, ) raise KeyError(f"{name} is not recognised")