spectrum_align: Align Predicted and Experimental Circular Dichroism Spectra

The spectrum_align utility aligns predicted and experimental VCD (and ECD) spectra, using a Needleman-Wunsch algorithm as detailed in Ref. 290. When using this algorithm, the script calculates a Pearson coefficient for the correlation of the experimental and the aligned predicted spectra. The Pearson coefficient ranges from -1 to 1, where 1 indicates a perfect overlap of peak positions and magnitudes (perfect correlation), and -1 indicates a perfect overlap of peak positions and magnitudes, but opposite signs (perfect anticorrelation). A value of zero indicates no correlation. Thus a positive value indicates that the predicted and experimental spectra come from the same enantiomer, and a negative value indicates that the predicted and experimental spectra come from opposite enantiomers.

You can also choose to align the spectra with a uniform scaling algorithm. In the uniform scaling algorithm, similarity scores (Ref. 315) are used instead of a Pearson coefficient as we have found them to be more discriminating for the alignments generated in this way. Similarity scores range from 0 to 1 and the script calculates two: one for the alignment of the input theoretical spectrum with the experimental spectrum, and one for the alignment of its mirror image with the experimental spectrum. The magnitude of their difference is then computed to give an enantiomeric similarity index (ESI). ESI also ranges from 0 to 1, and if it's greater than 0.45, an enantiomer identity is predicted. The experimental spectrum is predicted to have the same chirality as the theoretical spectrum (either the input or its mirror image) with the higher similarity score.

The experimental spectrum should be provided in CSV format with Wavenumber and Intensity columns. This spectrum is first normalized to a maximum peak magnitude of 1.0. It is then discretized by automatic peak picking. If the spectrum is noisy, there may be spurious peak picks, so you can manually specify the main peaks of interest. Alternatively, use the -baseline option to restrict automatic peak-picking in the experimental spectrum to points above the specified baseline value.

The theoretical spectra for each conformer come from the spectroscopy.py Command Help workflow, and so should be in .spm format, i.e. stick spectra with just peak information. The spectra are combined into a Boltzmann-weighted average set of peak information. This is converted into a broadened spectrum, and automatic peak picking is done as for the experimental spectrum. Peak picking is much better behaved here since the curve is smooth. You can use the -use_robust_mode option to pick only “robust” peaks from the spectrum.

A peak is robust, if:

  • the magnitude of the electronic and magnetic transition dipole moment vectors is greater than 5% of the average of all peaks, and
  • the angle between two electric and magnetic transition dipole moment vectors is smaller than 60°.

The electronic and magnetic transition dipole moment vectors are read from the .spm file.

The utility provides options for restricting the range of the spectrum that is analyzed; for allowing the predicted peaks to be moved upwards in wave number (by default this is blocked since calculations typically place predicted peaks above the corresponding experimental peaks); for searching for the best parameter for the predicted spectrum in the matching algorithm or for fixing the parameter.