Esempio n. 1
0
 bool mat_save_multi_array_vec2(QString qsFilename, QString qsVarName, const std::vector<std::vector<Array> > &vvA)
 {
   MATFile *f = mat_open(qsFilename, "wz");
   assert(f != 0);
   mat_save_multi_array_vec2(f, qsVarName, vvA);
   mat_close(f);
   return true;
 }
Esempio n. 2
0
 bool mat_load_multi_array_vec2(QString qsFilename, QString qsVarName, std::vector<std::vector<Array> > &vvA)
 {
   std::cout << "mat_load_multi_array_vec2 " << qsFilename.toStdString() << std::endl;
   MATFile *f = mat_open(qsFilename, "r");
   assert(f != 0);
   mat_load_multi_array_vec2(f, qsVarName, vvA);
   mat_close(f);
   return true;
 }
Esempio n. 3
0
FILE *mat_create(const char  *fname,Main_header *mhead) {
  FILE *fptr;
  int bufr[MatBLKSIZE/sizeof(int)];
  int ret;
  
  fptr = mat_open( fname, "w+");
  if (!fptr) return( NULL );
  ret = mat_write_main_header( fptr, mhead );
  if( ret != 0 ) {
    mat_close( fptr);
    return( NULL );
  }
  memset(bufr,0,MatBLKSIZE);
  bufr[0] = 31;
  bufr[1] = 2;
  
  ret = write_matrix_data(fptr,MatFirstDirBlk,1,(char*)bufr,SunLong);
  
  if( ret != 0 ) {
    mat_close( fptr);
    return( NULL );
  }
  return (fptr);
}
Esempio n. 4
0
int main (int argc, char *argv[]) {

  uint32_t         nincvxls;
  uint32_t        *incvxls;
  analyze_volume_t vol;
  mat_t           *mat;
  dsr_t            lblhdr;
  dsr_t           *hdrs[2];
  uint8_t         *lblimg;
  char            *imgmsg;
  char            *hdrdata;
  args_t           args;
  struct argp      argp = {options, _parse_opt, "INPUT OUTPUT", doc};

  lblimg  = NULL;
  incvxls = NULL;
  mat     = NULL;
  imgmsg  = NULL;
  hdrdata = NULL;

  memset(&args, 0, sizeof(args));

  startup("tsmat", argc, argv, &argp, &args);

  if (analyze_open_volume(args.input, &vol)) {
    printf("error opening analyze volume from %s\n", args.input);
    goto fail;
  }

  nincvxls = _create_mask(&vol, &incvxls, &args);
  
  if (nincvxls < 0) {
    printf("error masking voxels\n");
    goto fail;
  }

  if (nincvxls == 0) {

    printf("All voxels have been thresholded - relax your constraints\n");
    goto fail;
  }

  /*
   * if a label file was not provided, but a mask file
   * was, use the mask file to set row/column labels 
   */
  if ((args.labelf == NULL) && (args.maskf != NULL)) {

    args.labelf = args.maskf;
  }

  if (args.labelf != NULL) {

    if (analyze_load(args.labelf, &lblhdr, &lblimg)) {
      printf("error loading label file %s\n", args.labelf);
      goto fail;
    }

    hdrs[0] = vol.hdrs;
    hdrs[1] = &lblhdr;

    if (analyze_hdr_compat_ptr(2, hdrs, 1)) {
      printf(
        "label file %s does not match volume files in %s\n",
        args.labelf, args.input);
      goto fail;
    }
  }

  mat = mat_create(
    args.output, nincvxls, nincvxls,
    (1 << MAT_IS_SYMMETRIC) | (1 << MAT_HAS_ROW_LABELS),
    MAT_HDR_DATA_SIZE,
    sizeof(graph_label_t));

  if (mat == NULL) {
    printf("error creating mat file %s\n", args.output);
    goto fail;
  }

  imgmsg = malloc(200);
  if (imgmsg == NULL) {
    printf("out of memory?\n");
    goto fail;
  } 
  
  sprintf(
    imgmsg,
    "vol dims: %u (%0.6f), y: %u (%0.6f), z: %u (%0.6f), t: %u (%0.6f)",
    analyze_dim_size(   vol.hdrs, 0),
    analyze_pixdim_size(vol.hdrs, 0),
    analyze_dim_size(   vol.hdrs, 1),
    analyze_pixdim_size(vol.hdrs, 1),
    analyze_dim_size(   vol.hdrs, 2),
    analyze_pixdim_size(vol.hdrs, 2),
    vol.nimgs,
    args.sampletime);


  if (args.hdrmsg != NULL) 
    hdrdata = malloc(strlen(imgmsg) + strlen(args.hdrmsg) + 3);
  else
    hdrdata = malloc(strlen(imgmsg) + 2);
  
  if (hdrdata == NULL) {
    printf("out of memory?\n");
    goto fail;
  }

  if (args.hdrmsg != NULL) 
    sprintf(hdrdata, "%s\n%s\n", args.hdrmsg, imgmsg);
  else
    sprintf(hdrdata, "%s\n", imgmsg);

  if (mat_write_hdr_data(mat, hdrdata, strlen(hdrdata)+1)) {
    printf("error writing header message \"%s\" to %s\n",
           hdrdata, args.output);
    goto fail;
  }
  
  if (lblimg != NULL) {
    if (_write_labels(&lblhdr, lblimg, mat, incvxls, nincvxls)) {
      printf("error writing labels to %s\n", args.output);
      goto fail;
    }
  }

  if (_mk_corr_matrix(&vol, mat, args.corrtype, incvxls, nincvxls)) {
    printf("error creating correlation matrix\n");
    goto fail;
  }

  mat_close(mat);
  analyze_free_volume(&vol);
  free(imgmsg);
  free(hdrdata);
  free(lblimg);
  free(incvxls);

  return 0;
  
fail:

  if (mat != NULL) mat_close(mat);
  return 1;
}