Ejemplo n.º 1
0
Archivo: result.c Proyecto: juapebe/HPC
void write_result(DATA *data, SUMMARY *summary) {
  chdir("RESULT");
  write_interactions(data, summary);
  write_unique_interactions(data, summary);
  /* write_prey(data, summary);
  write_IP(data, summary);
  write_bait(data, summary);
  write_hyperprior(data, summary); */
  write_matrix_data(data, summary);
  /* write_matrix_data2(data, summary); */
  chdir("..");
}
Ejemplo n.º 2
0
int write_host_data(MatrixFile *mptr, int matnum, MatrixData *data) {
  struct MatDir matdir, dir_entry ;
  Image_subheader *imagesub ;
  int   status, blkno, nblks ;
  
  matrix_errno = MAT_OK;
  matrix_errtxt[0] = '\0';
  status = OK ;
  nblks = (data->data_size+511)/512;
  
  if (matrix_find(mptr, matnum, &matdir) == ERROR) {
    blkno = mat_enter(mptr->fptr, mptr->mhptr, matnum, nblks) ;
    if( blkno == ERROR ) return( ERROR );
    dir_entry.matnum = matnum ;
    dir_entry.strtblk = blkno ;
    
    /*le 24 Avril 2001, j'ai enleve le -1*/
    dir_entry.endblk = dir_entry.strtblk + nblks /*- 1*/ ;
    dir_entry.matstat = 1 ;
    insert_mdir(dir_entry, mptr->dirlist) ;
    matdir = dir_entry ;
  }
  
  imagesub = (Image_subheader *) data->shptr ;
  if (imagesub == NULL) {
    imagesub = (Image_subheader *) calloc(1, MatBLKSIZE);
    data->shptr = imagesub;
  }                                                     /* use MatrixData info */
  imagesub->x_pixel_size = data->pixel_size;
  imagesub->y_pixel_size = data->y_size;
  imagesub->z_pixel_size = data->z_size;
  imagesub->num_dimensions = 3;
  imagesub->x_dimension = data->xdim;
  imagesub->y_dimension = data->ydim;
  imagesub->z_dimension = data->zdim;
  imagesub->image_max = (int)(data->data_max/data->scale_factor);
  imagesub->image_min = (int)(data->data_min/data->scale_factor);
  imagesub->scale_factor = data->scale_factor;
  imagesub->data_type = data->data_type;
  if( mat_write_image_subheader(mptr->fptr,mptr->mhptr,matdir.strtblk, imagesub) == ERROR ) return( ERROR );
  status = write_matrix_data(mptr->fptr, matdir.strtblk+1, nblks, data->data_ptr, imagesub->data_type) ;
  if( status == ERROR ) return( ERROR );
  return(status) ;
}
Ejemplo 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);
}
Ejemplo n.º 4
0
int mat_enter(FILE *fptr, Main_header *mhptr, int matnum, int nblks) {
  int dirblk, dirbufr[128], i, nxtblk, busy, oldsize;
  
  matrix_errno = MAT_OK;
  matrix_errtxt[0] = '\0';
  dirblk = MatFirstDirBlk;
  if( fseek(fptr, 0, 0) ) return( ERROR );
  /*
   * nfs locks are very time consuming lockf( fileno(fptr), F_LOCK, 0);
   */
  if (read_matrix_data(fptr, dirblk, 1, (char *) dirbufr, SunLong) == ERROR) return (ERROR);
  
  busy = 1;
  while (busy) {
    nxtblk = dirblk + 1;
    for (i = 4; i < 128; i += 4) {
      if (dirbufr[i] == 0) {
	busy = 0;
	break;
      } else if (dirbufr[i] == matnum) {
	oldsize = dirbufr[i + 2] - dirbufr[i + 1] + 1;
	if (oldsize < nblks) {
	  dirbufr[i] = 0xFFFFFFFF;
	  write_matrix_data(fptr, dirblk, 1, (char*)dirbufr, SunLong);
	  nxtblk = dirbufr[i + 2] + 1;
	} else {
	  nxtblk = dirbufr[i + 1];
	  dirbufr[0]++;
	  dirbufr[3]--;
	  busy = 0;
	  break;
	}
      } else {
	nxtblk = dirbufr[i + 2] + 1;
      }
    }
    if (!busy) break;
    if (dirbufr[1] != MatFirstDirBlk) {
      dirblk = dirbufr[1];
      if (read_matrix_data(fptr, dirblk, 1, (char *) dirbufr, SunLong) == ERROR) return (ERROR);
    } else {
      dirbufr[1] = nxtblk;
      if (write_matrix_data(fptr, dirblk, 1, (char *) dirbufr, SunLong) == ERROR) return (ERROR);
      
      dirbufr[0] = 31;
      dirbufr[1] = MatFirstDirBlk;
      dirbufr[2] = dirblk;
      dirbufr[3] = 0;
      dirblk = nxtblk;
      for (i = 4; i < 128; i++)
	dirbufr[i] = 0;
    }
  }
  dirbufr[i] = matnum;
  dirbufr[i + 1] = nxtblk;
  dirbufr[i + 2] = nxtblk + nblks;
  dirbufr[i + 3] = 1;
  dirbufr[0]--;
  dirbufr[3]++;
  if (write_matrix_data(fptr, dirblk, 1, (char*)dirbufr, SunLong) == ERROR) return (ERROR);
  
  if( fseek(fptr, 0, 0) ) return( ERROR );
  /*
   * nfs locks are very time consuming lockf( fileno(fptr), F_UNLOCK, 0);
   */
  return (nxtblk);
}