2.2.1. embeam.coherent.Aberration
- class Aberration(m=0, n=0, C_mag=0, C_ang=0, skip_validation_and_conversion=False)[source]
- Bases: - PreSerializableAndUpdatable- A coherent lens aberration. - As discussed in greater detail in e.g. Ref. [Kirkland1], an important quantity that characterizes how coherent lens aberrations affect an electron beam is the phase deviation: (2.2.1.1)\[\begin{split}\chi\left(k_{x},k_{y};\delta_f\right)&=\sum_{m=0}^{\infty} \sum_{n=0}^{\infty}\left(\lambda k_{xy}\right)^{m} \left(C_{m,n}^{\text{mag}} +\delta_{m,2}\delta_{n,0}\pi\delta_f/\lambda\right)\\ &\hphantom{=\sum_{m=0}^{\infty}\sum_{n=0}^{\infty}}\mathop{\times} \left\{ \cos\left[nC_{m,n}^{\text{ang}}\right]\cos\left[n \text{atan2}\left(k_{x},k_{y}\right)\right]\right.\\ &\hphantom{=\sum_{m=0}^{\infty}\sum_{n=0}^{\infty}\mathop{\times}\quad} \left.\mathop{+}\sin\left[nC_{m,n}^{\text{ang}}\right]\sin\left[n \text{atan2}\left(k_{x},k_{y}\right)\right]\right\},\end{split}\]- where \(k_{x}\) and \(k_{y}\) are the Fourier coordinates; (2.2.1.2)\[k_{xy}=\sqrt{k_{x}^{2}+k_{y}^{2}};\](2.2.1.3)\[k_{xy,\max}=\frac{\alpha_{\max}}{\lambda},\]- with \(\alpha_{\max}\) being the convergence semiangle, and \(\lambda\) being the electron beam wavelength [given by Eq. (2.1.1)]; \(C_{m,n}^{\text{mag}}\) and \(C_{m,n}^{\text{ang}}\) are dimensionless coefficients describing the magnitude and azimuthal phase of an aberration of radial order \(m\) and azimuthal order \(n\); \(\delta_f\) is an offset to \(C_{2,0}^{\text{mag}}\), expressed in units of length; and atan2 is the 2-argument arctangent function which returns the polar angle of \(\left(k_{x},k_{y}\right)\) in the correct quadrant. Note that \(m\) and \(n\) are integers, whereas \(C_{m,n}^{\text{mag}}\) and \(C_{m,n}^{\text{ang}}\) are real numbers. - The quantity \(\delta_f\) was introduced to conveniently describe temporally incoherent beams. We refer to this quantity as the “defocal offset” throughout the documentation. - Parameters:
- mint, optional
- The radial order of the aberration, \(m\). Must be non-negative. 
- nint, optional
- The azimuthal order of the aberration, \(n\). Must be non-negative. 
- C_magfloat, optional
- The dimensionless coefficient \(C_{m,n}^{\text{mag}}\). 
- C_angfloat, optional
- The dimensionless coefficient \(C_{m,n}^{\text{ang}}\). 
- 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. 
- is_azimuthally_symmetric
- bool: A boolean variable indicating whether the aberration is 
- 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. - execute_post_core_attrs_update_actions - Methods - Construct an instance from a serializable representation. - Serialize instance and save the result in a JSON file. - Serialize instance. - execute_post_core_attrs_update_actions- 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. - bool: A boolean variable indicating whether the aberration is azimuthally symmetric. - 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.
 
 
 - property is_azimuthally_symmetric
- bool: A boolean variable indicating whether the aberration is azimuthally symmetric. - See the summary documentation of the class - embeam.coherent.Aberrationfor additional context.- A coherent aberration is azimuthally symmetric if \(n C_{m,n}^{\text{mag}} C_{m,n}^{\text{ang}} = 0\). - If - is_azimuthally_symmetricis set to- True, then the aberration is azimuthally symmetric. Otherwise, the aberration is not azimuthally symmetric.- Note that - is_azimuthally_symmetricshould be considered read-only.
 - 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)[source]
- 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.