Source code for tape.analysis.structure_function.calculator_registrar

from tape.analysis.structure_function.base_calculator import StructureFunctionCalculator


[docs] def register_sf_subclasses(): """This method will identify all of the subclasses of `StructureFunctionCalculator` and build a dictionary that maps `name : subclass`. Returns ------- dict A dictionary of all of subclasses of `StructureFunctionCalculator`. Where the str returned from `subclass.name_id()` is the key, and the class is the value. Raises ------ ValueError If a duplicate key is found, a ValueError will be raised. This would likely occur if a user copy/pasted an existing subclass but failed to update the unique name_id string. """ subclass_dict = {} for subcls in StructureFunctionCalculator.__subclasses__(): if subcls.name_id() in subclass_dict: raise ValueError( "Attempted to add duplicate Structure Function calculator name to SF_METHODS: " + str(subcls.name_id()) ) subclass_dict[subcls.name_id()] = subcls return subclass_dict
[docs] def update_sf_subclasses(): """This function is used to register newly created subclasses of the `StructureFunctionCalculator`. """ for subcls in StructureFunctionCalculator.__subclasses__(): if subcls.name_id() not in SF_METHODS.keys(): SF_METHODS[subcls.name_id()] = subcls
# The dictionary of all available subclasses of the StructureFunctionCalculator.
[docs] SF_METHODS = register_sf_subclasses()