Ignore:
Timestamp:
Nov 7, 2017 11:15:20 AM (7 years ago)
Author:
krzywon
Branches:
ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
Children:
bcf1215
Parents:
e58eb95
Message:

Update plots if they exist.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Inversion/InversionLogic.py

    r57ad773 r5fba4c4  
    113113        return new_plot 
    114114 
     115    def update1DPlot(self, plot, out, pr, q=None): 
     116        """ 
     117        Create a new 1D data instance based on fitting results 
     118        """ 
     119 
     120        qtemp = pr.x 
     121        if q is not None: 
     122            qtemp = q 
     123 
     124        # Make a plot 
     125        maxq = max(qtemp) 
     126 
     127        minq = min(qtemp) 
     128 
     129        # Check for user min/max 
     130        if pr.q_min is not None and maxq >= pr.q_min >= minq: 
     131            minq = pr.q_min 
     132        if pr.q_max is not None and maxq >= pr.q_max >= minq: 
     133            maxq = pr.q_max 
     134 
     135        x = pylab.arange(minq, maxq, maxq / 301.0) 
     136        y = np.zeros(len(x)) 
     137        err = np.zeros(len(x)) 
     138        for i in range(len(x)): 
     139            value = pr.iq(out, x[i]) 
     140            y[i] = value 
     141            try: 
     142                err[i] = math.sqrt(math.fabs(value)) 
     143            except: 
     144                err[i] = 1.0 
     145                print("Error getting error", value, x[i]) 
     146 
     147        plot.x = x 
     148        plot.y = y 
     149 
     150        # If we have used slit smearing, plot the smeared I(q) too 
     151        if pr.slit_width > 0 or pr.slit_height > 0: 
     152            x = pylab.arange(minq, maxq, maxq / 301.0) 
     153            y = np.zeros(len(x)) 
     154            err = np.zeros(len(x)) 
     155            for i in range(len(x)): 
     156                value = pr.iq_smeared(pr.out, x[i]) 
     157                y[i] = value 
     158                try: 
     159                    err[i] = math.sqrt(math.fabs(value)) 
     160                except: 
     161                    err[i] = 1.0 
     162                    print("Error getting error", value, x[i]) 
     163 
     164            plot.x = x 
     165            plot.y = y 
     166 
     167        return plot 
     168 
    115169    def newPRPlot(self, out, pr, cov=None): 
    116170        """ 
     
    121175        y = np.zeros(len(x)) 
    122176        dy = np.zeros(len(x)) 
    123         y_true = np.zeros(len(x)) 
    124177 
    125178        total = 0.0 
     
    163216        return new_plot 
    164217 
     218    def updatePRPlot(self, plot, out, pr, cov=None): 
     219        x = pylab.arange(0.0, pr.d_max, pr.d_max / self._pr_n_pts) 
     220 
     221        y = np.zeros(len(x)) 
     222        dy = np.zeros(len(x)) 
     223 
     224        total = 0.0 
     225        pmax = 0.0 
     226        cov2 = np.ascontiguousarray(cov) 
     227 
     228        for i in range(len(x)): 
     229            if cov2 is None: 
     230                value = pr.pr(out, x[i]) 
     231            else: 
     232                (value, dy[i]) = pr.pr_err(out, cov2, x[i]) 
     233            total += value * pr.d_max / len(x) 
     234 
     235            # keep track of the maximum P(r) value 
     236            if value > pmax: 
     237                pmax = value 
     238 
     239            y[i] = value 
     240 
     241        # if self._normalize_output == True: 
     242        #     y = y / total 
     243        #     dy = dy / total 
     244        # elif self._scale_output_unity == True: 
     245        #     y = y / pmax 
     246        #     dy = dy / pmax 
     247        plot.x = x 
     248        plot.y = y 
     249 
     250        if cov2 is not None: 
     251            plot.dy = dy 
     252 
     253        return plot 
     254 
    165255    def computeDataRange(self): 
    166256        """ 
Note: See TracChangeset for help on using the changeset viewer.