#include #include //#include #include using namespace clipper; using namespace clipper::data32; int main() { CCP4MTZfile file; // import an mtz CSpacegroup myspgr( "" ); CCell mycell( myspgr, "" ); CResolution myreso( mycell, "" ); CHKL_info mydata( myreso, "GerE native and MAD.." ); CHKL_data myfsig( mydata ); CHKL_data myanom( mydata ); file.open_read("testfile.mtz"); myspgr.init( file.spacegroup() ); mycell.init( file.cell() ); myreso.init( Resolution( 10.0 ) ); file.import_hkl_info( mydata, false ); //myfsig.HKL_data::debug(); //myanom.HKL_data::debug(); new CMTZcrystal(mydata, "xtal", MTZcrystal("xtal", "proj", mycell )); new CMTZdataset(mydata, "xtal/dset", MTZdataset("dset", 1.76) ); file.import_chkl_data( myfsig, "*/native/[FP SIGFP]" ); file.import_chkl_data( myanom, "*/*/[F(+)SEinfl SIGF(+)SEinfl F(-)SEinfl SIGF(-)SEinfl]", "xtal/dset/myanom"); std::vector v1 = file.column_paths(); for ( int i = 0; i < v1.size(); i++ ) std::cout << "Column: " << i << " " << v1[i] << "\n"; std::vector v2 = file.assigned_paths(); for ( int i = 0; i < v2.size(); i++ ) std::cout << "Import: " << i << " " << v2[i] << "\n"; file.close_read(); new Container(mydata, "newproj"); new CMTZcrystal(mydata, "newproj/newcryst", MTZcrystal("newcryst", "newproj", Cell(Cell_descr(10.0,20.0,30.0)))); new CMTZdataset(mydata, "newproj/newcryst/newdset", MTZdataset("newdset", 1.76) ); mydata.Container::debug(); std::cout << mycell.format() << "\n"; for (int i=0; i fsigdata( rfl, "" ); // read data to higher resolution file.open_read("testfile.mtz"); rfl.init( file.spacegroup(), file.cell(), Resolution(3.0) ); file.import_hkl_info( rfl, false ); file.import_chkl_data( fsigdata, "*/native/[FP SIGFP]" ); file.close_read(); Range slim = fsigdata.invresolsq_range(); std::cout << slim.min() << " " << slim.max() << "\n"; TargetFn_meanFnth targetfn( fsigdata, 2.0 ); BasisFn_binner basisfn( fsigdata, 10 ); std::vector p1( 10, 1.0 ); ResolutionFn rfn1( rfl, basisfn, targetfn, p1 ); BasisFn_gaussian basisfn2; std::vector q( 2, 1.0 ); ResolutionFn_nonlinear rfn2( rfl, basisfn2, targetfn, q ); BasisFn_expcubic basisfn3; std::vector q1( 4, 1.0 ); ResolutionFn_nonlinear rfn3( rfl, basisfn3, targetfn, q1 ); BasisFn_spline basisfn4( fsigdata, 10 ); std::vector p2( 10, 1.0 ); ResolutionFn rfn4( rfl, basisfn4, targetfn, p2 ); CHKL_data esigdata( fsigdata ); esigdata.compute( fsigdata, Compute_EsigE_from_FsigF() ); TargetFn_meanEnth targetfn_e( esigdata, 2.0 ); BasisFn_spline basisfn5( fsigdata, 10 ); ResolutionFn rfn5( rfl, basisfn5, targetfn_e, p2 ); for ( HKL_info::HKL_reference_index ih = rfl.first(); !ih.last(); ih.next() ) { ftype eps = ih.hkl_class().epsilon(); if ( fabs( rfn4.f(ih) - rfn5.f(ih) ) > 0.001 ) std::cout << "err\n"; if (ih.index()%100 == 0) std::cout << ih.invresolsq() << " " << ih.hkl().format() << " " << rfn1.f(ih)*eps << " " << rfn2.f(ih)*eps << " " << rfn3.f(ih)*eps << " " << rfn4.f(ih)*eps << "\n"; } }