Challenge to convert a simple IDL code into Python

Cleo Drakos cleo21drakos at gmail.com
Sun Aug 24 11:38:18 EDT 2014


Here is IDL code:

pro read_binary_file

file = "3B42RT.2014010318.7.bin"

num_lon = 1440
num_lat = 480

data = {header: bytarr(num_lon*2), precip: intarr(num_lon,num_lat),
precip_error: intarr(num_lon,num_lat), $
      source_of_estimate: bytarr(num_lon,num_lat), precip_uncal:
intarr(num_lon,num_lat)}

close, 1
openr, 1, file
readu, 1, data
close, 1
precip = swap_endian(data.precip)
print, precip
end

My attempt in Python is here:

fname = '3B42RT.2014010318.7.bin'

num_lon = 1440
num_lat = 480
with open(fname, 'rb') as fi:
    contents = fi.read()
    precip = struct.unpack_from('>'+str(num_lon*num_lat)+'I',
contents, offset = num_lon*2)

    precip = np.array(data,dtype=int)
    precip data

But, the results obtained from two codes above are not same. The IDL code
is correct, but what is wrong with my python code?

Here is binary file I was working with:
ftp://trmmopen.gsfc.nasa.gov/pub/merged/3B42RT/3B42RT.2014010318.7.bin.gz


cleo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20140825/67c2b6fe/attachment.html>


More information about the Python-list mailing list