1 /*! \file cif/cif_data_io.h 2 Header file for reflection data cif importer 3 */ 4 //c Copyright (C) 2000-2006 Paul Emsley, Kevin Cowtan and University of York 5 //L 6 //L This library is free software and is distributed under the terms 7 //L and conditions of version 2.1 of the GNU Lesser General Public 8 //L Licence (LGPL) with the following additional clause: 9 //L 10 //L `You may also combine or link a "work that uses the Library" to 11 //L produce a work containing portions of the Library, and distribute 12 //L that work under terms of your choice, provided that you give 13 //L prominent notice with each copy of the work that the specified 14 //L version of the Library is used in it, and that you include or 15 //L provide public access to the complete corresponding 16 //L machine-readable source code for the Library including whatever 17 //L changes were used in the work. (i.e. If you make changes to the 18 //L Library you must distribute those, but you do not need to 19 //L distribute source or object code to those portions of the work 20 //L not covered by this licence.)' 21 //L 22 //L Note that this clause grants an additional right and does not impose 23 //L any additional restriction, and so does not affect compatibility 24 //L with the GNU General Public Licence (GPL). If you wish to negotiate 25 //L other terms, please contact the maintainer. 26 //L 27 //L You can redistribute it and/or modify the library under the terms of 28 //L the GNU Lesser General Public License as published by the Free Software 29 //L Foundation; either version 2.1 of the License, or (at your option) any 30 //L later version. 31 //L 32 //L This library is distributed in the hope that it will be useful, but 33 //L WITHOUT ANY WARRANTY; without even the implied warranty of 34 //L MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 35 //L Lesser General Public License for more details. 36 //L 37 //L You should have received a copy of the CCP4 licence and/or GNU 38 //L Lesser General Public License along with this library; if not, write 39 //L to the CCP4 Secretary, Daresbury Laboratory, Warrington WA4 4AD, UK. 40 //L The GNU Lesser General Public can also be obtained by writing to the 41 //L Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 42 //L MA 02111-1307 USA 43 44 45 #ifndef CLIPPER_CIF_IO 46 #define CLIPPER_CIF_IO 47 48 #include "../core/hkl_datatypes.h" 49 50 namespace clipper 51 { 52 53 //! CIF import/export parent class for clipper objects 54 /*! This is the import class which can be linked to an cif data 55 file and be used to transfer data into a Clipper 56 data structure. 57 It is currently a read-only class. 58 */ 59 class CIFfile 60 { 61 public: 62 //! Constructor: does nothing 63 CIFfile(); 64 //! Destructor: close any file that was left open 65 ~CIFfile(); 66 67 //! Open a file for read access 68 void open_read( const String filename_in ); 69 //! Close a file after reading 70 void close_read(); 71 72 //! get file spacegroup 73 const Spacegroup& spacegroup() const; 74 //! get file cell 75 const Cell& cell() const; 76 //! get file resolution 77 const Resolution& resolution() const; 78 //! get file HKL sampling 79 const HKL_sampling& hkl_sampling() const; 80 //! get file resolution 81 Resolution resolution( const Cell& cell ) const; 82 83 //! read the reflection list from the PHS file 84 void import_hkl_info( HKL_info& target ); 85 //! mark a hkl_data for import from PHS file 86 void import_hkl_data( HKL_data_base& cdata ); 87 //! contains phases predicate 88 bool contains_phases_p() const; 89 90 91 private: 92 enum CIFmode { NONE, READ}; 93 94 CIFmode mode; //!< file mode 95 String filename; //!< input/output file 96 HKL_data_base* f_sigf_i; //!< input HKL_data Fs 97 HKL_data_base* I_sigI_i; //!< input HKL_data intensities 98 HKL_data_base* f_phi_i; //!< input HKL_data object (calc sfs) 99 HKL_data_base* rfree_i; //!< input HKL_data rfree flags 100 HKL_data_base* phi_fom_i; //!< input HKL_data phi foms 101 HKL_data_base* f_sigf_ano_i; //!< input anomalous Fs 102 HKL_data_base* I_sigI_ano_i; //!< input anomalous intensities 103 HKL_data_base* d_sigd_i; //!< input anomalous diffs 104 HKL_data_base* ABCD_i; //!< input Hendrickson Lattman coeffs. 105 const HKL_data_base* f_sigf_o; //!< output HKL_data object 106 const HKL_data_base* phi_wt_o; //!< output HKL_data object 107 //! object which supplies the hkl list (write mode only) 108 const HKL_info* hkl_ptr; 109 110 Spacegroup space_group; 111 Cell cell_; 112 Resolution resolution_; 113 HKL_sampling hkl_sampling_; 114 int set_cell_symm_reso(std::string cif_file_name); 115 int set_cell_symm_reso_by_cif(std::string cif_file_name); 116 int set_cell_symm_reso_by_kludge(std::string cif_file_name); 117 118 // internal variables, due to the strange and variable nature of 119 // mmCIF files, sometime these things are in the file, sometimes 120 // not... 121 // 122 short int clipper_cell_set_flag; 123 short int clipper_reso_set_flag; 124 short int clipper_symm_set_flag; 125 126 }; 127 128 } // namespace clipper 129 130 #endif // CLIPPER_CIF_IO 131 132 133