HELP! What's wrong here ??? I don't get it!

christian werner chr_werner at gmx.de
Wed Nov 7 22:25:06 CET 2001


Hello python coders :)

I'm in desperade need for a hint from you guys concerning this junk of code
I produced. 
I JUST DON'T GET IT !!! 
I'm sorry about the length of this thread, but I figured that the more
detailed I am about my problem, the sooner you might be able to find my stupid
error !!!

Maybe it's easier if I first explain what I intent to do ;):

1.) I try to read a file line by line & transform it into an array (1d)

1.) the IF statement determins, what type od data is given (done by the type
variable)
     t = temperature, p = precipitation, r = radiation

2.) I got this one to run for the t and r case, so that's fine (code works
as expected)
     basically line 2 - 7 do a read and transform to the data, a3 will be
returned by my
     function - that's cool...

3.) for the precipitation I have to substract the previous timestep from the
actual one
     (t = t(0) - t(-1))  -  I named the previous array pa ;), since I can't
use the data as is

     example: a array equals
                  at t(0)    [10, 12, 15, 5, 10, 2, 23, ...]
                  at t(-1)   [5, 7, 10, 4, 10, 1, 21, ...]

     than the value for t(0) corrected should look like t(0) - t(-1):
                               [5, 6, 5, 11, 1, 0, 1, 2, ...]
                  
4.) the main look iterates 24times (1 to 24) representing 24h of a day.
Since hour = 1  
     has no previous value t(-1) 0 0  t(-1), I assign pa = [0, 0, 0, 0, 0,
...] before the loop
     starts (line 0)

then:
      -> read line into 1d array
      -> reshape to 2d array
      -> subtract array of last timestep
      -> write corrected array to day-array (a3 called)

If I call the function with type = t or type = r I get the right results...
If I call the function with type = p I get this wired result below:

hour 1: takes first line, substracts 0s'   = OK!
           a = 1.31 / pa = 0 / a2 = 1.31 / new pa = 1.31

hour 2: a has the same value as in previous timestep, since the function
           assigns pa = a in the loop I get '0' for the a2 array
           a = 1.31 (again!!! - why?) / pa = 0 / a2 = 1.31 / new pa = 1.31

hour 3: like hour 2
hour 3: like hour 2
etc.

------my code subset -----
0    day = 7                                  # just any day 
0    ln=(day*24)-23                       # locate position of 1st line for
hour1 of day
                                                  # file contains continous
data:
                                                  # hour 1: line1
                                                  # hour 2: line2 (...)
                                                  # hour 24: line24 (...)
                                                  # hour 1: line 25 [day2
starting]
0    pa = zeros((x,y), Float)

1    if (type == 't' or type == 'r'):          
2       for hour in range(1,25,1):
3            print hour,
4            line = linecache.getline(file, ln)             # read line
5            a = array(map(float, string.split(line)))   # map line to 1d
array
6            a = reshape(a, (x,y))                          # reshape to 2d
array
7            a3[(hour-1)] = a[:,::-1]                      # reverse fortran
order of array and
8                                                                  # put
into 3d array (day)
9            ln +=1
10      linecache.clearcache()
11
12   elif (type == 'p'):
13       for hour in range(1,25,1):
14           line = linecache.getline(file, ln)             # read line
15           a = array(map(float, string.split(line)))   # map line to 1d
array
16           a = reshape(a, (x,y))                          # reshape to 2d
array
17           a2 = a - pa                                       # a2 =
corrected array
18           pa = a                                              # this
input array a will be
19                                                                  # used
in the next iteration as pa
20
21           a3[(hour-1)] = a[:,::-1]                   # reverse fortran
order off array and
22                                                              # put into
3d array (day)
23           ln += 1
24       linecache.clearcache() 

I'm trying to solve this crap for days now and am getting really pissed off
with it... I just don't get it. So please, please,please - where is my error
???

I thinks it either always reads the same line ('p' case) - but why? Is there
a clearcache missing ?

Thanks a lot folks, I really appreciate the help I get from this great list
!!!

cheers,
christian

-- 
--------------------------
christian werner  

Loisachstraße 69
82491 Grainau

+49 (0)8821 727799

Heimatanschrift:   
Gartenstraße 15   
97737 Gemünden     

+49 (0)9351 8435   

mobile: 0179 4559242       
email:  chr_werner at gmx.de
http:\\www.christianw.de

GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net





More information about the Python-list mailing list