Changeset 1897:2e74f7146dac in orange-bioinformatics


Ignore:
Timestamp:
10/30/13 11:58:13 (6 months ago)
Author:
markotoplak
Branch:
default
Message:

Removed PIPA widget, renamed Genotype distances.

Files:
1 deleted
3 edited

Legend:

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

    r1874 r1897  
    2121from ..obiExperiments import separate_by, data_type, linearize, dist_pcorr, dist_eucl, dist_spearman 
    2222 
    23 NAME = "Genotype Distances" 
     23NAME = "Expression Profile Distances" 
    2424DESCRIPTION = "Compute distances between expression profiles of different experimental factors." 
    2525ICON = "icons/GenotypeDistances.svg" 
     
    9999                          ("Distance from Spearman correlation", dist_spearman)] 
    100100     
    101     def __init__(self, parent=None, signalManager=None, title="Genotype Distances"): 
     101    def __init__(self, parent=None, signalManager=None, title="Expression Profile Distances"): 
    102102        OWWidget.__init__(self, parent, signalManager, title) 
    103103         
  • orangecontrib/bio/widgets/OWPIPAx.py

    r1874 r1897  
    1818 
    1919from .. import obiDicty 
    20  
    21 from .OWPIPA import (MyTreeWidgetItem, ListItemDelegate, 
    22                     SelectionSetsWidget, SortedListWidget) 
    2320 
    2421NAME = "PIPAx" 
     
    118115        return len(self._selected_keys) 
    119116 
     117 
     118 
     119class ListItemDelegate(QStyledItemDelegate): 
     120    def sizeHint(self, option, index): 
     121        size = QStyledItemDelegate.sizeHint(self, option, index) 
     122        size = QSize(size.width(), size.height() + 4) 
     123        return size 
     124 
     125    def createEditor(self, parent, option, index): 
     126        return QLineEdit(parent) 
     127     
     128    def setEditorData(self, editor, index): 
     129        editor.setText(index.data(Qt.DisplayRole).toString()) 
     130         
     131    def setModelData(self, editor, model, index): 
     132#        print index 
     133        model.setData(index, QVariant(editor.text()), Qt.EditRole) 
     134 
     135class SelectionSetsWidget(QFrame): 
     136    """ Widget for managing multiple stored item selections  
     137    """ 
     138    def __init__(self, parent): 
     139        QFrame.__init__(self, parent) 
     140        self.setContentsMargins(0, 0, 0, 0) 
     141        layout = QVBoxLayout() 
     142        layout.setContentsMargins(0, 0, 0, 0) 
     143        layout.setSpacing(1) 
     144#        self._titleLabel = QLabel(self) 
     145#        self._titleLabel 
     146#        layout.addWidget(self._titleLabel) 
     147        self._setNameLineEdit = QLineEdit(self) 
     148        layout.addWidget(self._setNameLineEdit) 
     149         
     150        self._setListView = QListView(self) 
     151        self._listModel = QStandardItemModel(self) 
     152        self._proxyModel = QSortFilterProxyModel(self) 
     153        self._proxyModel.setSourceModel(self._listModel) 
     154         
     155        self._setListView.setModel(self._proxyModel) 
     156        self._setListView.setItemDelegate(ListItemDelegate(self)) 
     157         
     158        self.connect(self._setNameLineEdit, SIGNAL("textChanged(QString)"), self._proxyModel.setFilterFixedString) 
     159         
     160        self._completer = QCompleter(self._listModel, self) 
     161         
     162        self._setNameLineEdit.setCompleter(self._completer) 
     163         
     164        self.connect(self._listModel, SIGNAL("itemChanged(QStandardItem *)"), self._onSetNameChange) 
     165        layout.addWidget(self._setListView) 
     166        buttonLayout = QHBoxLayout() 
     167         
     168        self._addAction = QAction("+", self) 
     169        self._updateAction = QAction("Update", self) 
     170        self._removeAction = QAction("-", self) 
     171         
     172        self._addToolButton = QToolButton(self) 
     173        self._updateToolButton = QToolButton(self) 
     174        self._removeToolButton = QToolButton(self) 
     175        self._updateToolButton.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum) 
     176         
     177        self._addToolButton.setDefaultAction(self._addAction) 
     178        self._updateToolButton.setDefaultAction(self._updateAction) 
     179        self._removeToolButton.setDefaultAction(self._removeAction) 
     180          
     181        buttonLayout.addWidget(self._addToolButton) 
     182        buttonLayout.addWidget(self._updateToolButton) 
     183        buttonLayout.addWidget(self._removeToolButton) 
     184         
     185        layout.addLayout(buttonLayout) 
     186        self.setLayout(layout) 
     187         
     188        self.connect(self._addAction, SIGNAL("triggered()"), self.addCurrentSelection) 
     189        self.connect(self._updateAction, SIGNAL("triggered()"), self.updateSelectedSelection) 
     190        self.connect(self._removeAction, SIGNAL("triggered()"), self.removeSelectedSelection) 
     191         
     192        self.connect(self._setListView.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self._onListViewSelectionChanged) 
     193        self.selectionModel = None 
     194        self._selections = [] 
     195         
     196    def sizeHint(self): 
     197        size = QFrame.sizeHint(self) 
     198        return QSize(size.width(), 200) 
     199         
     200    def _onSelectionChanged(self, selected, deselected): 
     201        self.setSelectionModified(True) 
     202         
     203    def _onListViewSelectionChanged(self, selected, deselected): 
     204        try: 
     205            index= self._setListView.selectedIndexes()[0] 
     206        except IndexError: 
     207            return  
     208        self.commitSelection(self._proxyModel.mapToSource(index).row()) 
     209 
     210    def _onSetNameChange(self, item): 
     211        self.selections[item.row()].name = str(item.text()) 
     212                 
     213    def _setButtonStates(self, val): 
     214        self._updateToolButton.setEnabled(val) 
     215         
     216    def setSelectionModel(self, selectionModel): 
     217        if self.selectionModel: 
     218            self.disconnect(self.selectionModel, SIGNAL("selectionChanged(QItemSelection, QItemSelection)", self._onSelectionChanged)) 
     219        self.selectionModel = selectionModel 
     220        self.connect(self.selectionModel, SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self._onSelectionChanged) 
     221         
     222    def addCurrentSelection(self): 
     223        item = self.addSelection(SelectionByKey(self.selectionModel.selection(), name="New selection", key=(1, 2, 3 ,10))) 
     224        index = self._proxyModel.mapFromSource(item.index()) 
     225        self._setListView.setCurrentIndex(index) 
     226        self._setListView.edit(index) 
     227        self.setSelectionModified(False) 
     228     
     229    def removeSelectedSelection(self): 
     230        i = self._proxyModel.mapToSource(self._setListView.currentIndex()).row() 
     231        self._listModel.takeRow(i) 
     232        del self.selections[i] 
     233     
     234    def updateCurentSelection(self): 
     235        i = self._proxyModel.mapToSource(self._setListView.selectedIndex()).row() 
     236        self.selections[i].setSelection(self.selectionModel.selection()) 
     237        self.setSelectionModified(False) 
     238         
     239    def addSelection(self, selection, name=""): 
     240        self._selections.append(selection) 
     241        item = QStandardItem(selection.name) 
     242        item.setFlags(item.flags() ^ Qt.ItemIsDropEnabled) 
     243        self._listModel.appendRow(item) 
     244        self.setSelectionModified(False) 
     245        return item 
     246         
     247    def updateSelectedSelection(self): 
     248        i = self._proxyModel.mapToSource(self._setListView.currentIndex()).row() 
     249        self.selections[i].setSelection(self.selectionModel.selection()) 
     250        self.setSelectionModified(False) 
     251         
     252    def setSelectionModified(self, val): 
     253        self._selectionModified = val 
     254        self._setButtonStates(val) 
     255        self.emit(SIGNAL("selectionModified(bool)"), bool(val)) 
     256         
     257    def commitSelection(self, index): 
     258        selection = self.selections[index] 
     259        selection.select(self.selectionModel) 
     260         
     261    def setSelections(self, selections): 
     262        self._listModel.clear() 
     263#        print selections 
     264        for selection in selections: 
     265            self.addSelection(selection) 
     266             
     267    def selections(self): 
     268        return self._selections 
     269     
     270    selections = property(selections, setSelections) 
     271     
     272                
     273class SortedListWidget(QWidget): 
     274    class _MyItemDelegate(QStyledItemDelegate): 
     275        def __init__(self, sortingModel, parent): 
     276            QStyledItemDelegate.__init__(self, parent) 
     277            self.sortingModel = sortingModel 
     278             
     279        def sizeHint(self, option, index): 
     280            size = QStyledItemDelegate.sizeHint(self, option, index) 
     281            return QSize(size.width(), size.height() + 4) 
     282             
     283        def createEditor(self, parent, option, index): 
     284            cb = QComboBox(parent) 
     285            cb.setModel(self.sortingModel) 
     286            cb.showPopup() 
     287            return cb 
     288         
     289        def setEditorData(self, editor, index): 
     290            pass # TODO: sensible default  
     291         
     292        def setModelData(self, editor, model, index): 
     293            text = editor.currentText() 
     294            model.setData(index, QVariant(text)) 
     295     
     296    def __init__(self, *args): 
     297        QWidget.__init__(self, *args) 
     298        self.setContentsMargins(0, 0, 0, 0) 
     299        gridLayout = QGridLayout() 
     300        gridLayout.setContentsMargins(0, 0, 0, 0) 
     301        gridLayout.setSpacing(1) 
     302        self._listView = QListView(self) 
     303        self._listView.setModel(QStandardItemModel(self)) 
     304#        self._listView.setDragEnabled(True) 
     305        self._listView.setDropIndicatorShown(True) 
     306        self._listView.viewport().setAcceptDrops(True) 
     307        self._listView.setDragDropMode(QAbstractItemView.InternalMove) 
     308        self._listView.setMinimumHeight(100) 
     309         
     310        gridLayout.addWidget(self._listView, 0, 0, 2, 2) 
     311         
     312        vButtonLayout = QVBoxLayout() 
     313         
     314        self._upAction = QAction(QIcon(os.path.join(orngEnviron.widgetDir, "icons/Dlg_up3.png")), "Up", self) 
     315         
     316        self._upButton = QToolButton(self) 
     317        self._upButton.setDefaultAction(self._upAction) 
     318        self._upButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding) 
     319 
     320        self._downAction = QAction(QIcon(os.path.join(orngEnviron.widgetDir, "icons/Dlg_down3.png")), "Down", self) 
     321        self._downButton = QToolButton(self) 
     322        self._downButton.setDefaultAction(self._downAction) 
     323        self._downButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding) 
     324         
     325        vButtonLayout.addWidget(self._upButton) 
     326        vButtonLayout.addWidget(self._downButton) 
     327         
     328        gridLayout.addLayout(vButtonLayout, 0, 2, 2, 1) 
     329         
     330        hButtonLayout = QHBoxLayout() 
     331         
     332        self._addAction = QAction("+", self) 
     333        self._addButton = QToolButton(self) 
     334        self._addButton.setDefaultAction(self._addAction) 
     335         
     336        self._removeAction = QAction("-", self) 
     337        self._removeButton = QToolButton(self) 
     338        self._removeButton.setDefaultAction(self._removeAction) 
     339        hButtonLayout.addWidget(self._addButton) 
     340        hButtonLayout.addWidget(self._removeButton) 
     341        hButtonLayout.addStretch(10) 
     342        gridLayout.addLayout(hButtonLayout, 2, 0, 1, 2) 
     343         
     344        self.setLayout(gridLayout) 
     345         
     346        self.connect(self._addAction, SIGNAL("triggered()"), self._onAddAction) 
     347        self.connect(self._removeAction, SIGNAL("triggered()"), self._onRemoveAction) 
     348        self.connect(self._upAction, SIGNAL("triggered()"), self._onUpAction) 
     349        self.connect(self._downAction, SIGNAL("triggered()"), self._onDownAction) 
     350         
     351    def sizeHint(self): 
     352        size = QWidget.sizeHint(self) 
     353        return QSize(size.width(), 100) 
     354         
     355    def _onAddAction(self): 
     356        item = QStandardItem("") 
     357        item.setFlags(item.flags() ^ Qt.ItemIsDropEnabled) 
     358        self._listView.model().appendRow(item) 
     359        self._listView.setCurrentIndex(item.index()) 
     360        self._listView.edit(item.index())  
     361     
     362    def _onRemoveAction(self): 
     363        current = self._listView.currentIndex() 
     364        self._listView.model().takeRow(current.row()) 
     365     
     366    def _onUpAction(self): 
     367        row = self._listView.currentIndex().row() 
     368        model = self._listView.model() 
     369        if row > 0: 
     370            items = model.takeRow(row) 
     371            model.insertRow(row - 1, items) 
     372            self._listView.setCurrentIndex(model.index(row - 1, 0)) 
     373     
     374    def _onDownAction(self): 
     375        row = self._listView.currentIndex().row() 
     376        model = self._listView.model() 
     377        if row < model.rowCount() and row >= 0: 
     378            items = model.takeRow(row) 
     379            if row == model.rowCount(): 
     380                model.appendRow(items) 
     381            else: 
     382                model.insertRow(row + 1, items) 
     383            self._listView.setCurrentIndex(model.index(row + 1, 0)) 
     384     
     385    def setModel(self, model): 
     386        """ Set a model to select items from 
     387        """ 
     388        self._model  = model 
     389        self._listView.setItemDelegate(self._MyItemDelegate(self._model, self)) 
     390         
     391    def addItem(self, *args): 
     392        """ Add a new entry in the list  
     393        """ 
     394        item = QStandardItem(*args) 
     395        item.setFlags(item.flags() ^ Qt.ItemIsDropEnabled) 
     396        self._listView.model().appendRow(item) 
     397         
     398    def setItems(self, items): 
     399        self._listView.model().clear() 
     400        for item in items: 
     401            self.addItem(item) 
     402          
     403    def items(self): 
     404        order = [] 
     405        for row in range(self._listView.model().rowCount()): 
     406             order.append(str(self._listView.model().item(row ,0).text())) 
     407        return order 
     408     
     409    sortingOrder = property(items, setItems) 
     410         
     411     
    120412 
    121413# Mapping from PIPAx.results_list annotation keys to Header names. 
  • setup.py

    r1896 r1897  
    1616DOCUMENTATION_NAME = 'Orange Bioinformatics' 
    1717 
    18 VERSION = '2.5a17' 
     18VERSION = '2.5a18' 
    1919 
    2020DESCRIPTION = 'Orange Bioinformatics add-on for Orange data mining software package.' 
Note: See TracChangeset for help on using the changeset viewer.