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; }
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; }
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); }
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; }