2.14. empix.OptionalCroppingParams
- class OptionalCroppingParams(center=None, window_dims=None, pad_mode='no-padding', apply_symmetric_mask=False, title=None, skip_validation_and_conversion=False)[source]
- Bases: - PreSerializableAndUpdatable- The set of optional parameters for the function - empix.crop().- The Python function - empix.crop()applies a series of optional transformations to a given input 2D- hyperspysignal. Let us denote the input 2D- hyperspysignal by \(F_{\mathbf{m}; l_x, l_y}\), where \(l_x\) and \(l_y\) are integers indexing the sampled horizontal and vertical coordinates respectively in the signal space of the input signal, and \(\mathbf{m}\) is a vector of integers representing the navigation indices of the input signal. The Python function effectively does the following:- 1. Copies the input signal and optionally pads the copy along the horizontal and vertical axes in signal space according to the parameter - pad_mode;- 2. Constructs a cropping window in the signal space of the (optionally padded) copy of the input signal, with the cropping window dimensions being determined by the parameter - window_dims;- 3. Shifts the center of the cropping window to coordinates determined by the parameter - center;- 4. Shifts the center of the cropping window again to the coordinates of the pixel closest to the aforementioned coordinates in the previous step; - 5. Crops the (optionally padded) copy of the input signal along the horizontal and vertical dimensions of the signal space according to the placement of the cropping window in the previous two steps; - 6. Optionally applies a symmetric mask to the cropped signal resulting from the previous step according to the parameter - apply_symmetric_mask.- See the description below of the optional parameters for more details. - Parameters:
- centerarray_like (float, shape=(2,)) | None, optional
- If - centeris set to- None, then the center of the cropping window is set to the signal space coordinates corresponding to the pixel that is- (h_dim+1)//2 -1pixels to the right of the upper left corner in signal space, and- (v_dim+1)//2-1pixels below the same corner, where- h_dimand- v_dimare the horizontal and vertical dimensions of the signal space. Otherwise, if- centeris set to a pair of floating-point numbers, then- center[0]and- center[1]specify the horizontal and vertical signal space coordinates of the center of the cropping window prior to the subpixel shift to the nearest pixel, in the same units of the corresponding axes of the input signal.- We define the center of the cropping window to be - (N_W_h+1)//2 - 1pixels to the right of the upper left corner of the cropping window, and- (N_W_v+1)//2 - 1pixels below the same corner, where- N_W_hand- N_W_vare the horizontal and vertical dimensions of the cropping window in units of pixels.
- window_dimsarray_like (int, shape=(2,)) | None, optional
- If - window_dimsis set to- None, then the dimensions of the cropping window are set to the dimensions of the signal space of the input signal. Otherwise, if- window_dimsis set to a pair of positive integers, then- window_dims[0]and- window_dims[1]specify the horizontal and vertical dimensions of the cropping window in units of pixels.
- pad_mode"no-padding"|"wrap"|"zeros", optional
- If - pad_modeis set to- "no-padding", then no padding is performed prior to the crop. If- pad_modeis set to- "wrap", then the copy of the input signal is effectively padded along the horizontal and vertical axes in signal space by tiling the copy both horizontally and vertically in signal space such that the cropping window lies completely within the signal space boundaries of the resulting padded signal upon performing the crop. If- pad_modeis set to- "zeros", then the copy of the input signal is effectively padded with zeros such that the cropping window lies completely within the signal space boundaries of the resulting padded signal upon performing the crop.
- apply_symmetric_maskbool, optional
- If - apply_symmetric_maskis set to- Trueand- pad_modeto- "zeros", then for every signal space pixel in the cropped signal that has a value of zero due to padding and a corresponding pixel with coordinates equal to the former after a rotation of 180 degrees about the center of the cropped signal, the latter i.e. the aforementioned corresponding pixel is effectively set to zero. The effective procedure is equivalent to applying a symmetric mask. Otherwise, no mask is effectively applied after cropping.
- titlestr | None, optional
- If - titleis set to- None, then the title of the output signal- output_signalis set to- "Cropped "+ input_signal.metadata.General.title, where- input_signalis the input- hyperspysignal. Otherwise, if- titleis a str, then the- output_signal.metadata.General.titleis set to the value of- title.
- skip_validation_and_conversionbool, optional
- Let - validation_and_conversion_funcsand- core_attrsdenote the attributes- validation_and_conversion_funcsand- core_attrsrespectively, both of which being dict objects.- Let - params_to_be_mapped_to_core_attrsdenote the dict representation of the constructor parameters excluding the parameter- skip_validation_and_conversion, where each dict key- keyis a different constructor parameter name, excluding the name- "skip_validation_and_conversion", and- params_to_be_mapped_to_core_attrs[key]would yield the value of the constructor parameter with the name given by- key.- If - skip_validation_and_conversionis set to- False, then for each key- keyin- params_to_be_mapped_to_core_attrs,- core_attrs[key]is set to- validation_and_conversion_funcs[key] (params_to_be_mapped_to_core_attrs).- Otherwise, if - skip_validation_and_conversionis set to- True, then- core_attrsis set to- params_to_be_mapped_to_core_attrs.copy(). This option is desired primarily when the user wants to avoid potentially expensive deep copies and/or conversions of the dict values of- params_to_be_mapped_to_core_attrs, as it is guaranteed that no copies or conversions are made in this case.
 
- Attributes:
- core_attrs
- dict: The “core attributes”. 
- de_pre_serialization_funcs
- dict: The de-pre-serialization functions. 
- pre_serialization_funcs
- dict: The pre-serialization functions. 
- validation_and_conversion_funcs
- dict: The validation and conversion functions. 
 
 - Methods - de_pre_serialize([serializable_rep, ...])- Construct an instance from a serializable representation. - dump([filename, overwrite])- Serialize instance and save the result in a JSON file. - dumps()- Serialize instance. - get_core_attrs([deep_copy])- Return the core attributes. - Return the de-pre-serialization functions. - Return the pre-serialization functions. - Return the validation and conversion functions. - load([filename, skip_validation_and_conversion])- Construct an instance from a serialized representation that is stored in a JSON file. - loads([serialized_rep, ...])- Construct an instance from a serialized representation. - Pre-serialize instance. - update([new_core_attr_subset_candidate, ...])- Update a subset of the core attributes. - Methods - Construct an instance from a serializable representation. - Serialize instance and save the result in a JSON file. - Serialize instance. - Return the core attributes. - Return the de-pre-serialization functions. - Return the pre-serialization functions. - Return the validation and conversion functions. - Construct an instance from a serialized representation that is stored in a JSON file. - Construct an instance from a serialized representation. - Pre-serialize instance. - Update a subset of the core attributes. - Attributes - dict: The "core attributes". - dict: The de-pre-serialization functions. - dict: The pre-serialization functions. - dict: The validation and conversion functions. - property core_attrs
- dict: The “core attributes”. - The keys of - core_attrsare the same as the attribute- validation_and_conversion_funcs, which is also a dict object.- Note that - core_attrsshould be considered read-only.
 - property de_pre_serialization_funcs
- dict: The de-pre-serialization functions. - de_pre_serialization_funcshas the same keys as the attribute- validation_and_conversion_funcs, which is also a dict object.- Let - validation_and_conversion_funcsand- pre_serialization_funcsdenote the attributes- validation_and_conversion_funcs- pre_serialization_funcsrespectively, the last of which being a dict object as well.- Let - core_attrs_candidate_1be any dict object that has the same keys as- validation_and_conversion_funcs, where for each dict key- keyin- core_attrs_candidate_1,- validation_and_conversion_funcs[key](core_attrs_candidate_1)does not raise an exception.- Let - serializable_repbe a dict object that has the same keys as- core_attrs_candidate_1, where for each dict key- keyin- core_attrs_candidate_1,- serializable_rep[key]is set to- pre_serialization_funcs[key](core_attrs_candidate_1[key]).- The items of - de_pre_serialization_funcsare expected to be set to callable objects that would lead to- de_pre_serialization_funcs[key](serializable_rep[key])not raising an exception for each dict key- keyin- serializable_rep.- Let - core_attrs_candidate_2be a dict object that has the same keys as- serializable_rep, where for each dict key- keyin- validation_and_conversion_funcs,- core_attrs_candidate_2[key]is set to- de_pre_serialization_funcs[key](serializable_rep[key]).- The items of - de_pre_serialization_funcsare also expected to be set to callable objects that would lead to- validation_and_conversion_funcs[key](core_attrs_candidate_2)not raising an exception for each dict key- keyin- core_attrs_candidate_2.- Note that - de_pre_serialization_funcsshould be considered read-only.
 - classmethod de_pre_serialize(serializable_rep={}, skip_validation_and_conversion=False)
- Construct an instance from a serializable representation. - Parameters:
- serializable_repdict, optional
- A dict object that has the same keys as the attribute - validation_and_conversion_funcs, which is also a dict object.- Let - validation_and_conversion_funcsand- de_pre_serialization_funcsdenote the attributes- validation_and_conversion_funcs- de_pre_serialization_funcsrespectively, the last of which being a dict object as well.- The items of - serializable_repare expected to be objects that would lead to- de_pre_serialization_funcs[key](serializable_rep[key])not raising an exception for each dict key- keyin- serializable_rep.- Let - core_attrs_candidatebe a dict object that has the same keys as- serializable_rep, where for each dict key- keyin- serializable_rep,- core_attrs_candidate[key]is set to de_pre_serialization_funcs[key](serializable_rep[key])``.- The items of - serializable_repare also expected to be set to objects that would lead to- validation_and_conversion_funcs[key](core_attrs_candidate)not raising an exception for each dict key- keyin- serializable_rep.
- skip_validation_and_conversionbool, optional
- Let - core_attrsdenote the attribute- core_attrs, which is a dict object.- If - skip_validation_and_conversionis set to- False, then for each key- keyin- serializable_rep,- core_attrs[key]is set to- validation_and_conversion_funcs[key] (core_attrs_candidate), with- validation_and_conversion_funcsand- core_attrs_candidate_1being introduced in the above description of- serializable_rep.- Otherwise, if - skip_validation_and_conversionis set to- True, then- core_attrsis set to- core_attrs_candidate.copy(). This option is desired primarily when the user wants to avoid potentially expensive deep copies and/or conversions of the dict values of- core_attrs_candidate, as it is guaranteed that no copies or conversions are made in this case.
 
- Returns:
- instance_of_current_clsCurrent class
- An instance constructed from the serializable representation - serializable_rep.
 
 
 - dump(filename='serialized_rep_of_fancytype.json', overwrite=False)
- Serialize instance and save the result in a JSON file. - Parameters:
- filenamestr, optional
- The relative or absolute path to the JSON file in which to store the serialized representation of an instance. 
- overwritebool, optional
- If - overwriteis set to- Falseand a file exists at the path- filename, then the serialized instance is not written to that file and an exception is raised. Otherwise, the serialized instance will be written to that file barring no other issues occur.
 
- Returns:
 
 - dumps()
- Serialize instance. - Returns:
- serialized_repdict
- A serialized representation of an instance. 
 
 
 - get_core_attrs(deep_copy=True)
- Return the core attributes. - Parameters:
- deep_copybool, optional
- Let - core_attrsdenote the attribute- core_attrs, which is a dict object.- If - deep_copyis set to- True, then a deep copy of- core_attrsis returned. Otherwise, a shallow copy of- core_attrsis returned.
 
- Returns:
- core_attrsdict
- The attribute - core_attrs.
 
 
 - classmethod get_de_pre_serialization_funcs()[source]
- Return the de-pre-serialization functions. - Returns:
- de_pre_serialization_funcsdict
- The attribute - de_pre_serialization_funcs.
 
 
 - classmethod get_pre_serialization_funcs()[source]
- Return the pre-serialization functions. - Returns:
- pre_serialization_funcsdict
- The attribute - pre_serialization_funcs.
 
 
 - classmethod get_validation_and_conversion_funcs()[source]
- Return the validation and conversion functions. - Returns:
- validation_and_conversion_funcsdict
- The attribute - validation_and_conversion_funcs.
 
 
 - classmethod load(filename='serialized_rep_of_fancytype.json', skip_validation_and_conversion=False)
- Construct an instance from a serialized representation that is stored in a JSON file. - Users can save serialized representations to JSON files using the method - fancytypes.PreSerializable.dump().- Parameters:
- filenamestr, optional
- The relative or absolute path to the JSON file that is storing the serialized representation of an instance. - filenameis expected to be such that- json.load(open(filename, "r"))does not raise an exception.- Let - serializable_rep=json.load(open(filename, "r")).- Let - validation_and_conversion_funcsand- de_pre_serialization_funcsdenote the attributes- validation_and_conversion_funcs- de_pre_serialization_funcsrespectively, both of which being dict objects as well.- filenameis also expected to be such that- de_pre_serialization_funcs[key](serializable_rep[key])does not raise an exception for each dict key- keyin- de_pre_serialization_funcs.- Let - core_attrs_candidatebe a dict object that has the same keys as- de_pre_serialization_funcs, where for each dict key- keyin- serializable_rep,- core_attrs_candidate[key]is set to de_pre_serialization_funcs[key](serializable_rep[key])``.- filenameis also expected to be such that- validation_and_conversion_funcs[key](core_attrs_candidate)does not raise an exception for each dict key- keyin- serializable_rep.
- skip_validation_and_conversionbool, optional
- Let - core_attrsdenote the attribute- core_attrs, which is a dict object.- Let - core_attrs_candidatebe as defined in the above description of- filename.- If - skip_validation_and_conversionis set to- False, then for each key- keyin- core_attrs_candidate,- core_attrs[key]is set to- validation_and_conversion_funcs[key] (core_attrs_candidate), , with- validation_and_conversion_funcsand- core_attrs_candidatebeing introduced in the above description of- filename.- Otherwise, if - skip_validation_and_conversionis set to- True, then- core_attrsis set to- core_attrs_candidate.copy(). This option is desired primarily when the user wants to avoid potentially expensive deep copies and/or conversions of the dict values of- core_attrs_candidate, as it is guaranteed that no copies or conversions are made in this case.
 
- Returns:
- instance_of_current_clsCurrent class
- An instance constructed from the serialized representation stored in the JSON file. 
 
 
 - classmethod loads(serialized_rep='{}', skip_validation_and_conversion=False)
- Construct an instance from a serialized representation. - Users can generate serialized representations using the method - dumps().- Parameters:
- serialized_repstr | bytes | bytearray, optional
- The serialized representation. - serialized_repis expected to be such that- json.loads(serialized_rep)does not raise an exception.- Let - serializable_rep=json.loads(serialized_rep).- Let - validation_and_conversion_funcsand- de_pre_serialization_funcsdenote the attributes- validation_and_conversion_funcs- de_pre_serialization_funcsrespectively, both of which being dict objects as well.- serialized_repis also expected to be such that- de_pre_serialization_funcs[key](serializable_rep[key])does not raise an exception for each dict key- keyin- de_pre_serialization_funcs.- Let - core_attrs_candidatebe a dict object that has the same keys as- serializable_rep, where for each dict key- keyin- de_pre_serialization_funcs,- core_attrs_candidate[key]is set to de_pre_serialization_funcs[key](serializable_rep[key])``.- serialized_repis also expected to be such that- validation_and_conversion_funcs[key](core_attrs_candidate)does not raise an exception for each dict key- keyin- serializable_rep.
- skip_validation_and_conversionbool, optional
- Let - core_attrsdenote the attribute- core_attrs, which is a dict object.- If - skip_validation_and_conversionis set to- False, then for each key- keyin- core_attrs_candidate,- core_attrs[key]is set to- validation_and_conversion_funcs[key] (core_attrs_candidate), with- validation_and_conversion_funcsand- core_attrs_candidate_1being introduced in the above description of- serialized_rep.- Otherwise, if - skip_validation_and_conversionis set to- True, then- core_attrsis set to- core_attrs_candidate.copy(). This option is desired primarily when the user wants to avoid potentially expensive deep copies and/or conversions of the dict values of- core_attrs_candidate, as it is guaranteed that no copies or conversions are made in this case.
 
- Returns:
- instance_of_current_clsCurrent class
- An instance constructed from the serialized representation. 
 
 
 - property pre_serialization_funcs
- dict: The pre-serialization functions. - pre_serialization_funcshas the same keys as the attribute- validation_and_conversion_funcs, which is also a dict object.- Let - validation_and_conversion_funcsand- core_attrsdenote the attributes- validation_and_conversion_funcsand- core_attrsrespectively, the last of which being a dict object as well.- For each dict key - keyin- core_attrs,- pre_serialization_funcs[key](core_attrs[key])is expected to yield a serializable object, i.e. it should yield an object that can be passed into the function- json.dumpswithout raising an exception.- Note that - pre_serialization_funcsshould be considered read-only.
 - pre_serialize()
- Pre-serialize instance. - Returns:
- serializable_repdict
- A serializable representation of an instance. 
 
 
 - update(new_core_attr_subset_candidate={}, skip_validation_and_conversion=False)
- Update a subset of the core attributes. - Parameters:
- new_core_attr_subset_candidatedict, optional
- A dict object. 
- skip_validation_and_conversionbool, optional
- Let - validation_and_conversion_funcsand- core_attrsdenote the attributes- validation_and_conversion_funcsand- core_attrsrespectively, both of which being dict objects.- If - skip_validation_and_conversionis set to- False, then for each key- keyin- core_attrsthat is also in- new_core_attr_subset_candidate,- core_attrs[key]is set to- validation_and_conversion_funcs[key] (new_core_attr_subset_candidate).- Otherwise, if - skip_validation_and_conversionis set to- True, then for each key- keyin- core_attrsthat is also in- new_core_attr_subset_candidate,- core_attrs[key]is set to- new_core_attr_subset_candidate[key]. This option is desired primarily when the user wants to avoid potentially expensive deep copies and/or conversions of the dict values of- new_core_attr_subset_candidate, as it is guaranteed that no copies or conversions are made in this case.
 
 
 - property validation_and_conversion_funcs
- dict: The validation and conversion functions. - The keys of - validation_and_conversion_funcsare the names of the constructor parameters, excluding- skip_validation_and_conversionif it exists as a construction parameter.- Let - core_attrsdenote the attribute- core_attrs, which is also a dict object.- For each dict key - keyin- core_attrs,- validation_and_conversion_funcs[key](core_attrs)is expected to not raise an exception.- Note that - validation_and_conversion_funcsshould be considered read-only.