Example #1
0
void convert_table(char *in,char *out)
{
  TABLE src,dst;
  int i;

  if (open_table(&src,in,"I")<0) {
    print_error("Cannot open input file %s",in);
    exit_session(ERR_OPEN);
  }
  else
    handle_select_flag(&src,'Q',NULL);

  if (create_table(&dst,out,src.row,src.col,'W',src.ident)<0) {
    close_table(&src);
    print_error("Cannot create output file %s",out);
    exit_session(ERR_CREAT);
  }
  else {
    reset_print_progress();
    for (i=1;i<=src.col;i++) {
      print_progress("Convert table: ", (int)((100*i)/src.col),1);
      copy_col(&src,&dst,i);
    }
	
    CP_non_std_desc(&src,&dst);
	
    close_table(&dst);
    close_table(&src);
  }
}
Example #2
0
void convert_spec(char *in,char *out)
{
  SPECTRUM src,dst;

  if (open_spec(&src,in,"I")<0) {
    print_error("Cannot open input file %s",in);
    exit_session(ERR_OPEN);
  }
  else
    if (create_spec(&dst,out,src.npts,src.start,src.step,src.data_type,
                    src.ident,src.cunit)<0) {
      close_spec(&src);
      print_error("Cannot create output file %s",out);
      exit_session(ERR_CREAT);
    }
    else {
      int i;

      for (i=0;i<src.npts;i++) WR_spec(&dst,i,RD_spec(&src,i));

      CP_non_std_desc(&src,&dst);
      close_spec(&dst);
      close_spec(&src);
    }
}
Example #3
0
void convert_image(char *in,char *out)
{
  IMAGE2D src,dst;
  int npix[2];
  double start[2],step[2];

  if (open_frame(&src,in,"I")<0) {
    print_error("Cannot open input file %s",in);
    exit_session(ERR_OPEN);
  }
  else {
    npix[0]=src.nx;
    npix[1]=src.ny;
    start[0]=src.startx;
    start[1]=src.starty;
    step[0]=src.stepx;
    step[1]=src.stepy;

    if (create_frame(&dst,out,npix,start,step,src.data_type,src.ident,src.cunit)<0) {
      close_frame(&src);
      print_error("Cannot create output file %s",out);
      exit_session(ERR_CREAT);
    }
    else {
      int i,j;

      for (i=0;i<src.nx;i++)
        for (j=0;j<src.ny;j++)
          WR_frame(&dst,i,j,RD_frame(&src,i,j));
	  
      CP_non_std_desc(&src,&dst);

      close_frame(&dst);
      close_frame(&src);
    }
  }
  printf("\n");
}
Example #4
0
int main(int argc, char **argv)
{
  TABLE intab, outtab;
  TIGERfile intig, outtig;

  char	**argval, **argname;
  char	text[1024];
  float	x, y;

  set_arglist("-in none -out null");
  init_session(argv, argc, &argname, &argval);

  if (open_tiger_frame(&intig,argval[0],"I") < 0) {
      sprintf(text, "Unable to open input datacube '%s'", argval[0]);
      print_error(text);
      exit_session(ERR_OPEN);
    }
  }
Example #5
0
void 
Handle_Error(char *routine, int status) 
{
	char errtext[512];
	int level;

	if (Error_Control_Level != NULL) {
		level = Error_Control_Level[Error_Current_Level];
	}
	else
		level = FATAL;

	switch (level) {  
					/* What to do when an error occurs ? */
	case FATAL :		/* causes program to exit */  
	
		sprintf(errtext,"FATAL error from routine %s", routine);
		print_error(errtext);
		strcpy(errtext,"\0");
		get_tiger_errmsg(status,errtext);
		print_error(errtext);
		exit_session(status);
		exit(1);

	case WARNING :		/* display warning */  
	
		sprintf(errtext,"WARNING from routine %s", routine);
		print_warning(errtext);
		get_tiger_errmsg(status,errtext);
		print_warning(errtext);
		break;

	case NONE :		/* return status */  
		break;
	
	default : 		/* it's up to the user to handle the error */
	    break;
	}
}
int
main(int argc, char *argv[])
{
	int ret = 1, i;
	dldev_t dev;

	/* for data security */
	/*
	umask(S_IRWXG | S_IRWXO);
	*/

	while((i = getopt(argc, argv, "hd:")) != -1){
		switch(i){
		case 'd':
			dev_file = optarg;
			break;
		case 'h':
		default:
			usage();
			break;
		}
	}
	argc -= optind;
	argv += optind;

#ifdef USB_USBHID
	dev.usb.file = dev_file;
#endif

	if(open_dev(&dev)){
		ERROR("open_dev");
		goto exit;
	}

	if(start_session(&dev)){
		ERROR("read_app_info");
		goto exit;
	}

/******************************************************************************/

	fprintf(stdout, "a: acd.app_idx\nc: acd.code_loc\nd: acd.db_loc\n"
		"i: acd.code_invalid\nm: acd.db_modified\nI: acd.db_invalid\n"
		"p: acd.passwd_req\nb: acd.user_banner\nidx "
		"acdimIpb type inst  asd  add stat refr bann code banner\n");
	for(i = 0; i < NUM_APPS; i++){
		if(!dev.app[i].acd.app_idx)
			continue;
		fprintf(stdout, "%2d: %d%d%d%d%d%d%d%d   %02x   %02x %04x %04x %04x %04x %04x %04x %s\n", i,
				dev.app[i].acd.app_idx,
				dev.app[i].acd.code_loc,
				dev.app[i].acd.db_loc,
				dev.app[i].acd.code_invalid,
				dev.app[i].acd.db_modified,
				dev.app[i].acd.db_invalid,
				dev.app[i].acd.passwd_req,
				dev.app[i].acd.user_banner,

				dev.app[i].acb.app_type,
				dev.app[i].acb.app_inst,

				dev.app[i].acb.asd_addr,
				dev.app[i].acb.add_addr,
				dev.app[i].acb.state_mgr_addr,
				dev.app[i].acb.refresh_addr,
				dev.app[i].acb.banner_addr,
				dev.app[i].acb.code_addr,
				dev.app[i].banner
		);
	}

	fprintf(stdout, "sync id: %s\n", dev.icb.sync_id);

/******************************************************************************/
	if(exit_session(&dev)){
		ERROR("exit_session");
		goto exit;
	}

	ret = 0;
exit:
	close_dev(&dev);

	exit(ret);
}
Example #7
0
void convert_datacube(char *in,char *out)
{
  E3D_file src,dst;
  SPECTRUM sig, noise, *rms, *signal;
  SPAXEL *spaxels;
  E3Dspec_desc *ptdesc;
  int i, specId, nbspax, npix=-1;
  double start = -1, end;
  char extname[lg_name+1], tablename[lg_name+1];

  if (open_E3D_file(&src,in,"I")<0) {
    print_error("Cannot open input file %s",in);
    exit_session(ERR_OPEN);
  }
  else {
    if (has_common_bounds(&src)) {
      get_common_param(&src,&npix,&start,&end);
    }
    if (create_E3D_file(&dst,out,npix,start,src.step,src.data_type,src.ident,src.cunit) < 0) {
      close_E3D_file(&src);
      print_error("Cannot create output file %s",out);
      exit_session(ERR_CREAT);
    }
    else {
      signal = NULL;
      rms = NULL;
      ptdesc = NULL;
      if (src.signal != NULL) {
        signal = &sig;
        ptdesc = src.signal;
      }
      if (src.noise != NULL) {
        rms = &noise;
        ptdesc = src.noise;
      }
      else { 
        if (src.signal == NULL) {
          close_E3D_file(&src);
          print_error("Inconsistent input file (no spectra inside)");
          exit_session(ERR_BAD_PARAM);
        }
      }

      reset_print_progress();
      for (i=0;i<src.nbspec;i++) {
        print_progress("Convert datacube: ", (int)((100*i)/src.nbspec),1);
        specId = ptdesc[i].specId;
        get_E3D_spec(&src,signal,rms,specId);
        set_quality(rms);
        put_E3D_spec(&dst,signal,rms,specId);
        nbspax = get_E3D_spaxels(&src,specId,&spaxels);
        put_E3D_spaxels(&dst,specId,nbspax,spaxels);
      }
      if (src.data_format == TIGER_FORMAT) {	/* set groups */
        set_tiger_group(&src);
      }
      put_E3D_groups(&dst,src.ngroups,src.groups);
      print_progress("Convert datacube: ", (int)100,1);
	  
      CP_non_std_desc(&src,&dst);
      close_E3D_file(&src);
      close_E3D_file(&dst);

      printf("\n");

      if (src.data_format == TIGER_FORMAT) {	/* save table in special extension */
        get_science_table_name(in,tablename);
	append_tbl_extension(out, OutputIO.basic_io);
        sprintf(extname,"%s[%s]",out,E3D_TIGER_EXT);
        convert_table(tablename,extname);
      }
      if (dst.data_format == TIGER_FORMAT) {	/* save science extension as table */
        strcpy(tablename,out);
	remove_file_extension(tablename);
        sprintf(extname,"%s[%s]",in,E3D_TIGER_EXT);
        convert_table(extname,tablename);
      }
    }
  }
}
Example #8
0
int main(int argc, char **argv)
{
	TIGERfile image;
	SPECTRUM signal,noise;
	SLICE s_signal;
	char **argval, **arglabel, toto[50];
	int nolens, i,j, npix=300, nb_spec=100, status, nol[105];
	double start, step;
	short sval;
	long lval;
	float fval, x[105],y[105];
	double dval;

	step = 1;
	start = 1;

	printf("IOLIB routines for Tiger format:\n\n");
	init_session(argv,argc,&arglabel,&argval);
/*	set_control_level(WARNING); */

	printf("\nOnly signal spectra:\n\n");

	/* 1 - Type SHORT */

	for (nolens=1;nolens<=nb_spec+5;nolens++) {
		nol[nolens-1] = nolens;
		x[nolens-1] = (float)nolens;
		y[nolens-1] = (float)nolens;
	}

	printf("Image creation (type of storage = Short) ...");
	fflush(stdout);
	create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT,
		"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	printf("Writing into created image ...");
	fflush(stdout);
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);

	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(short)(nolens*j));
		}
		put_tiger_spec(&image,&signal,NULL,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	WR_desc(&image,"TOTO",CHAR,10,"tototototo");
	fval = 25.6;
	WR_desc(&image,"FTOTO",FLOAT,1,&fval);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	image.history[0] = '\0';
	open_tiger_frame(&image,"s_chk_tiger_io","I");
	printf("Ok\n");
	printf("%s\n",image.history);

	nolens = (int)(nb_spec/2);
	status = exist_lens(&image,nolens);
	if (status < 0) {
		printf("unable to locate signal for lens #%d\n",nolens);
		fflush(stdout);
		return(-1);
	} 

	printf("Reading image values slice by slice ...");
	fflush(stdout);
	for (i=0;i<npix;i++) {
		get_tiger_slice(&image,&s_signal,NULL,i); 
		for (j=0;j<s_signal.npts;j++) {
			nolens = s_signal.specId[j];
			sval = (short)RD_slice(&s_signal,j);
			if (sval != (short)(nolens*i)) {
				printf("FATAL : Unexpected values in image\n");
				printf("expected value = %d, got %d\n",(short)(nolens*i),sval);
				printf("at slice %d, pixel %d\n",i,j);
				return(-1);
			}
		}
	}
	printf("Ok\n");
	RD_desc(&image,"TOTO",CHAR,10,toto);
	printf("TOTO = %s\n",toto);
	printf("Closing image ...");
	close_tiger_frame(&image);
	printf("Ok\n");
/*
	printf("Opening previous image in IO mode...");
	fflush(stdout);
	open_tiger_frame(&image,"s_chk_tiger_io","IO");
	printf("Ok\n");
	printf("Writing image values spectrum by spectrum ...");
	fflush(stdout);
	for (nolens=nb_spec+1;nolens<=nb_spec+5;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(short)(nolens*j));
		}
		put_tiger_spec(&image,&signal,NULL,nolens);
	}
	printf("Ok\n");
	close_tiger_frame(&image);
	printf("Opening previous image ...");
	open_tiger_frame(&image,"s_chk_tiger_io","I");
	printf("Ok\n");
	printf("Reading image values spectrum by spectrum ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec+5;nolens++) {
		get_tiger_spec(&image,&signal,NULL,nol[nolens-1]); 
		for (j=0;j<signal.npts;j++) {
			sval = (short)RD_spec(&signal,j);
			if (sval != (short)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				printf("expected value = %d, got %d\n",(short)(nolens*j),sval);
				printf("at nolens %d, pixel %d\n",nolens,j);
				return(-1);
			}
		}
	}
	printf("Ok\n");
	close_tiger_frame(&image);

*/
	printf("Deleting previous image ...");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	printf("Image creation slice by slice (type of storage = Short) ...");
	fflush(stdout);
	create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT,
		"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	if (has_common_bounds(&image))
		printf("Common bounds Ok\n");
	printf("Setting lenses coordinates ...");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Ok\n");
	printf("Writing into created image ...");
	fflush(stdout);
	for (i=0;i<npix;i++) {
		init_new_tiger_slice(&image,&s_signal,nb_spec); 
		for (j=0;j<s_signal.npts;j++) {
			nolens = s_signal.specId[j];
			WR_slice(&s_signal,j,(short)(nolens*i));
		}
		put_tiger_slice(&image,&s_signal,NULL,i);
	}
	printf("Ok\n");
	printf("Closing image ...");
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"s_chk_tiger_io","I");
	printf("Ok\n");
	get_lenses_no(&image,nol);
	printf("Reading image values spectrum by spectrum ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,NULL,nol[nolens-1]); 
		for (j=0;j<signal.npts;j++) {
			sval = (short)RD_spec(&signal,j);
			if (sval != (short)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				printf("expected value = %d, got %d\n",(short)(nolens*j),sval);
				printf("at nolens %d, pixel %d\n",nolens,j);
				return(-1);
			}
		}
	}
	printf("Ok\n");
	close_tiger_frame(&image);

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 2 - Type LONG */

	printf("Image creation (type of storage = Long) ...");
	fflush(stdout);
	create_tiger_frame(&image,"l_chk_tiger_io",-1,start,step,LONG,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(long)(nolens*j));
		}
		put_tiger_spec(&image,&signal,NULL,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"l_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values spectrum by spectrum ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,NULL,nolens); 
		for (j=0;j<signal.npts;j++) {
			lval = (long)RD_spec(&signal,j);
			if (lval != (long)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Reading image values slice by slice ...");
	fflush(stdout);
	for (i=0;i<npix;i++) {
		get_tiger_slice(&image,&s_signal,NULL,i); 
		for (j=0;j<s_signal.npts;j++) {
			nolens = s_signal.specId[j];
			lval = (long)RD_slice(&s_signal,j);
			if (lval != (long)(nolens*i)) {
				printf("FATAL : Unexpected values in image\n");
				printf("expected value = %ld, got %ld\n",(long)(nolens*i),lval);
				printf("at slice %d, pixel %d\n",i,j);
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 3 - Type FLOAT */

	printf("Image creation (type of storage = Float) ...");
	fflush(stdout);
	create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(float)(nolens*j));
		}
		put_tiger_spec(&image,&signal,NULL,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"f_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,NULL,nolens); 
		for (j=0;j<signal.npts;j++) {
			fval = (float)RD_spec(&signal,j);
			if (fval != (float)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 4 - Type DOUBLE */

	printf("Image creation (type of storage = Double) ...");
	fflush(stdout);
	create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(double)(nolens*j));
		}
		put_tiger_spec(&image,&signal,NULL,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"d_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,NULL,nolens); 
		for (j=0;j<signal.npts;j++) {
			dval = (double)RD_spec(&signal,j);
			if (dval != (double)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

#ifdef nonEURO3D

	printf("Only noise spectra:\n\n");

	/* 1 - Type SHORT */

	printf("Image creation (type of storage = Short) ...");
	fflush(stdout);
	create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT,
		"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<noise.npts;j++) {
			WR_spec(&noise,j,(short)(nolens*j));
		}
		put_tiger_spec(&image,NULL,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"s_chk_tiger_io","I");
	printf("Ok\n");
	nolens = (int)(nb_spec/2);
	status = exist_lens(&image,nolens);
	if (status < 0) {
		printf("unable to locate noise from lens no %d\n",nolens);
		fflush(stdout);
		return(-1);
	} 

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,NULL,&noise,nolens); 
		for (j=0;j<noise.npts;j++) {
			sval = (short)RD_spec(&noise,j);
			if (sval != (short)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image); 
	printf("Ok\n\n");

	/* 2 - Type LONG */

	printf("Image creation (type of storage = Long) ...");
	fflush(stdout);
	create_tiger_frame(&image,"l_chk_tiger_io",npix,start,step,LONG,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<noise.npts;j++) {
			WR_spec(&noise,j,(long)(nolens*j));
		}
		put_tiger_spec(&image,NULL,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"l_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,NULL,&noise,nolens); 
		for (j=0;j<noise.npts;j++) {
			lval = (long)RD_spec(&noise,j);
			if (lval != (long)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 3 - Type FLOAT */

	printf("Image creation (type of storage = Float) ...");
	fflush(stdout);
	create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<noise.npts;j++) {
			WR_spec(&noise,j,(float)(nolens*j));
		}
		put_tiger_spec(&image,NULL,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"f_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,NULL,&noise,nolens); 
		for (j=0;j<noise.npts;j++) {
			fval = (float)RD_spec(&noise,j);
			if (fval != (float)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 4 - Type DOUBLE */

	printf("Image creation (type of storage = Double) ...");
	fflush(stdout);
	create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<noise.npts;j++) {
			WR_spec(&noise,j,(double)(nolens*j));
		}
		put_tiger_spec(&image,NULL,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"d_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,NULL,&noise,nolens); 
		for (j=0;j<noise.npts;j++) {
			dval = (double)RD_spec(&noise,j);
			if (dval != (double)(nolens*j)) {
				printf("FATAL : Unexpected values in image\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");
#endif
	printf("Signal & noise spectra:\n\n");

	/* 1 - Type SHORT */

	printf("Image creation (type of storage = Short) ...");
	fflush(stdout);
	create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT,
		"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(short)(nolens*j));
			WR_spec(&noise,j,(short)(nolens*j));
		}
		put_tiger_spec(&image,&signal,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"s_chk_tiger_io","I");
	printf("Ok\n");
	nolens = (int)(nb_spec/2);
	status = exist_lens(&image,nolens);
	if (status < 0) {
		printf("unable to locate signal from lens no %d\n",nolens);
		fflush(stdout);
		return(-1);
	} 

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,&noise,nolens); 
		for (j=0;j<signal.npts;j++) {
			sval = (short)RD_spec(&signal,j);
			if (sval != (short)(nolens*j)) {
				printf("FATAL : Unexpected values in signal\n");
				return(-1);
			}
			sval = (short)RD_spec(&noise,j);
			if (sval != (short)(nolens*j)) {
				printf("FATAL : Unexpected values in noise\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 2 - Type LONG */

	printf("Image creation (type of storage = Long) ...");
	fflush(stdout);
	create_tiger_frame(&image,"l_chk_tiger_io",npix,start,step,LONG,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(long)(nolens*j));
			WR_spec(&noise,j,(long)(nolens*j));
		}
		put_tiger_spec(&image,&signal,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"l_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,&noise,nolens); 
		for (j=0;j<signal.npts;j++) {
			lval = (long)RD_spec(&signal,j);
			if (lval != (long)(nolens*j)) {
				printf("FATAL : Unexpected values in signal\n");
				return(-1);
			}
			lval = (long)RD_spec(&noise,j);
			if (lval != (long)(nolens*j)) {
				printf("FATAL : Unexpected values in noise\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 3 - Type FLOAT */

	printf("Image creation (type of storage = Float) ...");
	fflush(stdout);
	create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(float)(nolens*j));
			WR_spec(&noise,j,(float)(nolens*j));
		}
		put_tiger_spec(&image,&signal,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"f_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,&noise,nolens); 
		for (j=0;j<signal.npts;j++) {
			fval = (float)RD_spec(&signal,j);
			if (fval != (float)(nolens*j)) {
				printf("FATAL : Unexpected values in signal\n");
				return(-1);
			}
			fval = (float)RD_spec(&noise,j);
			if (fval != (float)(nolens*j)) {
				printf("FATAL : Unexpected values in noise\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	/* 4 - Type DOUBLE */

	printf("Image creation (type of storage = Double) ...");
	fflush(stdout);
	create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL);
	printf("Ok\n");
	set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y);
	printf("Writing into created image ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		init_new_tiger_spec(&image,&signal,npix,start); 
		init_new_tiger_spec(&image,&noise,npix,start); 
		for (j=0;j<signal.npts;j++) {
			WR_spec(&signal,j,(double)(nolens*j));
			WR_spec(&noise,j,(double)(nolens*j));
		}
		put_tiger_spec(&image,&signal,&noise,nolens);
	}
	printf("Ok\n");

	printf("Saving created image ...");
	fflush(stdout);
	close_tiger_frame(&image);
	printf("Ok\n");

	printf("Opening previous image ...");
	fflush(stdout);
	open_tiger_frame(&image,"d_chk_tiger_io","I");
	printf("Ok\n");

	printf("Reading image values ...");
	fflush(stdout);
	for (nolens=1;nolens<=nb_spec;nolens++) {
		get_tiger_spec(&image,&signal,&noise,nolens); 
		for (j=0;j<signal.npts;j++) {
			dval = (double)RD_spec(&signal,j);
			if (dval != (double)(nolens*j)) {
				printf("FATAL : Unexpected values in signal\n");
				return(-1);
			}
			dval = (double)RD_spec(&noise,j);
			if (dval != (double)(nolens*j)) {
				printf("FATAL : Unexpected values in noise\n");
				return(-1);
			}
		}
	}
	printf("Ok\n");

	printf("Deleting previous image ...");
	fflush(stdout);
	delete_tiger_frame(&image);
	printf("Ok\n\n");

	exit_session(0);
	return(0);
}
Example #9
0
int
main(int argc, char **argv)
{
	int nocol_short, nocol_long, nocol_float, nocol_double;
	int status;
	char **argval, **arglabel;
	int i, nbrow = NBROW, nbcol=NBCOL, sel[NBROW];
	short sval, s_colbuf[NBROW], s_key;
	long lval, l_colbuf[NBROW];
	float fval, f_colbuf[NBROW];
	double dval, d_colbuf[NBROW];
	char ident[20];
	char selection[30];
	TABLE table;

						/*  init_session() checking */	


	printf("IOLIB environment routines :\n\n");
	fflush(stdout);
	init_session(argv,argc,&arglabel,&argval);
/* 	set_control_level(WARNING); */

	printf("Table creation ...");
	fflush(stdout);
	strcpy(ident,"Dummy table");
	create_table(&table,"chk_tbl_io",nbrow,nbcol,'W',ident);
	printf("Ok\n");
	fflush(stdout);
/*
	printf("Column creation ...(format Characters) ");
	fflush(stdout);
	nocol_char = create_col(&table,":TEXT",CHAR,'N',"A20",NULL);
	if (nocol_char < 0) {
		printf("Problem creating column TEXT, status returned = %d\n", nocol_char);
		exit (-1);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Writing into created column ...");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		sprintf(text,"String no %2d",i);
		WR_tbl(&table,i,nocol_char,text);
	}
	printf("Ok\n");
	fflush(stdout);
*/
	printf("Column creation ...(format Short) ");
	fflush(stdout);
	nocol_short = create_col(&table,":SHORT",SHORT,'N',"I2",NULL);
	if (nocol_short < 0) {
		printf("Problem creating column SHORT, status returned = %d\n", nocol_short);
		exit (-1);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Writing into created column ...");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		sval = (short)i;
		WR_tbl(&table,i,nocol_short,&sval);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Column creation ...(format Long) ");
	fflush(stdout);
	nocol_long = create_col(&table,":LONG",LONG,'N',"I4",NULL);
	if (nocol_long < 0) {
		printf("Problem creating column LONG, status returned = %d\n", nocol_long);
		exit (-1);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Writing into created column ...");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		lval = (long)i;
		WR_tbl(&table,i,nocol_long,&lval);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Column creation ...(format Float) ");
	fflush(stdout);
	nocol_float = create_col(&table,":FLOAT",FLOAT,'N',"F9.6",NULL);
	if (nocol_float < 0) {
		printf("Problem creating column FLOAT, status returned = %d\n", nocol_float);
		exit (-1);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Writing into created column ...");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		fval = (float)i;
		WR_tbl(&table,i,nocol_float,&fval);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Column creation ...(format Double) ");
	fflush(stdout);
	nocol_double = create_col(&table,":DOUBLE",DOUBLE,'N',"E15.5",NULL);
	if (nocol_double < 0) {
		printf("Problem creating column DOUBLE, status returned = %d\n", nocol_double);
		exit (-1);
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Writing into created column ...");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		dval = (double)i;
		WR_tbl(&table,i,nocol_double,&dval);
	}
	printf("Ok\n\n");
	fflush(stdout);

	for (i=0; i<nbrow; i++) {
		if (i%2 == 0)
			sel[i] = 0;
		else
			sel[i] = 1;
	}
	write_selection(&table,sel,"check_selection");

	printf("Saving created table ...");
	fflush(stdout);
	close_table(&table);
	printf("Ok\n");
	fflush(stdout);

	printf("Opening previous table ...");
	fflush(stdout);
	open_table(&table,"chk_tbl_io","I");
	printf("Ok\n");
	fflush(stdout);

	printf("Handling selection ...");
	fflush(stdout);
	handle_select_flag(&table,'W',selection);
	printf("Ok\n");
	fflush(stdout);

	printf("Reading columns info ...");
	fflush(stdout);
/*	nocol_char = get_col_ref(&table,":TEXT"); */
	nocol_short = get_col_ref(&table,":SHORT");
	nocol_long = get_col_ref(&table,":LONG");
	nocol_float = get_col_ref(&table,":FLOAT");
	nocol_double = get_col_ref(&table,":DOUBLE");
	printf("Ok\n");
	nbrow = table.row;
/*
	printf("Reading previous column ...(format Characters) ");
	fflush(stdout);
	RD_col(&table,nocol_char,c_colbuf);
	for (i=0; i<nbrow; i++) {
		sprintf(text,"String no %2d",i);
		if (strcmp(text,(c_colbuf+i*21)) != 0) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");

	printf("Reading previous column item by item  ...(format Characters) ");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		RD_tbl(&table,i,nocol_char,Rtext);
		sprintf(text,"String no %2d",i);
		if (strcmp(text,Rtext) != 0) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			printf("*%s* is not *%s*\n", Rtext, text);
	 	return(-1); 
		}
	}
	printf("Ok\n");
*/
	printf("Reading previous column ...(format Short) ");
	fflush(stdout);
	s_colbuf[0] = 0;
	RD_col(&table,nocol_short,s_colbuf);
	printf("Ok\n");

	printf("Searching for no 501 ... ");
	fflush(stdout);
	
	s_key = 501;
	status = search_in_col(&table,nocol_short,&s_key);
	if (status >= 0)
		printf("Found in line %d\n",status);
	else {
		printf("Unable to find it\n");
		return(-1);
	}
	
	printf("Searching for no 500 ... ");
	fflush(stdout);
	
	s_key = 500;
	status = search_in_col(&table,nocol_short,&s_key);
	if (status >= 0)
		printf("Found in line %d\n",status);
	else {
		printf("Unable to find it (not selected)\n");
	}

	for (i=0; i<nbrow; i++) {
		if (s_colbuf[i] != (short)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			printf("Read %d, Expected %d\n",s_colbuf[i],2*i+1);
			return(-1);
		}
	}
	printf("Ok\n");
	printf("Reading previous column item by item ...(format Short) ");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		RD_tbl(&table,i,nocol_short,&sval);
		if (sval != (short)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");

	printf("Reading previous column ..(format Long) ");
	fflush(stdout);
	RD_col(&table,nocol_long,l_colbuf);
	for (i=0; i<nbrow; i++) {
		if (l_colbuf[i] != (long)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");
	printf("Reading previous column item by item ...(format Long) ");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		RD_tbl(&table,i,nocol_long,&lval);
		if (lval != (long)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");

	printf("Reading previous column ...(format Float) ");
	fflush(stdout);
	RD_col(&table,nocol_float,f_colbuf);
	for (i=0; i<nbrow; i++) {
		if (f_colbuf[i] != (float)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");
	printf("Reading previous column item by item ...(format Float) ");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		RD_tbl(&table,i,nocol_float,&fval);
		if (fval != (float)(2*i+1)) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");

	printf("Reading previous column ..(format Double) ");
	fflush(stdout);
	RD_col(&table,nocol_double,d_colbuf);
	for (i=0; i<nbrow; i++) {
		if (ABS(d_colbuf[i] - (double)(2*i+1)) > 1e-8) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");
	printf("Reading previous column item by item ...(format Double) ");
	fflush(stdout);
	for (i=0; i<nbrow; i++) {
		RD_tbl(&table,i,nocol_double,&dval);
		if (ABS(dval - (double)(2*i+1)) > 1e-8) {
			printf("FATAL : Unexpected values in table, line %d\n",i);
			return(-1);
		}
	}
	printf("Ok\n");
	fflush(stdout);

	printf("Deleting previous table ...");
	fflush(stdout);
	delete_table(&table);
	printf("Ok\n");
	fflush(stdout);

	exit_session(0);
	return(0);
}