bugpyFormex - Bugs: bug #45354, principalSizes return Coords type...

 
 

bug #45354: principalSizes return Coords type instead of numpy array

Submitted by:  francesco <francio>
Submitted on:  Fri 19 Jun 2015 09:26:40 AM UTC  
 
Category:  Core Severity:  3 - Normal
Item Group:  Functionality error Status:  In Progress
Privacy:  Public Assigned to:  Benedict Verhegghe <bverheg>
Open/Closed:  Open

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Mon 23 May 2016 09:24:44 AM UTC, comment #3:

numpy.sort does not work on a Coords array, because it uses the sort() method of a numpy.ndarray and we have overloaded the sort() method in Coords.

The reason for overloading the sort() is that you normally do not want to sort coordinate x of point i with respect to coordinate z of point j. Thus we implemented a sort() method that sorts points, but leaves the order of the coordinates unchanged.

In your case, you want to sort the coordinates of a single point,
which seems useful because it is not really a point, but distances. To fix this, different level solutions are possible, and I would like some discussion about how to proceed.

1. Rename our Coords.sort method to e.g. sortPoints: this would restore the default sort.
+: Easy to do, solves everything.
-: Compatibility. Need to check existing code and add a warning to users.

2. Add the numpy arguments for sort to Coords.sort, and allow calling the original depending on proper arg values.
+: No change for user.
-: Not sure if it will work and solve everything. New tricky cases might evolve. It might hide problems with Coords/ndarray confusion which are now exposed.

3. Let the Coords.sizes() method return a numpy.ndarray instead of a Coords.
+: Easy to do.
-: Does not solve everything (users still can not do a numpy.sort on a Coords); some functionality is lost (sizes().x, sizes().xz, ...)

4. Let the user convert the Coords to a numpy.ndarray before sorting: sort(asarray(sizes()).
+: Nothing changes
-: Least user friendly.

I tend to implement solution 1. It would retain full numpy sort possibilities on a Coords (and who knows where that might become handy).

If anyone has other arguments to count in, please let me know.

Benedict Verhegghe <bverheg>
Project AdministratorIn charge of this item.
Fri 19 Jun 2015 11:11:20 AM UTC, comment #2:

The problem is that the sort does not seem to work on Coords array. My numpy version is (1.9.1)

a= sort(Coords([0,0,0]))

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 791, in sort
a.sort(axis, kind, order)
TypeError: sort() takes at most 2 arguments (4 given)

francesco <francio>
Project Member
Fri 19 Jun 2015 10:47:53 AM UTC, comment #1:

Now that would be something easy to fix, even for a junior member ;) So please do not leave everything for me to fix.

A wild guess: bbox() returns two points, in a Coords, sizes() takes the difference between the two.

On the other hand, I am not sure that we have to fix this. While not technically the coordinates of a point, sizes() can be considered a vector from one point to another. We used Coords in many cases as a class to store 3D vectors. SO as far as I am concerned, I would allow Coords to be used for anything that has 3 components (it is the only restriction built into the class).
The fact that it is a Coords also provides opportunities.
Does it create problems?

Benedict Verhegghe <bverheg>
Project AdministratorIn charge of this item.
Fri 19 Jun 2015 09:26:40 AM UTC, original submission:

We should change this, not sure at which level it occurs.

francesco <francio>
Project Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bverheg (Posted a comment)
  • -email is unavailable- added by francio (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

     

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2016-05-23 bverheg Item GroupNone => Functionality error
        StatusNone => In Progress
        Assigned toNone => bverheg
    2015-06-19 francio CategoryNone => Core

    Back to the top


    Powered by Savane 3.4