Changeset 60a4e71 in sasview


Ignore:
Timestamp:
Sep 11, 2018 2:50:23 AM (7 days ago)
Author:
GitHub <noreply@…>
Parents:
343d7fd (diff), 8e674ccf (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Ingo Breßler <dev@…> (09/11/18 02:50:23)
git-committer:
GitHub <noreply@…> (09/11/18 02:50:23)
Message:

Merge 8e674ccf5c2f4e357295344dc59f2796cd7de805 into 343d7fd60f1eda3abfbbd120c048168e649876be

Location:
src/sas/qtgui
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/MainWindow/DataExplorer.py

    r2b8286c r8e674ccf  
    9595        self.communicator.activeGraphsSignal.connect(self.updateGraphCount) 
    9696        self.communicator.activeGraphName.connect(self.updatePlotName) 
    97         self.communicator.plotUpdateSignal.connect(self.updatePlot) 
     97        self.communicator.plotUpdateSignal.connect(self.displayData) 
    9898        self.communicator.maskEditorSignal.connect(self.showEditDataMask) 
    9999        self.communicator.extMaskEditorSignal.connect(self.extShowEditDataMask) 
     
    572572        # Each fitpage contains the name based on fit widget number 
    573573        fitpage_name = "" if id is None else "M"+str(id) 
    574         new_plots = [] 
     574        # groups plots which move into an own window 
     575        new_plots = dict(int = [], res = [], pd = []) 
    575576        for item, plot in plots.items(): 
    576             if self.updatePlot(plot) and filename != plot.name: 
     577            if (self.updatePlot(plot) and filename != plot.name) or plot.hidden: 
    577578                continue 
    578579            # Don't plot intermediate results, e.g. P(Q), S(Q) 
    579580            match = GuiUtils.theory_plot_ID_pattern.match(plot.id) 
    580             # 2nd match group contains the identifier for the intermediate result, if present (e.g. "[P(Q)]") 
     581            # 2nd match group contains the identifier for the intermediate 
     582            # result, if present (e.g. "[P(Q)]") 
    581583            if match and match.groups()[1] != None: 
    582584                continue 
    583             # Don't include plots from different fitpages, but always include the original data 
     585            # Don't include plots from different fitpages, 
     586            # but always include the original data 
    584587            if fitpage_name in plot.name or filename == plot.name: 
    585588                # 'sophisticated' test to generate standalone plot for residuals 
     589                # this should be done by some kind of grouping by lists 
     590                # which helps to indicate which go into a single plot window 
    586591                if 'esiduals' in plot.title: 
    587                     plot.yscale='linear' 
    588                     self.plotData([(item, plot)]) 
     592                    plot.yscale = 'linear' 
     593                    new_plots['res'].append((item, plot)) 
     594                elif 'olydispersity' in plot.title: 
     595                    plot.yscale = 'linear' 
     596                    new_plots['pd'].append((item, plot)) 
    589597                else: 
    590                     new_plots.append((item, plot)) 
    591  
    592         if new_plots: 
    593             self.plotData(new_plots) 
     598                    new_plots['int'].append((item, plot)) 
     599 
     600        # create entirely new plots for those which could not be updated 
     601        for plots in new_plots.values(): 
     602            if len(plots): 
     603                self.plotData(plots) 
    594604 
    595605    def displayData(self, data_list, id=None): 
     
    597607        Forces display of charts for the given data set 
    598608        """ 
    599         plot_to_show = data_list[0] 
    600         # passed plot is used ONLY to figure out its title, 
    601         # so all the charts related by it can be pulled from  
    602         # the data explorer indices. 
    603         filename = plot_to_show.filename 
    604         self.displayFile(filename=filename, is_data=plot_to_show.is_data, id=id) 
     609        for plot_to_show in data_list: 
     610            # may there be duplicates? list(OrderedDict.fromkeys(data_list)) 
     611            # passed plot is used ONLY to figure out its title, 
     612            # so all the charts related by it can be pulled from 
     613            # the data explorer indices. 
     614            filename = plot_to_show.filename 
     615            self.displayFile(filename=filename, is_data=plot_to_show.is_data, id=id) 
    605616 
    606617    def addDataPlot2D(self, plot_set, item): 
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    rf3cc979 r60a4e71  
    10881088            return True 
    10891089 
     1090    def updateDataVisibility(self, updateOnly): 
     1091        self.dataUpdateOnly = updateOnly 
     1092        for dataitem in self.all_data: 
     1093            data = GuiUtils.dataFromItem(dataitem) 
     1094            data.hidden = self.dataUpdateOnly 
     1095            self.updateModelIndex(data) 
     1096 
    10901097    def updateData(self): 
    10911098        """ 
     
    10931100        """ 
    10941101        # Update the chart 
     1102        self.updateDataVisibility(True) 
    10951103        if self.data_is_loaded: 
    10961104            self.cmdPlot.setText("Show Plot") 
     
    18151823        self.cmdPlot.setText("Show Plot") 
    18161824        # Force data recalculation so existing charts are updated 
    1817         self.showPlot() 
     1825#        self.showPlot() 
    18181826        # This is an important processEvent. 
    18191827        # This allows charts to be properly updated in order 
    18201828        # of plots being applied. 
    1821         QtWidgets.QApplication.processEvents() 
     1829#        QtWidgets.QApplication.processEvents() 
    18221830        self.recalculatePlotData() 
    18231831 
     
    22722280        Create a model or theory index with passed Data1D/Data2D 
    22732281        """ 
     2282        # set some flag which decides if new plots should be created or 
     2283        # just existing ones updated, selectively hiding indiv. plot will also work 
     2284        fitted_data.hidden = getattr(self, 'dataUpdateOnly', True) 
    22742285        if self.data_is_loaded: 
    22752286            if not fitted_data.name: 
     
    24422453        for plot in new_plots: 
    24432454            self.communicate.plotUpdateSignal.emit([plot]) 
     2455        # enable plots to be shown next time if updateData() wasn't called 
     2456        self.updateDataVisibility(False) 
    24442457 
    24452458    def complete2D(self, return_data): 
  • src/sas/qtgui/Perspectives/Fitting/FittingUtilities.py

    r01b4877 rf3cc979  
    128128 
    129129            # Find param in volume_params 
    130             for p in parameters.form_volume_parameters: 
     130            poly_pars = parameters.form_volume_parameters 
     131            if is2D: 
     132                poly_pars += parameters.orientation_parameters 
     133            for p in poly_pars: 
    131134                if p.name != param.name: 
    132135                    continue 
  • src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py

    r4ea8020 rf712bf30  
    613613 
    614614        # Check that the number of rows increased 
     615        # (note that n == 1 by default in core_multi_shell so this increases index by 2) 
    615616        more_rows = self.widget._model_model.rowCount() - last_row 
    616         self.assertEqual(more_rows, 6) # 6 new rows: 2 params per index 
    617  
    618         # Back to 0 
     617        self.assertEqual(more_rows, 4) # 4 new rows: 2 params per index 
     618 
     619        # Set to 0 
    619620        self.widget.lstParams.indexWidget(func_index).setCurrentIndex(0) 
    620         self.assertEqual(self.widget._model_model.rowCount(), last_row) 
     621        self.assertEqual(self.widget._model_model.rowCount(), last_row - 2) # 2 fewer rows than default 
    621622 
    622623    def testPlotTheory(self): 
  • src/sas/qtgui/Plotting/PlotterBase.py

    rd9150d8 r343d7fd  
    1010 
    1111import matplotlib.pyplot as plt 
     12from matplotlib import rcParams 
    1213 
    1314DEFAULT_CMAP = pylab.cm.jet 
     
    2930        self.manager = manager 
    3031        self.quickplot = quickplot 
     32 
     33        # Set auto layout so x/y axis captions don't get cut off 
     34        rcParams.update({'figure.autolayout': True}) 
    3135 
    3236        #plt.style.use('ggplot') 
Note: See TracChangeset for help on using the changeset viewer.