예제 #1
0
파일: EMHeader.cpp 프로젝트: salilab/imp
IMPEM_BEGIN_INTERNAL_NAMESPACE

EMHeader::EMHeader(const DensityHeader &header) {
  nx = header.get_nx();
  ny = header.get_ny();
  nz = header.get_nz();
  magic = header.magic;
  type = header.get_data_type();
  for (short i = 0; i < DensityHeader::COMMENT_FIELD_SINGLE_SIZE; i++) {
    comment[i] = header.comments[0][i];
  }
  voltage = header.voltage;
  Cs = header.Cs;
  Aperture = header.Aperture;
  Magnification = header.Magnification;
  Postmagnification = header.Postmagnification;
  Exposuretime = header.Exposuretime;
  Objectpixelsize = header.get_spacing();
  Microscope = header.Microscope;
  Pixelsize = header.Pixelsize;
  CCDArea = header.CCDArea;
  Defocus = header.Defocus;
  Astigmatism = header.Astigmatism;
  AstigmatismAngle = header.AstigmatismAngle;
  FocusIncrement = header.FocusIncrement;
  CountsPerElectron = header.CountsPerElectron;
  Intensity = header.Intensity;
  EnergySlitwidth = header.EnergySlitwidth;
  EnergyOffset = header.EnergyOffset;
  Tiltangle = header.Tiltangle;
  Tiltaxis = header.Tiltaxis;
  MarkerX = header.MarkerX;
  MarkerY = header.MarkerY;
  lswap = header.lswap;
}
//! Function to transfer the (compatible) information content from DensityHeader
//! to ImageHeader
void  DensityHeader_to_ImageHeader(const DensityHeader& dh,ImageHeader& h) {
  // map size
  h.set_number_of_slices(dh.get_nz());
  h.set_number_of_rows(dh.get_ny());
  h.set_number_of_columns(dh.get_nx());
  // mode
  switch (dh.get_data_type()) {
  case 1:
    h.set_image_type(ImageHeader::VOL_BYTE);
    break;
  case 2:
    h.set_image_type(ImageHeader::VOL_INT);
    break;
  case 5:
    h.set_image_type(ImageHeader::VOL_IMPEM);
    break;
  }
  // Reversed image?
  if(algebra::get_is_big_endian()) {
    h.set_reversed(dh.lswap!=1);
  } else {
    h.set_reversed(dh.lswap==1);
  }
  // Origins and pixel size
  h.set_origin(algebra::Vector3D(dh.get_xorigin(),
                                 dh.get_yorigin(),
                                 dh.get_zorigin()) );
  h.set_object_pixel_size(dh.get_spacing());
  // Statistical values. There is no field in DensityHeader to guarantee that
  // they are computed or correct, so they are ignored
  h.set_fImami(0.);
  h.set_fFmax(0.);
  h.set_fFmin(0.);
  h.set_fAv(0.);
  h.set_fSig(0.);
  // These fields don't have an equivalent in DensityHeader
  h.set_Scale(1.);
  h.set_fAngle1(0.);
  h.set_Weight(1.);
  h.set_Flip(0.);
  h.set_fNrec(0.);
  h.set_fNlabel(0.);
  h.set_fIhist(0.);
  h.set_fLabrec(0.);
  h.set_fIangle(0.);
  h.set_fLabbyt(0.);
  h.set_fLenbyt(0.);
  h.set_fFlag(0.); // Ignore all the Euler angles for the Spider Image
  // Set time and date
  h.set_date();
  h.set_time();
}