Known issues

New issue: Matplotlib “ImportError: DLL load failed: The specified procedure could not be found.”

On Windows, when ccdc is imported before matplotlib, matplotlib will fail with the above error message.

Importing matplotlib and selecting a non-Qt rendering backend before importing ccdc works:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plot
import ccdc

Attribute ccdc.entry.Entry.radiation_source returns an incorrect value for structures determined by electron radiation

Currently the radiation source has been assigned incorrectly for structures determined by electron radiation, and this attribute will return X-ray for these structures. This incorrect assignment of electron radiation occurs during the database creation process and a fix is being worked on.

To find electron diffraction structures in the CSD, the CCDC has created the CSD Electron Diffraction Subset which contains all known structures measured with electron diffraction techniques.

Diagram highlighting gives misleading results if used with shrunken symbols

When generating 2D diagrams of molecules and crystals it is recommended to set the ccdc.diagram.DiagramGenerator.Settings.shrink_symbols setting to False as it may otherwise give misleading images.

This issue does not manifest itself when using ccdc.entry.Entry where the 2D coordinates are taken from the CSD.

Diagrams have coloured rectangles in place of atom labels and group symbols

On some versions of Linux it is possible that no suitable fonts are installed for the diagram rendering code. The consequence is that the unknown character glyph is displayed for every label. Please ensure that any font matching “Helvetica” is available.

On RHEL/CentOS Linux, this can be resolved by installing the dejavu-sans-fonts package.

On macOS, creating multiple diagrams in a single session can lead to crashes

In some scripts, conflicts between matplotlib and other CSD Python API dependencies may lead to crashes during diagram generation.

Matplotlib supports multiple rendering backends. We recommend the “TkAgg” option on macOS, and this avoids the diagram generation crashes. This backend should be selected when importing the matplotlib module.

import matplotlib
matplotlib.use('TkAgg')

‘’ImportError: No module named DLFCN’’ error during import

Virtual environments on RedHat and CentOS systems may not set the Python system path properly. This will cause the CSD Python API to fail to load with an error like ImportError: No module named DLFCN. See virtualenv Bug 874 for further details. To prevent this, you should extend the PYTHONPATH environment variable to include the directory that contains the DLFCN module.

For example, this can be achieved with the following:

export PYTHONPATH="`python -c "import DLFCN; import os.path; \
print(os.path.dirname(DLFCN.__file__))"`:$PYTHONPATH"

‘’failed to get the current screen resources’’ message on Ubuntu 16

The above message is output following import ccdc. This is harmless and can be ignored.

Error messages including ‘’{contents = “KeyboardLayout Name”}’’ on macOS

On macOS only, messages such as the following can be output following import ccdc. These messages are harmless, but may be avoided by adding another keyboard layout in System Preferences | Keyboard | Input Sources on the macOS desktop.

python[23366:1195030] isPrefsCreateCacheFromEnabledAndDefaultInputSources - can't find anything from GetInputSourceEnabledPrefs, use defaultASCIIKeyLayoutDict = <CFBasicHash 0x7f916d44fb40 [0x7fff9314e8f0]>{type = mutable dict, count = 3, entries =>
0 : <CFString 0x7fff931b97f8 [0x7fff9314e8f0]>{contents = "InputSourceKind"} = <CFString 0x7fff931fed38 [0x7fff9314e8f0]>{contents = "Keyboard Layout"}
1 : <CFString 0x7fff931eae78 [0x7fff9314e8f0]>{contents = "KeyboardLayout ID"} = <CFNumber 0x237 [0x7fff9314e8f0]>{value = +2, type = kCFNumberSInt64Type}
9 : <CFString 0x7fff931b44f8 [0x7fff9314e8f0]>{contents = "KeyboardLayout Name"} = <CFString 0x7f916f9641d0 [0x7fff9314e8f0]>{contents = "British"}