Changes in / [ecfe6b6:4e255d1] in sasview


Ignore:
Location:
src/sas/qtgui
Files:
5 edited

Legend:

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

    rb4d05bd rc7f259d  
    44import time 
    55import logging 
    6 import re 
    76 
    87from PyQt5 import QtCore 
     
    3736    # The controller which is responsible for managing signal slots connections 
    3837    # for the gui and providing an interface to the data model. 
    39  
    40     # This matches the ID of a plot created using FittingLogic._create1DPlot, e.g. 
    41     # "5 [P(Q)] modelname" 
    42     # or 
    43     # "4 modelname". 
    44     # Useful for determining whether the plot in question is for an intermediate result, such as P(Q) or S(Q) in the 
    45     # case of a product model; the identifier for this is held in square brackets, as in the example above. 
    46     theory_plot_ID_pattern = re.compile(r"^([0-9]+)\s+(\[(.*)\]\s+)?(.*)$") 
    4738 
    4839    def __init__(self, parent=None, guimanager=None, manager=None): 
     
    534525                self.active_plots[plot_id].replacePlot(plot_id, plot) 
    535526            else: 
    536                 # Don't plot intermediate results, e.g. P(Q), S(Q) 
    537                 match = self.theory_plot_ID_pattern.match(plot_id) 
    538                 # 2nd match group contains the identifier for the intermediate result, if present (e.g. "[P(Q)]") 
    539                 if match and match.groups()[1] != None: 
    540                     continue 
    541527                # 'sophisticated' test to generate standalone plot for residuals 
    542528                if 'esiduals' in plot.title: 
  • src/sas/qtgui/Perspectives/Fitting/FittingLogic.py

    rb4d05bd r87dfca4  
    132132        self._data.ymax = ymax 
    133133 
    134     def _create1DPlot(self, tab_id, x, y, model, data, component=None): 
    135         """ 
    136         For internal use: create a new 1D data instance based on fitting results. 
    137         'component' is a string indicating the model component, e.g. "P(Q)" 
    138         """ 
     134    def new1DPlot(self, return_data, tab_id): 
     135        """ 
     136        Create a new 1D data instance based on fitting results 
     137        """ 
     138        # Unpack return data from Calc1D 
     139        x, y, page_id, state, weight,\ 
     140        fid, toggle_mode_on, \ 
     141        elapsed, index, model,\ 
     142        data, update_chisqr, source = return_data 
     143 
    139144        # Create the new plot 
    140145        new_plot = Data1D(x=x, y=y) 
     
    145150 
    146151        new_plot.group_id = data.group_id 
    147         new_plot.id = str(tab_id) + " " + ("[" + component + "] " if component else "") + model.id 
    148  
    149         # use data.filename for data, use model.id for theory 
    150         id_str = data.filename if data.filename else model.id 
    151         new_plot.name = model.name + ((" " + component) if component else "") + " [" + id_str + "]" 
     152        new_plot.id = str(tab_id) + " " + model.id 
     153 
     154        if data.filename: 
     155            new_plot.name = model.name + " [" + data.filename + "]" # data file 
     156        else: 
     157            new_plot.name = model.name + " [" + model.id + "]"  # theory 
    152158 
    153159        new_plot.title = new_plot.name 
     
    156162 
    157163        return new_plot 
    158  
    159     def new1DPlot(self, return_data, tab_id): 
    160         """ 
    161         Create a new 1D data instance based on fitting results 
    162         """ 
    163         # Unpack return data from Calc1D 
    164         x, y, page_id, state, weight,\ 
    165         fid, toggle_mode_on, \ 
    166         elapsed, index, model, \ 
    167         data, update_chisqr, source, \ 
    168         unsmeared_output, unsmeared_data, unsmeared_error, \ 
    169         pq_values, sq_values = return_data 
    170  
    171         return self._create1DPlot(tab_id, x, y, model, data) 
    172164 
    173165    def new2DPlot(self, return_data): 
     
    213205        return new_plot 
    214206 
    215     def new1DProductPlots(self, return_data, tab_id): 
    216         """ 
    217         If return_data contains separated P(Q) and/or S(Q) data, create 1D plots for each and return as the tuple 
    218         (pq_plot, sq_plot). If either are unavailable, the corresponding plot is None. 
    219         """ 
    220         # Unpack return data from Calc1D 
    221         x, y, page_id, state, weight, \ 
    222         fid, toggle_mode_on, \ 
    223         elapsed, index, model, \ 
    224         data, update_chisqr, source, \ 
    225         unsmeared_output, unsmeared_data, unsmeared_error, \ 
    226         pq_values, sq_values = return_data 
    227  
    228         pq_plot = None 
    229         sq_plot = None 
    230  
    231         if pq_values is not None: 
    232             pq_plot = self._create1DPlot(tab_id, x, pq_values, model, data, component="P(Q)") 
    233         if sq_values is not None: 
    234             sq_plot = self._create1DPlot(tab_id, x, sq_values, model, data, component="S(Q)") 
    235  
    236         return pq_plot, sq_plot 
    237  
    238207    def computeDataRange(self): 
    239208        """ 
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    rb4d05bd r10fee37  
    21132113            self.updateModelIndex(fitted_data) 
    21142114        else: 
    2115             if not fitted_data.name: 
    2116                 name = self.nameForFittedData(self.kernel_module.id) 
    2117             else: 
    2118                 name = fitted_data.name 
     2115            name = self.nameForFittedData(self.kernel_module.id) 
    21192116            fitted_data.title = name 
     2117            fitted_data.name = name 
    21202118            fitted_data.filename = name 
    21212119            fitted_data.symbol = "Line" 
     
    22312229        self.model_data = fitted_data 
    22322230 
    2233         # Create plots for intermediate product data 
    2234         pq_data, sq_data = self.logic.new1DProductPlots(return_data, self.tab_id) 
    2235         if pq_data is not None: 
    2236             pq_data.symbol = "Line" 
    2237             self.createNewIndex(pq_data) 
    2238         if sq_data is not None: 
    2239             sq_data.symbol = "Line" 
    2240             self.createNewIndex(sq_data) 
    2241  
    22422231    def complete2D(self, return_data): 
    22432232        """ 
  • src/sas/qtgui/Perspectives/Fitting/ModelThread.py

    r3ae9179 rd4dac80  
    222222            s_model = self.model.s_model 
    223223            p_model = self.model.p_model 
    224         elif hasattr(self.model, "calc_composition_models"): 
    225             results = self.model.calc_composition_models(self.data.x[index]) 
    226             if results is not None: 
    227                 pq_values, sq_values = results 
    228  
    229         if pq_values is None or sq_values is None: 
    230             if p_model is not None and s_model is not None: 
    231                 sq_values = numpy.zeros((len(self.data.x))) 
    232                 pq_values = numpy.zeros((len(self.data.x))) 
    233                 sq_values[index] = s_model.evalDistribution(self.data.x[index]) 
    234                 pq_values[index] = p_model.evalDistribution(self.data.x[index]) 
     224        elif hasattr(self.model, "get_composition_models"): 
     225            p_model, s_model = self.model.get_composition_models() 
     226 
     227        if p_model is not None and s_model is not None: 
     228            sq_values = numpy.zeros((len(self.data.x))) 
     229            pq_values = numpy.zeros((len(self.data.x))) 
     230            sq_values[index] = s_model.evalDistribution(self.data.x[index]) 
     231            pq_values[index] = p_model.evalDistribution(self.data.x[index]) 
    235232 
    236233        elapsed = time.time() - self.starttime 
     
    246243                    self.data, 
    247244                    self.update_chisqr, 
    248                     self.source, 
    249                     unsmeared_output, unsmeared_data, unsmeared_error, 
    250                     pq_values, sq_values) 
     245                    self.source) 
    251246        else: 
    252247            self.complete(x=self.data.x[index], y=output[index], 
  • src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingLogicTest.py

    re752ab8 r80468f6  
    100100        data.id = "poop" 
    101101        return_data = (data.x,data.y, 7, None, None, 
    102                        0, True, 0.0, 1, data, 
    103                        data, False, None, 
    104                        None, None, None, 
    105                        None, None) 
     102                        0, True, 0.0, 1, data, 
     103                        data, False, None) 
    106104 
    107105        new_plot = self.logic.new1DPlot(return_data=return_data, tab_id=0) 
Note: See TracChangeset for help on using the changeset viewer.