Skip to content

Issue with calculating electron diffraction pattern when using CIF with Ni3+ sites #190

@lnaglecocco

Description

@lnaglecocco

Description of suspected bug
I use structure = diffpy.structure.loadStructure() to import a CIF. This CIF has Ni3+ sites. I attempt to calculate a set of diffraction patterns for this structure, roughly following the code from the tutorial 02 GaAs Nanowire - Phase Mapping - Orientation Mapping. When I run the line diff_lib = lib_gen.get_diffraction_library(...) I get a long error (listed in full at the end of this report) which seems to come up because there isn't an 'Ni3+' key in the scattering_params_dict.

I am very new to Pyxem, and generally very new to electron diffraction too, so I may have misunderstood something here. It seems to me quite important to be able to specify an oxidation state of an element as the scattering cross-section of electrons in a material will surely depend on the oxidation state of the atom (though if I've got that wrong please do correct me). If someone could let me know if I can solve this at my end or if this is indeed a bug, I'd be very grateful

Expected behavior
I would have expected 'Ni3+' to have a scattering parameter listed in scattering_params_dict.

Error message in full

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-22-c080fb293ea8> in <module>
      8                                            reciprocal_radius=reciprocal_radius,
      9                                            half_shape=(half_size, half_size),
---> 10                                            max_excitation_error=1/10,with_direct_beam=False)

C:\ProgramData\Anaconda3\lib\site-packages\diffsims\generators\library_generator.py in get_diffraction_library(self, structure_library, calibration, reciprocal_radius, half_shape, with_direct_beam, max_excitation_error, debye_waller_factors)
    112                     with_direct_beam=with_direct_beam,
    113                     max_excitation_error=max_excitation_error,
--> 114                     debye_waller_factors=debye_waller_factors,
    115                 )
    116 

C:\ProgramData\Anaconda3\lib\site-packages\diffsims\generators\diffraction_generator.py in calculate_ed_data(self, structure, reciprocal_radius, rotation, with_direct_beam, max_excitation_error, debye_waller_factors)
    284             prefactor=shape_factor,
    285             scattering_params=self.scattering_params,
--> 286             debye_waller_factors=debye_waller_factors,
    287         )
    288 

C:\ProgramData\Anaconda3\lib\site-packages\diffsims\utils\sim_utils.py in get_kinematical_intensities(structure, g_indices, g_hkls_array, debye_waller_factors, scattering_params, prefactor)
    255         structure=structure,
    256         debye_waller_factors=debye_waller_factors,
--> 257         scattering_params=scattering_params,
    258     )
    259 

C:\ProgramData\Anaconda3\lib\site-packages\diffsims\utils\sim_utils.py in get_vectorized_list_for_atomic_scattering_factors(structure, debye_waller_factors, scattering_params)
    177 
    178     for i, site in enumerate(structure):
--> 179         coeffs[i] = scattering_params_dict[site.element]
    180         dwfactors[i] = debye_waller_factors.get(site.element, 0)
    181         fcoords[i] = site.xyz

KeyError: 'Ni3+'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions