The NMR field has traditionally used a large variety of program specific file formats. This has made it difficult for software packages to inter-operate and has complicated data-archiving and retrieval. To address these challenges, the developers of a large number of NMR software packages have united to develop a single, universal file format, the NMR Exchange Format "NEF", and have committed to make their software NEF compatible (Gutmanas et al. 2015).
The main advantage of NEF is that allows the most common types of NMR data, such as chemical shifts, peak lists and restraint lists to be stored in a single file. In addition, NEF files can be extended to contain additional programme-specific information. It also ensures proper handling of stereospecific and non-stereospecific assignments so that no information is lost.
NEF uses the STAR file format. STAR files have a defined structure and only certain terms are allowed. This makes it easy to be use as an archival format for many types of biological data. It is also more humanly readable than some other format types (e.g. XML). Examples include NMR-STAR, used by the Biological Nuclear Magnetic Resonance Data Bank (BMRB) and mmCIF which is now the only accepted format for molecular coordinate deposition in Protein Data Bank.
This document aims to give a brief overview of the NEF format. For more details please see Commented_Example.nef and Overview.md in:
https://github.com/NMRExchangeFormat/NEF/tree/master/specification
There are few characteristic features of the NEF format, the two most noticeable ones are:
1. Data names start with an underscore, we will refer to these as tags.
2. There are a few reserved keywords (common to all STAR-type files): data_, loop_, save_ and stop_.
NEF files always start with the keyword data_ followed by a project description (e.g. data_peptide_project in the example below). This indicates the start of the data block. NEF files should only have one data block per file.
Data are organised in sections called saveframes. Saveframes start with the keyword save_ followed by the framecode, which is unique for this saveframe. Chemical shift lists, peak lists or restraint list are examples of data that have a specific saveframe in which they are placed and identified by specific tags (names). For example, chemical shifts are listed in the saveframe save_nef_chemical_shift_list. Each NEF file must contain following saveframes: _nef_nmr_meta_data, _nef_molecular_system, _nef_chemical_shift_list
The data within a saveframe are composed of tags and loops.
Tags in a NEF file list the information that is needed or helpful for a particular section. Each tag in a saveframe must be unique.
The NEF format has a number of mandatory and optional tags for each saveframe, these are detailed in Commented_Example.nef and mmcif_nef.dic.
For example, in the nef_nmr_spectrum_hsqc saveframe there are four tags that must be specified:
save_nef_nmr_spectrum_hsqc _nef_nmr_spectrum.sf_category nef_nmr_spectrum _nef_nmr_spectrum.sf_framecode nef_nmr_spectrum_hsqc _nef_nmr_spectrum.num_dimensions 2 _nef_nmr_spectrum.chemical_shift_list nef_chemical_shift_list_bmr5844
In addition more information can be listed as well:
_nef_nmr_spectrum.experiment_type hsqc _nef_nmr_spectrum.ccpn_positive_contour_count 10 _nef_nmr_spectrum.ccpn_spectrum_comment '' _nef_nmr_spectrum.ccpn_spectrum_file_path /Users/user/Documents/spectra/hsqc.spc _nef_nmr_spectrum.ccpn_file_type Azara
The tags in the above example consist of two parts. The first part is identical for all tags in this saveframe (_nef_nmr_spectrum) and is specified at the beginning of the saveframe (_nef_nmr_spectrum.sf_category has the value nef_nmr_spectrum). What follows after the dot gives more of an indication about the information provided by the tag.
Another thing worth noticing is that there are two types of tags. _nef_nmr_spectrum.experiment_type is described in the NEF documentation and is universal for all programmes reading and writing the NEF files. _nef_nmr_spectrum.ccpn_spectrum_comment is a programme-specific addition to the _nef_nmr_spectrum saveframe, in which information relevant to CcpNmr Analysis can be stored. Other programs are free to skip this information. During the NEF export a user can select whether to include or exclude the optional tags (the ccpn_ tags in the example here).
Values for tags need to be enclosed in quotes if they contain a space, tab, vertical tab, or newline in the value.
As there can only be one of each tag in a saveframe, it is not possible to include data such as peak lists where there are multiple values for each tag (peak_number, for instance, could have thousands of values). To include this type of data (essentially tabular data) we need to output them as a loop in a saveframe. A loop is a set of tags with multiple values and is used in NEF to store tabular data.
The NEF specification lists the loops and tags that are mandatory and non-mandatory.
Loops start with the loop_ keyword followed by tags in separate rows and then by values in a space delimited format. The end of the loop is marked with the keyword stop_. You can think of tags in loops as the headings for columns in the table.
loop_ _nef_sequence.index _nef_sequence.chain_code _nef_sequence.sequence_code _nef_sequence.residue_name _nef_sequence.linking _nef_sequence.residue_variant _nef_sequence.ccpn_comment 1 A 1 MET start . . 2 A 2 LYS middle . . 3 A 3 ILE middle . 'conserved' 4 A 4 ILE end . . 5 A 5 CA single . . 6 B 1 ATP single . . stop_
As mentioned above, saveframes, loops and tags may be mandatory or optional. The mandatory ones are of particular importance if your NEF file is to be used for the deposition into databases (e.g. BMRB or PDB). When CcpNmr Analysis exports a NEF file all the mandatory tags are present by default.
The important thing to remember is that although saveframes listing restraints or peaks are not mandatory, if the user chooses to include them in a NEF file, the saveframe must list the tags and loops that are mandatory for those specific saveframes. (Luckily most programmes take care of this automatically.)
In addition to including extra information within the NEF saveframes with the appropriate extension to the _nef tag, extra saveframes and loops specific to a particular programme can be added to the NEF file.
For example:
save_ccpn_assignment _ccpn_assignment.sf_category ccpn_assignment _ccpn_assignment.sf_framecode ccpn_assignment loop_ _nmr_chain.short_name _nmr_chain.serial _nmr_chain.label _nmr_chain.is_connected _nmr_chain.comment @- 1 @- false 'Default NmrChain, used for ResonanceGroups not in other chains. Cannot be deleted or renamed.' A 2 @2 false . stop_ save_
This is particularly useful when a program is capable of harvesting information produced by another programme, for instance as a result of a structure calculation.
Tags in bold purple indicate content that must be included in a NEF file.
Tags in bold black are mandatory only if a specific saveframe or loop is present in a NEF file.
Only one of these saveframes is allowed per project
data_peptide_project save_nef_nmr_meta_data _nef_nmr_meta_data.sf_category nef_nmr_meta_data _nef_nmr_meta_data.sf_framecode nef_nmr_meta_data _nef_nmr_meta_data.format_name nmr_exchange_format _nef_nmr_meta_data.format_version 1.1 _nef_nmr_meta_data.program_name AnalysisAssign _nef_nmr_meta_data.program_version 3.0.1.1 _nef_nmr_meta_data.creation_date 2020-06-14T20:53:22.311917 _nef_nmr_meta_data.uuid AnalysisAssign-2020-06-14T20:53:22.311917-1956756036 save_
We hope that in the near future this section will also include run history:
loop_ _nef_run_history.run_number _nef_run_history.program_name _nef_run_history.program_version _nef_run_history.script_name 1 ARIA 2.3 . 2 UNIO . . 3 Xplor_NIH 3.0.2 refine.py stop_
Only one of these saveframes is allowed per data block as all molecules can be included in a single loop.
save_nef_molecular_system _nef_molecular_system.sf_category nef_molecular_system _nef_molecular_system.sf_framecode nef_molecular_system loop_ _nef_sequence.index _nef_sequence.chain_code _nef_sequence.sequence_code _nef_sequence.residue_name _nef_sequence.linking _nef_sequence.residue_variant _nef_sequence.ccpn_comment 1 A 1 MET start . . 2 A 2 LYS middle . . 3 A 3 ILE middle . 'conserved' 4 A 4 ILE end . . 5 A 5 CA single . . 6 B 1 ATP single . . stop_ save_
In the above example, Chain A is a peptide in complex with a calcium (CA) and Chain B is free ATP.
There can be more than one of these saveframes in a single NEF file. Note how the _nef_chemical_shift_list.sf_category tag specifies the saveframe type (_nef_chemical_shift_list) and the _nef_chemical_shift_list.sf_framecode tag specifies the name of that particular saveframe (_nef_chemical_shift_list_bmr5844).
save_nef_chemical_shift_list_bmr5844 _nef_chemical_shift_list.sf_category nef_chemical_shift_list _nef_chemical_shift_list.sf_framecode nef_chemical_shift_list_bmr5844 _nef_chemical_shift_list.ccpn_serial 1 _nef_chemical_shift_list.ccpn_comment '' loop_ _nef_chemical_shift.chain_code _nef_chemical_shift.sequence_code _nef_chemical_shift.residue_name _nef_chemical_shsift.atom_name _nef_chemical_shift.value _nef_chemical_shift.value_uncertainty _nef_chemical_shift.element _nef_chemical_shift.isotope_number _nef_chemical_shift.ccpn_figure_of_merit _nef_chemical_shift.ccpn_comment @- @88 . H@955 9.639446186 0 H 1 1 . @- @89 . N@956 112.0508243 0 N 15 1 . A 1 MET C 170.978 0 C 13 1 . A 1 MET CA 55.193 0 C 13 1 . A 1 MET CB 34.019 0 C 13 1 . A 1 MET CG 31.136 0 C 13 1 . A 1 MET HA 3.823 0 H 1 1 . A 1 MET HB2 1.956 0 H 1 1 . A 1 MET HB3 1.976 0 H 1 1 . A 1 MET HG2 2.151 0 H 1 1 . A 1 MET HG3 2.036 0 H 1 1 . A 2 LYS C 174.608 0 C 13 1 . A 2 LYS CA 54.206 0 C 13 1 . A 2 LYS CB 35.916 0 C 13 1 . A 2 LYS CD 29.373 0 C 13 1 . A 2 LYS CE 42.086 0 C 13 1 . A 2 LYS CG 24.011 0 C 13 1 . A 2 LYS H 8.56 0 H 1 1 . A 2 LYS HA 4.62 0 H 1 1 . A 2 LYS HBx 1.494 0 H 1 1 . A 2 LYS HBy 1.329 0 H 1 1 . A 2 LYS HDx 1.604 0 H 1 1 . A 2 LYS HDy 1.651 0 H 1 1 . A 2 LYS HE% 2.909 0 H 1 1 . A 2 LYS HGx 1.384 0 H 1 1 . A 2 LYS HGy 1.223 0 H 1 1 . A 2 LYS N 122.783 0 N 15 1 . A 3 ILE C 176.569 0 C 13 1 . A 3 ILE CA 62.565 0 C 13 1 . A 3 ILE CB 38.792 0 C 13 1 . A 3 ILE CD1 14.332 0 C 13 1 . A 3 ILE CG1 27.255 0 C 13 1 . A 3 ILE CG2 17.2 0 C 13 1 . A 3 ILE H 8.373 0 H 1 1 . A 3 ILE HA 3.659 0 H 1 1 . A 3 ILE HB 1.486 0 H 1 1 . A 3 ILE HD1% 0.775 0 H 1 1 . A 3 ILE HG1x 0.781 0 H 1 1 . A 3 ILE HG1y 0.06 0 H 1 1 . A 3 ILE HG2% 0.595 0 H 1 1 . A 3 ILE N 120.076 0 N 15 1 . A 4 ILE C 176.194 0 C 13 1 . A 4 ILE CA 60.586 0 C 13 1 . A 4 ILE CB 37.466 0 C 13 1 . A 4 ILE CD1 10.304 0 C 13 1 . A 4 ILE CG1 26.368 0 C 13 1 . A 4 ILE CG2 16.57 0 C 13 1 . A 4 ILE H 8.543345299 0 H 1 1 . A 4 ILE HA 4.135 0 H 1 1 . A 4 ILE HB 1.613 0 H 1 1 . A 4 ILE HD1% 0.64 0 H 1 1 . A 4 ILE HG1x 1.164 0 H 1 1 . A 4 ILE HG1y 1.025 0 H 1 1 . A 4 ILE HG2% 0.802 0 H 1 1 . A 4 ILE N 127.239 0 N 15 1 . stop_ save_
The first two shifts (with chain_code set as temporary using @) are unassigned but observed resonances.
Note that 1 MET has sterospecifically assigned atoms HB2/3 and HG2/3. Some of the other protons have non-degenerate AND non-steroespecific assignments (for example 2 LYS HBx and HBy). The 2 LYS HE2 and HE3 signals overlap (are degenerate) and so therefore these protons are given a wildcard - HE%.
There must be a separate saveframe for each restraint list.
save_nef_distance_restraint_list_1pqx_mr _nef_distance_restraint_list.sf_category nef_distance_restraint_list _nef_distance_restraint_list.sf_framecode nef_distance_restraint_list_1pqx_mr _nef_distance_restraint_list.potential_type undefined _nef_distance_restraint_list.restraint_origin . _nef_distance_restraint_list.ccpn_tensor_chain_code . _nef_distance_restraint_list.ccpn_tensor_sequence_code . _nef_distance_restraint_list.ccpn_tensor_residue_name . _nef_distance_restraint_list.ccpn_tensor_magnitude 0 _nef_distance_restraint_list.ccpn_tensor_rhombicity 0 _nef_distance_restraint_list.ccpn_tensor_isotropic_value 0 _nef_distance_restraint_list.ccpn_serial 1 _nef_distance_restraint_list.ccpn_dataset_serial 1 _nef_distance_restraint_list.ccpn_unit . _nef_distance_restraint_list.ccpn_comment '' loop_ _nef_distance_restraint.index _nef_distance_restraint.restraint_id _nef_distance_restraint.restraint_combination_id _nef_distance_restraint.chain_code_1 _nef_distance_restraint.sequence_code_1 _nef_distance_restraint.residue_name_1 _nef_distance_restraint.atom_name_1 _nef_distance_restraint.chain_code_2 _nef_distance_restraint.sequence_code_2 _nef_distance_restraint.residue_name_2 _nef_distance_restraint.atom_name_2 _nef_distance_restraint.weight _nef_distance_restraint.target_value _nef_distance_restraint.target_value_uncertainty _nef_distance_restraint.lower_linear_limit _nef_distance_restraint.lower_limit _nef_distance_restraint.upper_limit _nef_distance_restraint.upper_linear_limit _nef_distance_restraint.ccpn_figure_of_merit _nef_distance_restraint.ccpn_comment 1 55 . A 1 MET HA A 1 MET HG2 1 4 . . 1.8 5 . . . 2 56 . A 1 MET HA A 1 MET HG3 1 4 . . 1.8 5 . . . 3 57 . A 1 MET HA A 2 LYS H 1 3 . . 1.8 3.5 . . . 4 68 . A 2 LYS HA A 3 ILE H 1 2.5 . . 1.8 2.9 . . . 5 69 . A 2 LYS HBx A 2 LYS HD% 1 4 . . 1.8 7 . . . 6 69 . A 2 LYS HBy A 2 LYS HD% 1 4 . . 1.8 7 . . . 7 70 . A 2 LYS HB% A 2 LYS HE% 1 4 . . 1.8 7 . . . 8 71 . A 2 LYS HB% A 3 ILE H 1 4 . . 1.8 6 . . . 9 77 . A 2 LYS HE% A 4 ILE HD1% 1 4 . . 1.8 7 . . . 10 93 . A 3 ILE HA A 5 SER H 1 4 . . 1.8 5 . . . 11 108 . A 3 ILE HG2% A 4 ILE H 1 4 . . 1.8 6 . . . 12 109 . A 3 ILE HG2% A 4 ILE HA 1 4 . . 1.8 6 . . . 13 110 . A 3 ILE HG2% A 2 LYS HDx 1 4 . . 1.8 7 . . . 14 110 . A 3 ILE HG2% A 2 LYS HDy 1 4 . . 1.8 7 . . . stop_ save_
The first column (index) is a effectively a line number that does not persist when data are re-exported.
The second column gives the restraint ID and lines with the same restraint_id (e.g. restraint 69 and 110) are combined into a single restraint (an ambiguous restraint).
save_nef_dihedral_restraint_list_Dih-1pqx_mr _nef_dihedral_restraint_list.sf_category nef_dihedral_restraint_list _nef_dihedral_restraint_list.sf_framecode nef_dihedral_restraint_list_Dih-1pqx_mr _nef_dihedral_restraint_list.potential_type undefined _nef_dihedral_restraint_list.restraint_origin . _nef_dihedral_restraint_list.ccpn_tensor_chain_code . _nef_dihedral_restraint_list.ccpn_tensor_sequence_code . _nef_dihedral_restraint_list.ccpn_tensor_residue_name . _nef_dihedral_restraint_list.ccpn_tensor_magnitude 0 _nef_dihedral_restraint_list.ccpn_tensor_rhombicity 0 _nef_dihedral_restraint_list.ccpn_tensor_isotropic_value 0 _nef_dihedral_restraint_list.ccpn_serial 2 _nef_dihedral_restraint_list.ccpn_dataset_serial 1 _nef_dihedral_restraint_list.ccpn_unit . _nef_dihedral_restraint_list.ccpn_comment '' loop_ _nef_dihedral_restraint.index _nef_dihedral_restraint.restraint_id _nef_dihedral_restraint.restraint_combination_id _nef_dihedral_restraint.chain_code_1 _nef_dihedral_restraint.sequence_code_1 _nef_dihedral_restraint.residue_name_1 _nef_dihedral_restraint.atom_name_1 _nef_dihedral_restraint.chain_code_2 _nef_dihedral_restraint.sequence_code_2 _nef_dihedral_restraint.residue_name_2 _nef_dihedral_restraint.atom_name_2 _nef_dihedral_restraint.chain_code_3 _nef_dihedral_restraint.sequence_code_3 _nef_dihedral_restraint.residue_name_3 _nef_dihedral_restraint.atom_name_3 _nef_dihedral_restraint.chain_code_4 _nef_dihedral_restraint.sequence_code_4 _nef_dihedral_restraint.residue_name_4 _nef_dihedral_restraint.atom_name_4 _nef_dihedral_restraint.weight _nef_dihedral_restraint.target_value _nef_dihedral_restraint.target_value_uncertainty _nef_dihedral_restraint.lower_linear_limit _nef_dihedral_restraint.lower_limit _nef_dihedral_restraint.upper_limit _nef_dihedral_restraint.upper_linear_limit _nef_dihedral_restraint.name _nef_dihedral_restraint.ccpn_figure_of_merit _nef_dihedral_restraint.ccpn_comment 1 1 . A 2 LYS C A 3 ILE N A 3 ILE CA A 3 ILE C 1 -40 0 . -170 90 . PHI . . 2 2 . A 3 ILE C A 4 ILE N A 4 ILE CA A 4 ILE C 1 -120 0 . -155 -85 . PHI . . 3 3 . A 4 ILE C A 5 SER N A 5 SER CA A 5 SER C 1 -35 0 . 180 110 . PHI . . stop_ save_
save_nef_nmr_spectrum_hsqc _nef_nmr_spectrum.sf_category nef_nmr_spectrum _nef_nmr_spectrum.sf_framecode nef_nmr_spectrum_hsqc _nef_nmr_spectrum.num_dimensions 2 _nef_nmr_spectrum.chemical_shift_list nef_chemical_shift_list_bmr5844 _nef_nmr_spectrum.experiment_classification . _nef_nmr_spectrum.experiment_type hsqc _nef_nmr_spectrum.ccpn_positive_contour_count 10 _nef_nmr_spectrum.ccpn_positive_contour_base 201207.9761 _nef_nmr_spectrum.ccpn_positive_contour_factor 1.414214 _nef_nmr_spectrum.ccpn_positive_contour_colour '#008080' _nef_nmr_spectrum.ccpn_negative_contour_count 10 _nef_nmr_spectrum.ccpn_negative_contour_base -201207.9761 _nef_nmr_spectrum.ccpn_negative_contour_factor 1.414214 _nef_nmr_spectrum.ccpn_negative_contour_colour '#DA70D6' _nef_nmr_spectrum.ccpn_slice_colour '#008080' _nef_nmr_spectrum.ccpn_spectrum_scale 1 _nef_nmr_spectrum.ccpn_spinning_rate . _nef_nmr_spectrum.ccpn_spectrum_comment '' _nef_nmr_spectrum.ccpn_spectrum_file_path /Users/Documents/spectra/hsqc.spc _nef_nmr_spectrum.ccpn_sample . _nef_nmr_spectrum.ccpn_file_header_size 0 _nef_nmr_spectrum.ccpn_file_number_type float _nef_nmr_spectrum.ccpn_file_complex_stored_by dimension _nef_nmr_spectrum.ccpn_file_scale_factor 1 _nef_nmr_spectrum.ccpn_file_is_big_endian false _nef_nmr_spectrum.ccpn_file_byte_number 4 _nef_nmr_spectrum.ccpn_file_has_block_padding true _nef_nmr_spectrum.ccpn_file_block_header_size 0 _nef_nmr_spectrum.ccpn_file_type Azara _nef_nmr_spectrum.ccpn_peaklist_serial 1 _nef_nmr_spectrum.ccpn_peaklist_comment '' _nef_nmr_spectrum.ccpn_peaklist_name . _nef_nmr_spectrum.ccpn_peaklist_is_simulated false _nef_nmr_spectrum.ccpn_peaklist_symbol_colour '#7a7a7a' _nef_nmr_spectrum.ccpn_peaklist_symbol_style cross _nef_nmr_spectrum.ccpn_peaklist_text_colour '#7a7a7a' loop_ _nef_spectrum_dimension.dimension_id _nef_spectrum_dimension.axis_unit _nef_spectrum_dimension.axis_code _nef_spectrum_dimension.spectrometer_frequency _nef_spectrum_dimension.spectral_width _nef_spectrum_dimension.value_first_point _nef_spectrum_dimension.folding _nef_spectrum_dimension.absolute_peak_positions _nef_spectrum_dimension.is_acquisition _nef_spectrum_dimension.ccpn_axis_code 1 ppm 1H 600.13 16.66305634 13.06118752 circular true . H 2 ppm 15N 60.810663 32.88896883 134.8013663 circular true . N stop_ loop_ _nef_spectrum_dimension_transfer.dimension_1 _nef_spectrum_dimension_transfer.dimension_2 _nef_spectrum_dimension_transfer.transfer_type _nef_spectrum_dimension_transfer.is_indirect 1 2 onebond false stop_ loop_ _ccpn_spectrum_dimension.dimension_id _ccpn_spectrum_dimension.point_count _ccpn_spectrum_dimension.reference_point _ccpn_spectrum_dimension.total_point_count _ccpn_spectrum_dimension.point_offset _ccpn_spectrum_dimension.assignment_tolerance _ccpn_spectrum_dimension.lower_aliasing_limit _ccpn_spectrum_dimension.higher_aliasing_limit _ccpn_spectrum_dimension.measurement_type _ccpn_spectrum_dimension.phase_0 _ccpn_spectrum_dimension.phase_1 _ccpn_spectrum_dimension.window_function _ccpn_spectrum_dimension.lorentzian_broadening _ccpn_spectrum_dimension.gaussian_broadening _ccpn_spectrum_dimension.sine_window_shift _ccpn_spectrum_dimension.dimension_is_complex _ccpn_spectrum_dimension.dimension_block_size 1 2048 1022.5 2048 0 0.03 -3.601868814 13.06118752 Shift . . . . . . false 128 2 512 256.5 512 0 0.4 101.9123975 134.8013663 Shift . . . . . . false 32 stop_ loop_ _nef_peak.index _nef_peak.peak_id _nef_peak.volume _nef_peak.volume_uncertainty _nef_peak.height _nef_peak.height_uncertainty _nef_peak.position_1 _nef_peak.position_uncertainty_1 _nef_peak.position_2 _nef_peak.position_uncertainty_2 _nef_peak.chain_code_1 _nef_peak.sequence_code_1 _nef_peak.residue_name_1 _nef_peak.atom_name_1 _nef_peak.chain_code_2 _nef_peak.sequence_code_2 _nef_peak.residue_name_2 _nef_peak.atom_name_2 _nef_peak.ccpn_figure_of_merit _nef_peak.ccpn_linked_integral _nef_peak.ccpn_annotation _nef_peak.ccpn_comment 1 1 . . 834937.5 . 9.490027923 . 117.3867211 . . . . . . . . . 1 . . . 2 2 . . 948166.375 . 8.32004415 . 117.3874266 . . . . . . . . . 1 . . . 3 3 . . 943940.125 . 8.453563153 . 117.1876314 . . . . . . . . . 1 . . . 4 4 . . 634254.5625 . 8.994014548 . 116.9376709 . . . . . . . . . 1 . . . 5 5 . . 883868.9375 . 9.143328712 . 116.7997058 . . . . . . . . . 1 . . . 6 6 . . 807720.3125 . 8.543345299 . 116.4114358 . . . . . . . . . 1 . . . 7 7 . . 807321.375 . 8.703871524 . 116.2422154 . . . . . . . . . 1 . . . 8 8 . . 816018.5 . 8.729876115 . 115.273359 . . . . . . . . . 1 . . . 9 9 . . 974045.125 . 8.902105597 . 115.0619393 . . . . . . . . . 1 . . . 10 10 . . 700148.4375 . 8.262551535 . 114.8766033 . . . . . . . . . 1 . . . 11 11 . . 818619.6875 . 9.001829507 . 113.9872401 . . . . . . . . . 1 . . . 12 12 . . 883822 . 8.364161275 . 112.2296637 . . . . . . . . . 1 . . . 13 13 . . 716563.125 . 9.639446186 . 112.0508243 . @- @88 . H@955 @- @89 . N@956 1 . . . stop_ save_
Each _nef_nmr_spectrum saveframe can contain only one peak list. The entire saveframe, including the spectrum description, must be duplicated to include an additional peak list for a particular spectrum.
Each spectrum must be associated with a chemical shift list.
Some programmes will also output their own saveframes. CcpNmr Analysis, for example, can output a several saveframes which (in combination with the NEF specified saveframes above) allows it to restore a full ccpn project when read in to CcpNmr Analysis.
save_ccpn_assignment _ccpn_assignment.sf_category ccpn_assignment _ccpn_assignment.sf_framecode ccpn_assignment loop_ _nmr_chain.short_name _nmr_chain.serial _nmr_chain.label _nmr_chain.is_connected _nmr_chain.comment @- 1 @- false 'Default NmrChain, used for ResonanceGroups not in other chains. Cannot be deleted or renamed.' A 2 @2 false . stop_ loop_ _nmr_residue.chain_code _nmr_residue.sequence_code _nmr_residue.residue_name _nmr_residue.serial _nmr_residue.comment @- @88 . 88 . @- @89 . 89 . A 1 MET 1 . A 2 LYS 2 . A 3 ILE 3 . A 4 ILE 4 . stop_ loop_ _nmr_atom.chain_code _nmr_atom.sequence_code _nmr_atom.serial _nmr_atom.name _nmr_atom.isotope_code _nmr_atom.comment @- @88 955 H@955 1H . @- @89 956 N@956 15N . A 1 1 HA 1H HA A 1 2 HB2 1H HBx A 1 3 HB3 1H HBy A 1 4 HG2 1H HGx A 1 5 HG3 1H HGy A 1 6 C 13C C A 1 7 CA 13C CA A 1 8 CB 13C CB A 1 9 CG 13C CG A 2 10 H 1H H A 2 11 HA 1H HA A 2 12 HBx 1H HBx A 2 13 HBy 1H HBy A 2 14 HGx 1H HGx A 2 15 HGy 1H HGy A 2 16 HDx 1H HDx A 2 17 HDy 1H HDy A 2 18 HE% 1H HE% A 2 19 C 13C C A 2 20 CA 13C CA A 2 21 CB 13C CB A 2 22 CG 13C CG A 2 23 CD 13C CD A 2 24 CE 13C CE A 2 25 N 15N N A 3 26 H 1H H A 3 27 HA 1H HA A 3 28 HB 1H HB A 3 29 HG1x 1H HG1x A 3 30 HG1y 1H HG1y A 3 31 HG2% 1H HG2% A 3 32 HD1% 1H HD1% A 3 33 C 13C C A 3 34 CA 13C CA A 3 35 CB 13C CB A 3 36 CG1 13C CG1 A 3 37 CG2 13C CG2 A 3 38 CD1 13C CD1 A 3 39 N 15N N A 4 40 H 1H H A 4 41 HA 1H HA A 4 42 HB 1H HB A 4 43 HG1x 1H HG1x A 4 44 HG1y 1H HG1y A 4 45 HG2% 1H HG2% A 4 46 HD1% 1H HD1% A 4 47 C 13C C A 4 48 CA 13C CA A 4 49 CB 13C CB A 4 50 CG1 13C CG1 A 4 51 CG2 13C CG2 A 4 52 CD1 13C CD1 A 4 53 N 15N N stop_ save_ save_ccpn_additional_data _ccpn_additional_data.sf_category ccpn_additional_data _ccpn_additional_data.sf_framecode ccpn_additional_data loop_ _ccpn_internal_data.ccpn_object_pid _ccpn_internal_data.internal_data_string PeakList:hsqc.1 ;{ "meritSettings": { "meritEnabled": false } } ; Spectrum:hsqc ;{ "spectrumAxesOrdering": { "spectrumPreferredAxisOrdering": [ 0, 1 ] }, "includePositiveContours": true, "includeNegativeContours": false, "spectrumAliasing": { "displayFoldedContours": true, "visibleAliasingRange": [ [ 0, 0 ], [ 0, 0 ] ], "aliasingRange": [ [ 0, 0 ], [ 0, 0 ] ] } } ; stop_ save_