Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #76933

Challenge to convert a simple IDL code into Python

From Cleo Drakos <cleo21drakos@gmail.com>
Date 2014-08-25 00:38 +0900
Subject Challenge to convert a simple IDL code into Python
Newsgroups comp.lang.python
Message-ID <mailman.13377.1408899960.18130.python-list@python.org> (permalink)

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

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

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Challenge to convert a simple IDL code into Python Cleo Drakos <cleo21drakos@gmail.com> - 2014-08-25 00:38 +0900

csiph-web