# Re: problem with dim_pqsort?

From: Rick Brownrigg <brownrig_at_nyahnyahspammersnyahnyah>
Date: Thu, 17 Sep 2009 13:59:22 -0600

Hi Melissa,

Curiously, if the reordered b2 is assigned to a variable first, and
then dim_pqsort is called on that variable, things seem to work (see
any change in behavior. I will try to find out more.

originally developed?

Rick

...
b2!0 = "time"
b2!1 = "nlsd"
foo=b2(nlsd|:,time|:)
print(foo)

Variable: foo
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) 455
(3,1) 0
;;pv22 = dim_pqsort(b2(nlsd|:,time|:),2)
pv22 = dim_pqsort(foo, 2)
;;print(b2)
print(foo)

Variable: foo
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

On Sep 17, 2009, at 1:18 PM, Melissa Bukovsky wrote:

> 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
> this or
> doing something wrong, please let me know.
>
> Thanks,
>
> Melissa
>
>
> /fs/home/bukovsky/ncl/phd/my_ncl_funct % ncl
> 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

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

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