problem with dim_pqsort?

From: Melissa Bukovsky <bukovsky_at_nyahnyahspammersnyahnyah>
Date: Thu, 17 Sep 2009 13:18:08 -0600

Hi,

I have a handful of scripts that started failing recently (or giving
very strange output). They used to work fine with the same dataset. I
finally think I've figured out why, but the answer doesn't seem to make
sense to me. I narrowed down the problem to the dim_pqsort function.
It seems that it doesn't sort the input variable if I use named
dimensions to reorder the input array anymore. Is this not supported
with this function anymore? There is still an example on the function
page using it. dim_pqsort_n solves this problem, but that requires
finding and replacing dim_pqsort in a number of my functions.

Instead of attaching my lengthy scripts, a command line test of the
problem with comments added is pasted below. If I'm wrong about this or
doing something wrong, please let me know.

Thanks,

Melissa

/fs/home/bukovsky/ncl/phd/my_ncl_funct % ncl
 Copyright (C) 1995-2009 - All Rights Reserved
 University Corporation for Atmospheric Research
 NCAR Command Language Version 5.1.1
 The use of this software is governed by a License Agreement.
 See http://www.ncl.ucar.edu/ for more details.
ncl 0> a = (/54,67,8,23,45,654,77/)
ncl 1> b = a
ncl 3> pv = dim_pqsort(a,2)
ncl 4> print(a)

Variable: a
Type: integer
Total Size: 28 bytes
            7 values
Number of Dimensions: 1
Dimensions and sizes: [7]
Coordinates:
(0) 8
(1) 23
(2) 45
(3) 54
(4) 67
(5) 77
(6) 654
;NO PROBLEM WITH A 1D ARRAY, TRY A 2D...

ncl 5> a2 = new( (/2,4/),float)
ncl 6> print(a2)

Variable: a2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [2] x [4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) -999
(0,1) -999
(0,2) -999
(0,3) -999
(1,0) -999
(1,1) -999
(1,2) -999
(1,3) -999

ncl 8> a2(0,0) = 54
ncl 9> a2(0,2) = 3
ncl 10> a2(0,3) = 455
ncl 12> a2(1,0) = 98
ncl 13> a2(1,1) = 5
ncl 14> a2(1,2) = 34
ncl 15> a2(1,3) = 0
ncl 16> b2 = a2 ;save a2
ncl 17> c2 = a2 ;save a2 again
ncl 18> print(a2)

;ORIGINAL 2D ARRAY
Variable: a2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [2] x [4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) 54
(0,1) -999
(0,2) 3
(0,3) 455
(1,0) 98
(1,1) 5
(1,2) 34
(1,3) 0
ncl 19> pv2 = dim_pqsort(a2,2)
ncl 20> print(a2)

;SORTING IT WITHOUT REORDERING THE DIMENSIONS WORKED...
Variable: a2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [2] x [4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) -999
(0,1) 3
(0,2) 54
(0,3) 455
(1,0) 0
(1,1) 5
(1,2) 34
(1,3) 98

;TRY AGAIN REORDERING WITH NAMED DIMS...
ncl 21> b2!0 = "time"
ncl 22> b2!1 = "nlsd"
ncl 23> pv22 = dim_pqsort(b2(nlsd|:,time|:),2)
ncl 24> print(b2)

;B2 2D ARRAY SORTED, BUT IT DIDN'T WORK (THERE IS NO DIFFERENCE FROM THE
ORIGINAL)
Variable: b2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [time | 2] x [nlsd | 4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) 54
(0,1) -999
(0,2) 3
(0,3) 455
(1,0) 98
(1,1) 5
(1,2) 34
(1,3) 0
ncl 25> print(c2)

;C2 IS STILL THE ORIGINAL (TO COMPARE ABOVE)
Variable: c2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [2] x [4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) 54
(0,1) -999
(0,2) 3
(0,3) 455
(1,0) 98
(1,1) 5
(1,2) 34
(1,3) 0

;SORT DIMINSION 0 USING dim_pqsort_n NOW
ncl 26> pv5 = dim_pqsort_n(b2,2,0)
ncl 27> print(b2)

;THIS TIME IT WORKED
Variable: b2
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [time | 2] x [nlsd | 4]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) 54
(0,1) -999
(0,2) 3
(0,3) 0
(1,0) 98
(1,1) 5
(1,2) 34
(1,3) 455

;TO SEE THIS MORE EASILY
ncl 28> print(b2(nlsd|:,time|:))

Variable: b2 (subsection)
Type: float
Total Size: 32 bytes
            8 values
Number of Dimensions: 2
Dimensions and sizes: [nlsd | 4] x [time | 2]
Coordinates:
Number Of Attributes: 1
  _FillValue : -999
(0,0) 54
(0,1) 98
(1,0) -999
(1,1) 5
(2,0) 3
(2,1) 34
(3,0) 0
(3,1) 455

;THIS IS A PROBLEM WITH 3D ARRAYS TOO, BUT I CUT THAT PART OUT (THOUGH
THAT IS WHAT THE ORIGINAL PROBLEM WAS WITH)

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Sep 17 2009 - 13:18:08 MDT

This archive was generated by hypermail 2.2.0 : Fri Sep 18 2009 - 15:36:15 MDT