The program SPSCAN is designed to exchange data with XEASY (Ch. Bartels, T.-H. Xia, M. Billeter, P. Güntert and K. Wüthrich (1995) The program XEASY for computer-supported NMR spectral analysis of biological macromolecules. J. Biomolecular NMR 5, 1-10). All input and output formats are compatible. However, SPSCAN organises the data internally in a different way to give the program more flexibility. You have to understand some key differences when you work with both programs in parallel.


XEASY reads the resource files "XEasy" in $HOME and in the directory where the program is started. SPSCAN reads both "XEasy" and ".Spscan" files in these directories. The following resources should be set identical for optimal data exchange between the programs (see User customizability:
*traditional_calibration: on / off
Xeasy has been interpreting the "Maximum chemical shift" information in parameter files as ppm of the very edge of the spectrum, i.e. the left side of the left pixel. *traditional_calibration: on supports this mode. "off" interprets the data as ppm in the center of the first pixel, what makes calibration independent of the spectral size in the frequency domain. Don't swith within a project.
Make sure to have the same setting readable for xeasy and spscan, if you use both programs - otherwise peaklists created in the other program are shifted by half a pixel with respect to the spectrum.
Differences in the content of these two libraries (names of atoms, numbering) may lead to assignment problems
XEasy.new_atom_numbers: true
This must be in the XEasy file. Although it is possible to re-assign "old" peaklists to the "new" numbering scheme, you avoid many problems if you set this to "true". The only problem: residue numbers > 99 give 5-digit assignment numbers, and the peaklists cause problems with very old DIANA and HABAS versions.


There is a basic difference in the way how XEASY and SPSCAN map residues and change the type of a fragment. You have to understand what is done internally, when you want to use both programs together.

XEASY organizes the assignment of peaklists in the following way:
An "assigned" peak list provides the relation between peak position in a spectrum and a resonance numbers ("proton number") in all dimensions.
A "proton list" (*.prot) translates this resonance number into an atom name (HN, N, HA, HB2, CA, ...) and a fragment or residue number.
A sequence list (*.seq) resolves the type of residue from the the fragment number.

If a fragment is mapped to a different place in the sequence (i.e. from pseudofragment 300 to residue 9), the fragment number in the proton list is changed. Fragment 9 should not exist in the sequence before (If it exists, all atoms that are defined in both fragments are duplicated). The change of fragment type is done independent of mapping, by changing the "Fragment" entry in the edit window. All atoms that are defined in the library for the new fragment type are added to the proton list, if they are not already there. Again, all existing assignment numbers stay the same. This mapping scheme works only if the resource "XEasy.new_atom_numbers: false".

With this scheme you never change assignment numbers in the peaklist, so that a peaklist which you created and assigned in the very beginning should still be in agreement with a proton list where fragment types and mapping numbers were changed. On the other hand, you have two problems:

  1. You may have "old" resonances in your lists that are no longer valid (e.g. after mapping SS 300 to GLY 9 you may have HA 9, HA1 9, QA 9 and HA2 9 - they are all assigned to different positions, XEASY will not find an error.)
  2. You have no possibility to map one fragment to another one (e.g. you have a residue SS 301 with HN, N, CA, HA, and a residue ALA 400 with CA, HA, CB, QB. There is no way to map both of them, finally, to ALA 10 without producing "duplicate entries")

SPSCAN has a completely different mapping scheme: it changes assignment numbers in the peaklists to achieve mapping. Doing this, it checks whether the resonances really exist in the library, and it adapts the atom names if necessary. You can get fragment number and atom name from the assignment number, i.e. you dont need a proton list (except in mode 5). It will be confusing to mix both schemes. Either you use XEasy.new_atom_numbers: false and do all mapping in XEASY, or you use XEasy.new_atom_numbers: true and do all mapping in SPSCAN.

SPSCAN supports several different assignment modes, but they can all be read correctly by XEASY. To load XEASY-generatedpeaklists into SPSCAN, use assignment mode 5. SPSCAN supports following assignment modes:

Im mode 1 and 4 SPSCAN doesn't use a proton list. To work with such peaklists in XEASY, set "XEasy.new_atom_numbers: true ". Load the sequence, and you can write out the correct proton list (you don't have to).
In mode 1, there is not even a sequence. You have to write a TYPE.seq file that contains at least as many TYPE fragments as you have assigned.

You can adapt any peaklist to your favourite XEASY proton list with Integration: "assign"/"reassign".

XEASY peaklist checks and re-organization

The way XEASY organizes the data allows a high flexibility, but it can lead to some undesirable effects. After working on a project for a long time, many people have a number of incompatible proton lists, i.e. each peaklist has its own "private" proton list. As XEASY can only load one proton list at a time, it may under these conditions show wrong assignments for a few peaks of some of the peaklists. This situation can be fixed with SPSCAN, see Change assignments in XEASY peaklists.

You can also check whether peaks are assigned to resonances that do not exist (e.g CB of GLY), and whether use of pseudoatoms is consistent.

Mapping of residues:
The mapping scheme in SPSCAN is different from mapping in XEASY. SPSCAN changes assignment numbers and checks whether the atom name exists in the new fragment type. XEASY does not change numbers, and it does not detect a problem, if some atom names may become invalid. It simply adds those atoms to the proton list that have a library entry for the new residue type, and that are not in the current proton list.

Commands for specific XEASY support

xeasy_striplist (Release 1.0.54)

When you have determined probabilities for the sequential neigbourhood of fragments in the sequence, you can use the SPSCAN sequence tool for interactive decisions checking. Alternatively, you can produce sorted striplists for XEASY with the macro command:

xeasy_striplist fwd <;nr_prev>; <;nr_next>; <;spectrum1>; <;peaklist1>; <;spectrum2>; <;peaklist2>; ...
xeasy_striplist bwd <;nr_prev>; <;nr_next>; <;spectrum1>; <;peaklist1>; <;spectrum2>; <;peaklist2>; ...
Writes for each residue a sorted striplist of probable sequential neighbours. "fwd" gives you the possible sequential neighbours at n+1 position, bwd at n-1.

nr_prev and nr_next are the number of spectra for which a strip is to be displayed for the N-terminal and C-terminal fragment of a possible sequential connection. The following arguments are nr_prev spectrum/peaklist pairs and nr_next spectrum/peaklist pairs.

spectrum1... are names of spectra_path/spectrum.3D.param files without path and ".3D.param". peaklist1... are peaks_path/peaklist.peaks files (again without path and extension) which are assigned in spscan style, and which match the spectra in their order of dimensions. I.e. w1 of the spectrum must be the first dimension of the peaklist. If your peaklists are written from a spectrum that was not loaded in orientation "1 2 3", they are in a different permutation: load the spectrum as "1 2 3", load the peaklist (if your peaklist does not have linewidths, set some default linewidth with "modify pl"/"check linewidth"; if your peaklist does not have assignments set "assign"/"get assignments"), write the peaklist out.

To check the sequential connections in XEASY, load all spectra in the correct orientation for strip display. Load the peaklists that you want to see displayed with the spectra. (The peaklist that you give in the spscan command is not automatically displayed by XEASY, it is only used to define the position of the strips.) With "es", "sl" load the striplist for the residue you want to check. Display with "gs", starting with strip 1.

The "spectrum" names are not checked by the macro, i.e. they dont have to exist when the striplists are created; XEASY has to identify the spectrum under that name. The "peaklist" names are normal SPSCAN names, i.e. they can have a full pathname, or they can be project id names. The peaklists do'not have to exist when the strips are evaluated in XEASY.


SPSCAN can be used to solve some tasks that are specific for work with the program XEASY:
Dr. Ralf W. Glaser
FSU Jena, Institut fuer Molekularbiologie
Winzerlaer Strasse 10
D-07745 Jena, Germany
Tel.: +49-3641-65-7573
Fax: +49-3641-65-7520
E-mail: Ralf.Glaser@uni-jena.REMOVSPMTAG.de