[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

951213: Oddball netcdf file ?



>From: address@hidden (Dave Duling)
>Organization: National Institute of Health
>Keywords: 199512132213.AA10849 netCDF byte swapped

Dave,

>I have some data (Kratos Mass Spec Mach3) that is supposedly netcdf.
>However, ncdump does not recognize the data as netcdf.  I noticed that
>the data looks netcdf like and that if I change the first three bytes
>from FDC to CDF then ncdump opens the file and reports:
>       error:  ncopen: NC_xtypelen: Unknown type 13.
>
>The original file was transferred via binary ftp.  I then made an nfs link
>and just copied the file.  Same result.
>
>I have put the original file in a public accessible nfs directory if 
>anyone is that interested:  ...

OK, I mounted the drive; transferred the file; and verified your observation.

>I suppose I could take a binary editor and change the data type to one
>of the magic 6 types, but that doesnt seem kosher.  

No, this is not the problem.  Someone byte-swapped the file.  This
should never be done on an netCDF file since the netCDF always writes
the files in the IEEE standard format (big-endian).  The netCDF
interface then translates to the byte ordering needed on the machine on
which routines are being run.

I byte-swapped your file and verified that ncdump works correctly on it:

ncdump 1129950013.cdf | more
netcdf 1129950013 {
dimensions:
        _2_byte_stri = 2 ;
        _4_byte_stri = 4 ;
        _8_byte_stri = 8 ;
        _16_byte_str = 16 ;
        _32_byte_str = 32 ;
        _64_byte_str = 64 ;
        _128_byte_string = 128 ;
        _255_byte_string = 255 ;
        rang = 2 ;
        scan_num = 73 ;
        point_number = UNLIMITED ; // (1 currently)
        error_number = 1 ;
        instrument_numbe = 1 ;
 
variables:
        char error_lo(error_number, _64_byte_str) ;
        float actual_run_time_leng ;
        float actual_delay_tim ;
        long scan_ind(scan_num) ;
        long point_co(scan_num) ;
        double abcissa_valu(point_number) ;
                abcissa_valu:unit = "Z/M" ;
                abcissa_valu:add_offs = 0. ;
                abcissa_valu:scale_factor = 1. ;
                abcissa_valu:long_nam = "Z/M" ;
        long ordinate_val(point_number) ;
                ordinate_val:unit = "Total Counts" ;
                ordinate_val:add_offs = 0. ;
                ordinate_val:scale_factor = 1. ;
                ordinate_val:long_nam = "ADC UNIT" ;
        float a_d_sampling_rat(scan_num) ;
        short a_d_coaddition_facto(scan_num) ;
        float scan_acquisition_tim(scan_num) ;
                scan_acquisition_tim:non_uniform_sampling_fla = 0s ;
        float scan_duratio(scan_num) ;
        float inter_scan_t(scan_num) ;
        float resoluti(scan_num) ;
        double total_intens(scan_num) ;
 ...

I put the byte-swapped file out in our anonymous FTP pub directory for
you to grab.

>I have complained to the manufacturer of the system, but ...

You should inform them that they should not byte-swap the files.

Tom Yoksas