Example #1
0
/**
 * Prepare histogram data.
 *
 * @param x  first data
 * @param wv weight data
 * @return max. index value or -1, if index empty
 */
INT32 CGEN_PROTECTED CHistogram::Prepare(CData* x, CData* wv)
{
  INT32 imax = 1, i, n;

  if (m_hist == NULL)
    m_hist = data_create("hist");

  m_nhist = data_nblock(m_hist);

  if (data_empty(m_indexlist) != TRUE)
  {
    imax = CHistogram_max_index(m_indexlist, 0) + 1;
    if (imax > m_nhist)
      m_nhist = imax;
  }

  if (data_empty(wv) != TRUE)
  {
    imax = data_ndim(wv);
    if (imax > m_nhist)
      m_nhist = imax;
  }

  if (m_nhist == 0)
    m_nhist = 1;

  if (data_empty(m_hist) != TRUE)
  {
    data_realloc (m_hist, m_nhist * m_bins);
    set_data_nrec (m_hist, m_nhist * m_bins);
    m_hdim = data_dim(m_hist);
  } else
  {
    data_reset(m_hist);
    n = data_dim(x);
    m_hdim = 0;
    for (i = 0; i < n; i++)
      if (comp_type(x,i) > 256 && i != m_icomp)
      {
        comp_def(m_hist, comp_text(x,i),T_DOUBLE);
        m_hdim++;
      }
    data_arr_alloc (m_hist, m_bins * m_nhist);
  }

  set_data_descr(m_hist, DESCR1, (FLOAT64)m_hmode);
  set_data_descr(m_hist, DESCR2, (FLOAT64)m_bins);

  set_data_nblock(m_hist, m_nhist);

  return (m_nhist);
}
Example #2
0
/**
 * Check consistency between histogram and minmax data.
 */
INT16 CGEN_PROTECTED CHistogram::CheckConsist()
{
  INT16 ierr, mode;
  INT32 nhist;

  mode = HIS_MODE;
  nhist = data_nblock(m_hist);

  mode = CheckMinmax();
  if (mode == -1)
    return (NOT_EXEC);

  if ((ierr = CheckHisto()) != O_K)
    return (ierr);

  switch (mode)
  {
  case 1:
    if (data_nrec(m_minmax) != 2 || data_dim (m_minmax) != 1)
      return IERROR(this,HIS_INCONS,0,0,0);
    break;

  case 2:
    if (data_nrec(m_minmax) != 2)
      return IERROR(this,HIS_INCONS,0,0,0);
    if (data_dim(m_minmax) != data_dim(m_hist))
      return IERROR(this,HIS_INCONS,0,0,0);
    break;

  case 3:
    if (data_nrec(m_minmax) < 2 * nhist)
      return IERROR(this,HIS_INCONS,0,0,0);
    if (data_dim(m_minmax) != data_dim(m_hist))
      return IERROR(this,HIS_INCONS,0,0,0);
    break;

  default:
    return IERROR(this,HIS_INCONS,0,0,0);
  }

  return (O_K);
}
Example #3
0
/**
 * Check minmax data, return mode.
 */
INT16 CGEN_PROTECTED CHistogram::CheckMinmax()
{
  if (data_empty (m_minmax) == TRUE)
    return IERROR(this,HIS_EMPTY,0,0,0);

  if (data_chtype (m_minmax, T_DOUBLE) != TRUE)
    return IERROR(this,HIS_TYPE,0,0,0);

  if (data_nrec(m_minmax) == 2 && data_dim(m_minmax) == 1)
    return (1);
  if (data_nrec(m_minmax) == 2)
    return (2);
  if (data_nrec(m_minmax) > 2)
    return (3);

  return (-1);
}
Example #4
0
int RegionalSummary::readH5(hid_t group_id) {
  // Read all the data
  hid_t dataset_id;
  vector<unsigned int> region_origin(2,0);
  dataset_id = H5Dopen2(group_id,"region_origin",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &region_origin[0]);
  H5Dclose (dataset_id);
  vector<unsigned int> region_dim(2,0);
  dataset_id = H5Dopen2(group_id,"region_dim",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &region_dim[0]);
  H5Dclose (dataset_id);
  vector<unsigned int> data_dim(2,0);
  dataset_id = H5Dopen2(group_id,"data_dim",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data_dim[0]);
  H5Dclose (dataset_id);
  Initialize(data_dim[1],data_dim[0],region_origin,region_dim);

  dataset_id = H5Dopen2(group_id,"n_err",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT_LEAST64, H5S_ALL, H5S_ALL, H5P_DEFAULT, &n_err_);
  H5Dclose (dataset_id);
  dataset_id = H5Dopen2(group_id,"n_aligned",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT_LEAST64, H5S_ALL, H5S_ALL, H5P_DEFAULT, &n_aligned_);
  H5Dclose (dataset_id);
  unsigned int n_data = data_dim[0] * data_dim[1];
  vector<uint64_t> hp_count(n_data,0);
  dataset_id = H5Dopen2(group_id,"hp_count",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT_LEAST64, H5S_ALL, H5S_ALL, H5P_DEFAULT, &hp_count[0]);
  H5Dclose (dataset_id);
  vector<uint64_t> hp_err(n_data,0);
  dataset_id = H5Dopen2(group_id,"hp_err",H5P_DEFAULT);
  H5Dread(dataset_id, H5T_NATIVE_UINT_LEAST64, H5S_ALL, H5S_ALL, H5P_DEFAULT, &hp_err[0]);
  H5Dclose (dataset_id);
  uint64_t *countStart = &hp_count[0];
  uint64_t *errStart   = &hp_err[0];
  for(unsigned int i_flow=0; i_flow <n_flow_; ++i_flow) {
    uint64_t *countEnd = countStart + max_hp_;
    uint64_t *errEnd   = errStart   + max_hp_;
    hp_count_[i_flow].assign(countStart, countEnd);
    hp_err_[i_flow].assign(errStart, errEnd);
    countStart = countEnd;
    errStart = errEnd;
  }

  return(EXIT_SUCCESS);
}
Example #5
0
/**
 * Compute minmax data of pooled histogram. The blocks of hist are added.
 *
 * @param minmax minmax data
 * @param mm     pooled minmax data
 * @return O_K if ok, NOT_EXEC if not executed
 */
static INT16 CHistogram_minmax_poole(CData* minmax, CData* mm)
{
  FLOAT64 d, dmi, dmx;
  INT16 i, j;

  if (mm == NULL)
    return (NOT_EXEC);
  if (data_empty(minmax) == TRUE)
    return (NOT_EXEC);

  if (data_nrec(minmax) == 2)
  {
    data_copy (minmax,mm);
    return (O_K);
  }

  data_reset (mm);
  data_scopy (minmax, mm);
  data_arr_alloc (mm, 2);

  for (j = 0; j < data_dim(minmax); j++)
  {
    dmi = dfetch(minmax,0,j);
    dmx = dfetch(minmax,1,j);

    for (i = 1; i < data_nrec(minmax) / 2; i++)
    {
      d = dfetch(minmax,2*i,j);
      if (d < dmi)
        dmi = d;
      d = dfetch(minmax,2*i+1,j);
      if (d > dmx)
        dmx = d;
    }
    dstore (dmi, mm, 0, j);
    dstore (dmx, mm, 1, j);
  }

  return (O_K);
}
Example #6
0
/**
 * Select histogram block i, store to ihist.
 *
 * @param ihist histogram i
 * @param  i    histogram block index
 * @param  j    histogram component index (select only a component);
 *              -1 to select complete block
 * @return O_K if ok, NOT_EXEC if not executed
 */
INT16 CGEN_PUBLIC CHistogram::SelectBlock(CData* ihist, INT32 i, INT32 j)
{
  INT32 l, rl;

  if (CheckHisto() != O_K)
    return (NOT_EXEC);
  if (ihist == NULL)
    return (NOT_EXEC);
  if (i < 0 || i >= m_nhist)
    return (NOT_EXEC);

  rl = BytesPerBlock();

  data_reset (ihist);
  if (j < 0)
  {
    data_scopy (m_hist, ihist);
    data_arr_alloc (ihist,m_bins);
    copy_data_descr (m_hist, ihist);
    set_data_nblock (ihist, 1);
    dl_memmove ( (char*)data_ptr(ihist),
        (char*)xaddr(m_hist,i*m_bins,0), rl);
    return (O_K);
  }

  if (j > -1 && j < data_dim(m_hist))
  {
    comp_mdef (ihist,1,T_DOUBLE);
    data_arr_alloc (ihist,m_bins);
    copy_comp_text (m_hist, j, ihist, 0, 1);
    copy_data_descr(m_hist, ihist);
    set_data_nblock (ihist, 1);
    for (l = 0; l < m_bins; l++)
      dstore (dfetch(m_hist,i*m_bins+l,j), ihist,l,0);
    return (O_K);
  }

  return (NOT_EXEC);
}