# 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
???

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

```