Opened 7 months ago

Closed 7 months ago

Last modified 7 months ago

#1212 closed defect (fixed)

Bug in Iqxqy plotting non rectangular / square matrices?

Reported by: ricardo Owned by: ricardo
Priority: major Milestone: SasView 4.2.1
Component: SasView Keywords: plot
Cc: Work Package: SasView Bug Fixing

Description

My users are complaining about SASView giving negative Y Axis for the following dataset:
https://pastebin.com/raw/buBiU5JG

This is what sasviews gives:

https://i.postimg.cc/R3TzMjSy/sasview.png
https://postimg.cc/R3TzMjSy

This is what I get with Matplotlib:

https://i.postimg.cc/nsxJfHJq/matplotlib.png
https://postimg.cc/nsxJfHJq

This data is not a squared Maxtrix (looks more a sparse matrix):

In [3]: data = np.genfromtxt(filepath, skip_header=2, names="qx, qy, iqxqy, err"
   ...: )

In [4]: qx, qy, iqxqy, err = data['qx'], data['qy'], data['iqxqy'], data['err']

In [5]: len(np.unique(qx))
Out[5]: 78

In [6]: len(np.unique(qy))
Out[6]: 94

In [7]: len(qx)
Out[7]: 6978

In [8]: len(qy)
Out[8]: 6978

In [9]: 78*94
Out[9]: 7332

Change History (8)

comment:1 Changed 7 months ago by ricardo

  • Summary changed from Bug in Iqxqy plotting not non rectangular / square matrices? to Bug in Iqxqy plotting non rectangular / square matrices?

comment:2 Changed 7 months ago by pkienzle

Confirmed the behaviour in current master.

The bug is in the assignment of qy values in the 2D data, not in the plotting. Plotting uses equal axes. Since the qx range of the displayed data is twice the qy range, the image appears horizontally stretched and vertically squashed.

The error is could be in the loader not preserving the qy values correctly, or in the conversion of the data into uniform steps in qx/qy, or most like to the final assignment of the qy axis to the 2D array.

comment:3 Changed 7 months ago by ricardo

Just did some debugging.

The problem appears to be in sas/sascalc/dataloader/file_reader_base_class.py FileReader::_remove_nans_in_data (line 218).

Before calling this function (line 273) both ymin and ymax are good.

comment:4 Changed 7 months ago by pkienzle

Look at line 278:

dataset.Ymax = np.max(dataset.qX_data)

comment:5 Changed 7 months ago by ricardo

  • Owner changed from mathieu to ricardo
  • Status changed from new to assigned

comment:6 Changed 7 months ago by ricardo

Thanks @pkienzle!

Anyone can merge this?

https://github.com/SasView/sasview/pull/197

comment:7 Changed 7 months ago by pkienzle

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:8 Changed 7 months ago by butler

  • Milestone changed from SasView 4.3.0 to SasView 4.2.1
Note: See TracTickets for help on using tickets.