Changeset 1894:0c980fd08a69 in orange-bioinformatics for orangecontrib/bio/widgets/OWGeneInfo.py


Ignore:
Timestamp:
10/18/13 18:58:36 (6 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Changed Gene Info widget initialization.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orangecontrib/bio/widgets/OWGeneInfo.py

    r1874 r1894  
    1212from functools import partial 
    1313 
    14 import orange 
    1514from Orange.orng import orngServerFiles 
    1615from Orange.orng.orngDataCaching import data_hints 
    1716from Orange.OrangeWidgets import OWGUI 
    1817from Orange.OrangeWidgets.OWWidget import * 
     18from Orange.utils import progress_bar_milestones 
     19 
     20import orange 
    1921 
    2022from .. import obiGene, obiTaxonomy 
     
    192194class OWGeneInfo(OWWidget): 
    193195    settingsList = ["organismIndex", "geneAttr", "useAttr", "autoCommit"] 
    194     contextHandlers = {"":DomainContextHandler("", ["organismIndex", 
    195                                 "geneAttr", "useAttr", "useAltSource"])} 
     196    contextHandlers = { 
     197        "": DomainContextHandler( 
     198            "", ["organismIndex", "geneAttr", "useAttr", "useAltSource"] 
     199        ) 
     200    } 
     201 
    196202    def __init__(self, parent=None, signalManager=None, name="Gene Info"): 
    197203        OWWidget.__init__(self, parent, signalManager, name) 
     
    208214        self.useAltSource = 0 
    209215        self.loadSettings() 
    210          
    211         self.infoLabel = OWGUI.widgetLabel(OWGUI.widgetBox(self.controlArea, 
    212                                                     "Info", addSpace=True), 
    213                                            "No data on input\n") 
    214         self.organisms = sorted(set([name.split(".")[-2] for name in \ 
    215                             orngServerFiles.listfiles("NCBI_geneinfo")] + \ 
    216                             obiGene.NCBIGeneInfo.essential_taxids())) 
    217      
    218         self.organismBox = OWGUI.widgetBox(self.controlArea, "Organism", 
    219                                            addSpace=True) 
    220         self.organismComboBox = OWGUI.comboBox(self.organismBox, self, 
    221                                 "organismIndex", "Organism", 
    222                                 items=[obiTaxonomy.name(id) for id in self.organisms], 
    223                                 callback=self.setItems, 
    224                                 debuggingEnabled=0) 
    225          
     216 
     217        self.__initialized = False 
     218 
     219        self.infoLabel = OWGUI.widgetLabel( 
     220            OWGUI.widgetBox(self.controlArea, "Info", addSpace=True), 
     221            "Initializing\n" 
     222        ) 
     223 
     224        self.organisms = None 
     225        self.organismBox = OWGUI.widgetBox( 
     226            self.controlArea, "Organism", addSpace=True) 
     227 
     228        self.organismComboBox = OWGUI.comboBox( 
     229            self.organismBox, self, "organismIndex", 
     230            callback=self.setItems, 
     231            debuggingEnabled=0) 
     232 
    226233        # For now only support one alt source, with a checkbox 
    227234        # In the future this can be extended to multiple selections 
     
    278285                     callback=self.treeWidget.clearSelection) 
    279286         
    280         self.resize(1000, 700)         
     287        self.resize(1000, 700) 
    281288 
    282289        self.geneinfo = [] 
     
    286293        self.currentLoaded = None, None 
    287294        self.selectionUpdateInProgress = False 
    288          
     295 
     296        self.setBlocking(True) 
     297        QTimer.singleShot(0, self.initialize) 
     298 
     299    def initialize(self): 
     300        if self.__initialized: 
     301            # Already initialized 
     302            return 
     303 
     304        self.organisms = sorted( 
     305            set([name.split(".")[-2] for name in 
     306                 orngServerFiles.listfiles("NCBI_geneinfo")] + 
     307                obiGene.NCBIGeneInfo.essential_taxids()) 
     308        ) 
     309 
     310        pb = OWGUI.ProgressBar(self, 100) 
     311        obiTaxonomy.ensure_downloaded(pb.advance) 
     312 
     313        self.organismComboBox.addItems( 
     314            [obiTaxonomy.name(tax_id) for tax_id in self.organisms] 
     315        ) 
     316        pb.finish() 
     317 
     318        self.infoLabel.setText("No data on input\n") 
     319        self.__initialized = True 
     320        self.setBlocking(False) 
     321 
    289322    def setData(self, data=None): 
     323        if not self.__initialized: 
     324            raise Exception("Not initialized") 
     325 
    290326        self.closeContext() 
    291327        self.data = data 
     
    362398 
    363399        self.progressBarInit() 
    364         milestones = set([i for i in range(0, len(geneinfo), max(len(geneinfo)/100, 1))]) 
     400 
     401        milestones = progress_bar_milestones(len(geneinfo)) 
    365402        self.cells = cells = [] 
    366403        self.row2geneinfo = {} 
     
    381418#                            ", ".join(gi.synonyms), gi.symbol_from_nomenclature_authority or ""]) 
    382419#                links.append("http://www.ncbi.nlm.nih.gov/sites/entrez?Db=gene&Cmd=ShowDetailView&TermToSearch=%s" % gi.gene_id) 
    383                  
    384420 
    385421            if i in milestones: 
    386422                self.progressBarSet(100.0*i/len(geneinfo)) 
     423 
    387424        model = TreeModel(cells, [str(col) for col in schema], self.treeWidget) 
    388425         
     
    581618    w = OWGeneInfo() 
    582619    w.show() 
     620    w.initialize() 
     621 
    583622    w.setData(data) 
    584623    app.exec_() 
    585624    w.saveSettings() 
    586          
    587          
    588          
    589          
Note: See TracChangeset for help on using the changeset viewer.