Changeset 8bdb6f5 in sasview


Ignore:
Timestamp:
Feb 16, 2017 9:26:32 AM (2 years ago)
Author:
wojciech
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:
dba6e57
Parents:
4c7dd9f
Message:

Reading from sasmodels parameter dict

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Fitting/Fitting.py

    r4c7dd9f r8bdb6f5  
    11import sys 
     2import json 
     3import  os 
    24from PyQt4 import QtGui 
    35from PyQt4 import QtCore 
    46 
    57from UI.fitting import Ui_Dialog 
     8 
     9from sasmodels import generate 
     10from sasmodels import modelinfo 
     11 
     12from collections import defaultdict 
     13from sas.sasgui.guiframe.CategoryInstaller import CategoryInstaller 
    614 
    715class prototype(QtGui.QDialog, Ui_Dialog): 
     
    1220        self.setupUi(self) 
    1321 
     22        self._readCategoryInfo() 
     23        cat_list = sorted(self.master_category_dict.keys()) 
     24        self.comboBox.addItems(cat_list) 
    1425        self.tableView.setModel(self._model_model) 
    15         self.setModelModel() 
     26 
     27        model_list = self.master_category_dict['Cylinder'] 
     28        for (model, enabled) in model_list: 
     29            self.comboBox_2.addItem(model) 
     30        self.setModelModel('barbell') 
    1631 
    1732        self.pushButton.setEnabled(False) 
     
    3449            self.tableView_2.setIndexWidget(i,c) 
    3550 
     51    def _readCategoryInfo(self): 
     52        """ 
     53        Reads the categories in from file 
     54        """ 
     55        self.master_category_dict = defaultdict(list) 
     56        self.by_model_dict = defaultdict(list) 
     57        self.model_enabled_dict = defaultdict(bool) 
     58 
     59        try: 
     60            categorization_file = CategoryInstaller.get_user_file() 
     61            if not os.path.isfile(categorization_file): 
     62                categorization_file = CategoryInstaller.get_default_file() 
     63            cat_file = open(categorization_file, 'rb') 
     64            self.master_category_dict = json.load(cat_file) 
     65            self._regenerate_model_dict() 
     66            cat_file.close() 
     67        except IOError: 
     68            raise 
     69            print 'Problem reading in category file.' 
     70            print 'We even looked for it, made sure it was there.' 
     71            print 'An existential crisis if there ever was one.' 
     72 
     73    def _regenerate_model_dict(self): 
     74        """ 
     75        regenerates self.by_model_dict which has each model name as the 
     76        key and the list of categories belonging to that model 
     77        along with the enabled mapping 
     78        """ 
     79        self.by_model_dict = defaultdict(list) 
     80        for category in self.master_category_dict: 
     81            for (model, enabled) in self.master_category_dict[category]: 
     82                self.by_model_dict[model].append(category) 
     83                self.model_enabled_dict[model] = enabled 
     84 
    3685         
    37     def setModelModel(self): 
     86    def setModelModel(self, model_name): 
    3887        # Crete/overwrite model items 
    3988 
    40         parameters=[] 
    41         p=["scale", "1", "0", "inf", ""] 
    42         for i in xrange(1): 
    43             #for parameter in parameters.keys(): 
    44             item1 = QtGui.QStandardItem("background") 
     89        model_name = str(model_name) 
     90        kernel_module = generate.load_kernel_module(model_name) 
     91        parameters = modelinfo.make_parameter_table(getattr(kernel_module, 'parameters', [])) 
     92 
     93        #TODO: scaale and background are implicit in sasmodels and needs to be added 
     94        item1 = QtGui.QStandardItem('scale') 
     95        item1.setCheckable(True) 
     96        item2 = QtGui.QStandardItem('1.0') 
     97        item3 = QtGui.QStandardItem('0.0') 
     98        item4 = QtGui.QStandardItem('inf') 
     99        item5 = QtGui.QStandardItem('') 
     100        self._model_model.appendRow([item1, item2, item3, item4, item5]) 
     101 
     102        item1 = QtGui.QStandardItem('background') 
     103        item1.setCheckable(True) 
     104        item2 = QtGui.QStandardItem('0.001') 
     105        item3 = QtGui.QStandardItem('-inf') 
     106        item4 = QtGui.QStandardItem('inf') 
     107        item5 = QtGui.QStandardItem('1/cm') 
     108        self._model_model.appendRow([item1, item2, item3, item4, item5]) 
     109 
     110        #TODO: iq_parameters are used here. If orientation paramateres or magnetic are needed kernel_paramters should be used instead 
     111        #For orientation and magentic parameters param.type needs to be checked 
     112        for param in parameters.iq_parameters: 
     113            item1 = QtGui.QStandardItem(param.name) 
    45114            item1.setCheckable(True) 
    46             item2 = QtGui.QStandardItem("0.001") 
    47             item3 = QtGui.QStandardItem("-inf") 
    48             item4 = QtGui.QStandardItem("inf") 
    49             item5 = QtGui.QStandardItem("1/cm") 
    50             self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    51  
    52             item1 = QtGui.QStandardItem("l_radius") 
    53             item1.setCheckable(True) 
    54             item2 = QtGui.QStandardItem("100") 
    55             item3 = QtGui.QStandardItem("0") 
    56             item4 = QtGui.QStandardItem("inf") 
    57             item5 = QtGui.QStandardItem("A") 
    58             self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    59  
    60             item1 = QtGui.QStandardItem("ls_sld") 
    61             item1.setCheckable(True) 
    62             item2 = QtGui.QStandardItem("3.5e-06") 
    63             item3 = QtGui.QStandardItem("0") 
    64             item4 = QtGui.QStandardItem("inf") 
    65             item5 = QtGui.QStandardItem("1/A^2") 
    66             self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    67  
    68             item1 = QtGui.QStandardItem("s_radius") 
    69             item1.setCheckable(True) 
    70             item2 = QtGui.QStandardItem("25") 
    71             item3 = QtGui.QStandardItem("0") 
    72             item4 = QtGui.QStandardItem("inf") 
    73             item5 = QtGui.QStandardItem("A") 
    74             self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    75  
    76             item1 = QtGui.QStandardItem("solvent_sld") 
    77             item1.setCheckable(True) 
    78             item2 = QtGui.QStandardItem("6.36e-06") 
    79             item3 = QtGui.QStandardItem("0") 
    80             item4 = QtGui.QStandardItem("inf") 
    81             item5 = QtGui.QStandardItem("1/A^2") 
    82             self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    83  
    84             item1 = QtGui.QStandardItem("vol_frac_ls") 
    85             item1.setCheckable(True) 
    86             item2 = QtGui.QStandardItem("0.1") 
    87             item3 = QtGui.QStandardItem("0") 
    88             item4 = QtGui.QStandardItem("inf") 
    89             item5 = QtGui.QStandardItem("") 
     115            item2 = QtGui.QStandardItem(str(param.default)) 
     116            item3 = QtGui.QStandardItem(str(param.limits[0])) 
     117            item4 = QtGui.QStandardItem(str(param.limits[1])) 
     118            item5 = QtGui.QStandardItem(param.units) 
    90119            self._model_model.appendRow([item1, item2, item3, item4, item5]) 
    91120 
Note: See TracChangeset for help on using the changeset viewer.