Commits

(no author)  committed ae23864

This commit was manufactured by cvs2svn to create branch 'Qt4'.

  • Participants
  • Parent commits 9626cdd

Comments (0)

Files changed (20)

File OWMoleculeVisualizer.py

-"""<name>Molecule visualizer</name>"""
-
-import orange
-import orngChem
-from OWWidget import *
-from qt import *
-import OWGUI
-import sys, os
-import vis
-from openeye.oechem import *
-
-class DrawContext:
-    def __init__(self, molecule="", fragment="", size=200, imageprefix="", imagename="", title=""):
-        self.molecule=molecule
-        self.fragment=fragment
-        self.size=size
-        self.imageprefix=imageprefix
-        self.imagename=imagename
-        self.title=title
-
-class BigImage(QDialog):
-    def __init__(self, context, *args):
-        apply(QDialog.__init__, (self,)+args)
-        self.context=context
-        self.label=QLabel(self)
-        self.imagename=context.imagename or context.imageprefix+"_big.bmp"
-        self.imageSize=400
-        self.renderImage()
-
-    def renderImage(self):
-        if self.context.fragment:
-            vis.moleculeFragment2BMP(self.context.molecule, self.context.fragment, self.imagename, self.imageSize, self.context.title)
-        else:
-            vis.molecule2BMP(self.context.molecule, self.imagename, self.imageSize, self.context.title)
-        pix=QPixmap()
-        pix.load(self.imagename)
-        self.label.setPixmap(pix)
-        self.label.resize(pix.width(), pix.height())
-            
-    def resizeEvent(self, event):
-        apply(QDialog.resizeEvent, (self, event))
-        self.imageSize=min(event.size().width(), event.size().height())
-        self.renderImage()
-        
-    
-class MolImage(QLabel):
-    def __init__(self, master, parent, context):
-        apply(QLabel.__init__,(self, parent))
-        #print filename
-        self.context=context
-        self.master=master
-        imagename=context.imagename or context.imageprefix+".bmp"
-        if context.fragment:
-            vis.moleculeFragment2BMP(context.molecule, context.fragment, imagename, context.size, context.title)
-        else:
-            vis.molecule2BMP(context.molecule, imagename, context.size, context.title)
-        self.load(imagename)
-        self.selected=False
-        self.setFrameStyle(QFrame.Panel | QFrame.Raised)
-        
-    def load(self, filename):
-        self.pix=QPixmap()
-        if not self.pix.load(filename):
-            print "Failed to load "+filename
-            return
-        self.resize(self.pix.width(), self.pix.height())
-        self.setPixmap(self.pix)
-
-    def paintEvent(self, event):
-        apply(QLabel.paintEvent,(self, event))
-        if self.selected:
-            painter=QPainter(self)
-            painter.setPen(QPen(Qt.red, 2))
-            painter.drawRect(2, 2, self.width()-3, self.height()-3)
-
-    def mousePressEvent(self, event):
-        self.master.mouseAction(self, event)
-
-    def mouseDoubleClickEvent(self, event):
-        d=BigImage(self.context, self)
-        d.show()
-        
-class ScrollView(QScrollView):
-    def __init__(self, master, *args):
-        apply(QScrollView.__init__, (self,)+args)
-        self.master=master
-        self.viewport().setMouseTracking(True)
-        self.setMouseTracking(True)
-        
-    def resizeEvent(self, event):
-        apply(QScrollView.resizeEvent, (self, event))
-        size=event.size()
-        w,h=size.width(), size.height()
-        oldNumColumns=self.master.numColumns
-        numColumns=min(w/self.master.imageSize or 1, 100)
-        if numColumns!=oldNumColumns:
-            self.master.numColumns=numColumns
-            self.master.redrawImages()
-        
-
-class OWMoleculeVisualizer(OWWidget):
-    settingsList=["colorFragmets","showFragments"]
-    def __init__(self, parent=None, signalManager=None, name="Molecule visualizer"):
-        apply(OWWidget.__init__,(self, parent, signalManager, name))
-        self.inputs=[("Molecules", ExampleTable, self.setMoleculeTable), ("Fragments", ExampleTable, self.setFragmentTable)]
-        self.outputs=[("Selected Molecules", ExampleTable)]
-        self.colorFragments=1
-        self.showFragments=0
-        self.selectedFragment=""
-        self.moleculeSmiles=[]
-        self.fragmentSmiles=[]
-        self.defFragmentSmiles=[]
-        self.moleculeSmilesAttr=0
-        self.moleculeTitleAttr=0
-        self.fragmentSmilesAttr=0
-        self.imageSize=200
-        self.numColumns=4
-        self.commitOnChange=0
-        ##GUI
-        box=OWGUI.radioButtonsInBox(self.controlArea, self, "showFragments", ["Show molecules", "Show fragments"], "Show", callback=self.showImages)
-        OWGUI.checkBox(box, self, "colorFragments", "Mark fragments", callback=self.redrawImages)
-        box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum))
-        self.moleculeSmilesCombo=OWGUI.comboBox(self.controlArea, self, "moleculeSmilesAttr", "Molecule SMILES attribute",callback=self.showImages)
-        self.moleculeSmilesCombo.box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum))
-        self.moleculeTitleCombo=OWGUI.comboBox(self.controlArea, self, "moleculeTitleAttr", "Molecule title attribute", callback=self.redrawImages)
-        self.moleculeTitleCombo.box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum))
-        self.fragmentSmilesCombo=OWGUI.comboBox(self.controlArea, self, "fragmentSmilesAttr", "Fragment SMILES attribute", callback=self.updateFragmentsListBox)
-        self.fragmentSmilesCombo.box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum))
-        box=OWGUI.spin(self.controlArea, self, "imageSize", 50, 500, 50, box="Image size", callback=self.redrawImages)
-        box.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Maximum))
-        box=OWGUI.widgetBox(self.controlArea,"Selection")
-        OWGUI.checkBox(box, self, "commitOnChange", "Commit on change")
-        OWGUI.button(box, self, "&Select marked molecules", self.selectMarked)
-        OWGUI.button(box, self, "&Commit", callback=self.commit)
-        OWGUI.rubber(self.controlArea)
-        
-        self.mainAreaLayout=QVBoxLayout(self.mainArea, QVBoxLayout.TopToBottom)
-        spliter=QSplitter(Qt.Vertical, self.mainArea)
-        self.scrollView=ScrollView(self, spliter)
-        self.scrollView.setHScrollBarMode(QScrollView.Auto)
-        self.scrollView.setVScrollBarMode(QScrollView.Auto)
-        self.molWidget=QWidget(self.scrollView.viewport())
-        self.scrollView.addChild(self.molWidget)
-        self.mainAreaLayout.addWidget(spliter)
-        self.gridLayout=QGridLayout(self.molWidget,10,100,2,2)
-        self.gridLayout.setAutoAdd(False)
-        self.listBox=QListBox(spliter)
-        self.connect(self.listBox, SIGNAL("highlighted(int)"), self.fragmentSelection)
-
-        self.imageprefix=os.path.split(__file__)[0]
-        if self.imageprefix:
-            self.imageprefix+="\molimages\image"
-        else:
-            self.imageprefix="molimages\image"
-        self.imageWidgets=[]
-        self.candidateMolSmilesAttr=[]
-        self.candidateMolTitleAttr=[None]
-        self.candidateFragSmilesAttr=[None]
-        self.molData=None
-        self.fragData=None
-        self.ctrlPressed=FALSE
-        self.resize(600,600)
-        self.listBox.setMaximumHeight(150)
-        
-    def setMoleculeTable(self, data):
-        self.molData=data
-        if data:
-            self.setMoleculeSmilesCombo()
-            self.setMoleculeTitleCombo()
-            self.setFragmentSmilesCombo()
-            self.updateFragmentsListBox()
-            self.showImages()
-        else:
-            self.moleculeSmilesCombo.clear()
-            self.moleculeTitleCombo.clear()
-            self.defFragmentSmiles=[]
-            if not self.fragmentSmilesAttr:
-                self.listBox.clear()
-            self.destroyImageWidgets()
-            self.send("Selected Molecules", None)
-            
-    def setFragmentTable(self, data):
-        self.fragData=data
-        if data:
-            self.setFragmentSmilesCombo()
-            self.updateFragmentsListBox()
-            self.selectedFragment=""
-            self.showImages()
-        else:
-            self.setFragmentSmilesCombo()
-            #self.fragmentSmilesAttr=0
-            self.updateFragmentsListBox()
-            if self.showFragments:
-                self.destroyImageWidgets()
-
-    def filterSmilesVariables(self, data):
-        candidates=data.domain.variables+data.domain.getmetas().values()
-        candidates=filter(lambda v:v.varType==orange.VarTypes.Discrete or v.varType==orange.VarTypes.String, candidates)        
-        vars=[]
-        for var in candidates:
-            count=0
-            for e in data:
-                if OEParseSmiles(OEGraphMol(), str(e[var])):
-                    count+=1
-            if float(count)/float(len(data))>0.5:
-                vars.append(var)
-        names=[v.name for v in data.domain.variables+data.domain.getmetas().values()]
-        names=filter(lambda n:OEParseSmiles(OEGraphMol(), n), names)
-        return vars, names
-        
-    def setMoleculeSmilesCombo(self):
-        candidates, self.defFragmentSmiles=self.filterSmilesVariables(self.molData)
-        self.candidateMolSmilesAttr=candidates
-        self.moleculeSmilesCombo.clear()
-        self.moleculeSmilesCombo.insertStrList([v.name for v in candidates])
-        if self.moleculeSmilesAttr>=len(candidates):
-            self.moleculeSmilesAttr=0
-
-    def setMoleculeTitleCombo(self):
-        vars=self.molData.domain.variables+self.molData.domain.getmetas().values()
-        self.moleculeTitleCombo.clear()
-        self.moleculeTitleCombo.insertStrList(["None"]+[v.name for v in vars])
-        if self.moleculeTitleAttr>len(vars):
-            self.moleculeTitleAttr=0
-        self.candidateMolTitleAttr=[None]+[v for v in vars]
-
-    def setFragmentSmilesCombo(self):
-        if self.fragData:
-            candidates, names=self.filterSmilesVariables(self.fragData)
-        else:
-            candidates=[]
-        self.candidateFragSmilesAttr=[None]+candidates
-        self.fragmentSmilesCombo.clear()
-        self.fragmentSmilesCombo.insertStrList(["Default"]+[v.name for v in candidates])
-        if self.fragmentSmilesAttr>len(candidates):
-            self.fragmentSmilesAttr=0
-
-    def updateFragmentsListBox(self):
-        fAttr=self.candidateFragSmilesAttr[self.fragmentSmilesAttr]
-        if fAttr:
-            self.fragmentSmiles=[""]+[str(e[fAttr]) for e in self.fragData if not e[fAttr].isSpecial()]
-        else:
-            self.fragmentSmiles=[""]+self.defFragmentSmiles
-        self.listBox.clear()
-        self.listBox.insertStrList(self.fragmentSmiles)
-        
-    def fragmentSelection(self, index):
-        self.selectedFragment=self.fragmentSmiles[index]
-        if not self.showFragments and self.colorFragments:
-            self.redrawImages()
-        
-    def renderImages(self):
-        self.imageWidgets=[]
-        if self.showFragments and self.fragmentSmiles:
-            for i,fragment in enumerate(self.fragmentSmiles[1:]):
-                imagename=self.imageprefix+str(i)+".bmp"
-                #vis.molecule2BMP(fragment, imagename, self.imageSize)
-                image=MolImage(self, self.molWidget, DrawContext(molecule=fragment, imagename=imagename, size=self.imageSize))
-                self.gridLayout.addWidget(image, i/self.numColumns, i%self.numColumns)
-                self.imageWidgets.append(image)
-        elif self.molData:
-            sAttr=self.candidateMolSmilesAttr[min(self.moleculeSmilesAttr, len(self.candidateMolSmilesAttr)-1)]
-            tAttr=self.candidateMolTitleAttr[min(self.moleculeTitleAttr, len(self.candidateMolTitleAttr)-1)]
-            if self.moleculeTitleAttr:
-                titleList=[str(e[tAttr]) for e in self.molData if not e[sAttr].isSpecial()]
-            else:
-                titleList=[]
-                if not sAttr:
-                    return
-            molSmiles=[str(e[sAttr]) for e in self.molData if not e[sAttr].isSpecial()]
-            for i,(molecule, title) in enumerate(zip(molSmiles, titleList or [""]*len(molSmiles))):
-                imagename=self.imageprefix+str(i)+".bmp"
-                if self.colorFragments:
-                    context=DrawContext(molecule=molecule, fragment=self.selectedFragment, imagename=imagename, size=self.imageSize, title=title)
-                    #vis.moleculeFragment2BMP(molecule, self.selectedFragment, imagename, self.imageSize)
-                else:
-                    context=DrawContext(molecule=molecule, imagename=imagename, size=self.imageSize, title=title)
-                    #vis.molecule2BMP(molecule, imagename, self.imageSize)
-                image=MolImage(self, self.molWidget, context)
-                self.gridLayout.addWidget(image, i/self.numColumns, i%self.numColumns)
-                self.imageWidgets.append(image)
-        #print "done drawing"
-        for w in self.imageWidgets:
-            w.show()
-
-    def destroyImageWidgets(self):
-        for w in self.imageWidgets:
-            self.molWidget.removeChild(w)
-        self.imageWidgets=[]
-            
-    def showImages(self):
-        self.destroyImageWidgets()
-        #print "destroyed"
-        self.renderImages()
-
-    def redrawImages(self):
-        selected=map(lambda i:self.imageWidgets.index(i), filter(lambda i:i.selected, self.imageWidgets))
-        self.showImages()
-        for i in selected:
-            self.imageWidgets[i].selected=True
-            self.imageWidgets[i].repaint()
-            
-    def mouseAction(self, image, event):
-        if self.ctrlPressed:
-            image.selected=not image.selected
-        else:
-            for i in self.imageWidgets:
-                i.selected=False
-                i.repaint()
-            image.selected=True
-        image.repaint()
-        if self.commitOnChange:
-            self.commit()
-
-    def selectMarked(self):
-        if not self.showFragments:
-            molecules=[i.context.molecule for i in self.imageWidgets]
-            fMap=orngChem.map_fragments([self.selectedFragment], molecules)
-            for i in self.imageWidgets:
-                if fMap[i.context.molecule][self.selectedFragment]:
-                    i.selected=True
-                else:
-                    i.selected=False
-                i.repaint()
-        if self.commitOnChange:
-            self.commit()
-    
-    def commit(self):
-        if self.showFragments:
-            sAttr=self.candidateMolSmilesAttr[self.moleculeSmilesAttr]
-            molecules=map(str, [e[sAttr] for e in self.molData])
-            fragments=[i.context.molecule for i in self.imageWidgets if i.selected]
-            fragmap=orngChem.map_fragments(fragments, molecules)
-            match=filter(lambda m:max(fragmap[m].values()), molecules)
-            examples=[e for e in self.molData if str(e[sAttr]) in match]
-            table=orange.ExampleTable(examples)
-            self.send("Selected Molecules", table)
-        else:
-            mols=[i.context.molecule for i in self.imageWidgets if i.selected]
-            sAttr=self.candidateMolSmilesAttr[self.moleculeSmilesAttr]
-            examples=[e for e in self.molData if str(e[sAttr]) in mols]
-            table=orange.ExampleTable(examples)
-            self.send("Selected Molecules", table)
-
-    def keyPressEvent(self, key):
-        if key.key()==Qt.Key_Control:
-            self.ctrlPressed=TRUE
-        else:
-            key.ignore()
-
-    def keyReleaseEvent(self, key):
-        if key.key()==Qt.Key_Control:
-            self.ctrlPressed=FALSE
-        else:
-            key.ignore()        
-
-if __name__=="__main__":
-    app=QApplication(sys.argv)
-    w=OWMoleculeVisualizer()
-    app.setMainWidget(w)
-    w.show()
-    data=orange.ExampleTable("E://fragG.tab")
-    w.setMoleculeTable(data)
-    data=orange.ExampleTable("E://chem//new//sf.tab")
-    w.setFragmentTable(data)
-    app.exec_loop()

File OWSensProfile.py

-"""
-<name>Sensitivity profile analisys</name>
-"""
-
-import orange
-import orngChem
-from OWWidget import *
-from qt import *
-import OWGUI
-import go
-
-go.loadGO()
-go.loadAnnotation()
-
-class OWSensProfile(OWWidget):
-    settingsList=["aspectNum", "fragFreq", "smilesFileName"]
-    def __init__(self, parent=None, signalManager=None, name="Sens profile"):
-        OWWidget.__init__(self, parent, signalManager, name)
-        self.inputs=[("Sensitivity", ExampleTable, self.sensData)]
-        self.outputs=[("Molecule fragmetns", ExampleTable),("Slim-based molecular profiles", ExampleTable),("Molecule-based slim profiles", ExampleTable),("Slim-based fragment profiles", ExampleTable), ("Fragment-based slim profiles", ExampleTable)]
-
-        self.aspectNum=0
-        self.fragFreq=0.1
-        self.smilesFileName=""
-        self.slimsOnly=1
-        self.maxTerms=100
-        
-        OWGUI.radioButtonsInBox(self.controlArea, self, "aspectNum",["Process", "Function", "Component"], "Aspect")
-        #self.findTermsButton=OWGUI.button(self.controlArea, self, "Find slim terms", callback=self.findTerms)
-        OWGUI.checkBox(self.controlArea, self, "slimsOnly","Slims only")
-        OWGUI.spin(self.controlArea, self, "maxTerms", 10, 1000, box="Number of terms")
-        self.findTermsButton=OWGUI.button(self.controlArea, self, "Find terms", callback=self.findTerms)
-        OWGUI.button(self.controlArea, self, "Load selected terms", callback=self.loadSelectedTerms)
-        OWGUI.doubleSpin(self.controlArea, self, "fragFreq", 0.1, 1.0, 0.1, "Fragment frequency")
-        self.findFragmentsButton=OWGUI.button(self.controlArea, self, "Find fragments", callback=self.findFragments)
-        OWGUI.button(self.controlArea, self, "Load smiles", callback=self.loadSmiles)
-        self.commitButton=OWGUI.button(self.controlArea, self, "Commit", callback=self.commitData)
-        self.findTermsButton.setEnabled(0)
-        self.findFragmentsButton.setEnabled(0)
-        self.commitButton.setEnabled(0)
-        self.resize(100,100)
-        self.fragments=[]
-        self.sensDict={}
-        self.smilesDict={}
-        self.reverseSmilesDict={}
-        self.data=None
-        self.fragmentMap=None
-        self.terms=None
-        self.loadSmiles(self.smilesFileName)
-        self.selectedTerms=[]
-        self.loadSettings()
-        
-    def findFragments(self):
-        if self.smilesDict:
-            smiles=[self.smilesDict[chem] for chem in self.chemicals if chem in self.smilesDict]
-            self.fragments=orngChem.find_fragments(smiles, self.fragFreq)
-            self.fragmentMap=orngChem.map_fragments(self.fragments, smiles)
-            if self.terms:
-                self.commitButton.setEnabled(1)
-
-    def findTerms(self):
-        if not self.data:
-            return 
-        genes=[str(e[0]) for e in self.data]
-        aspect=["P","F","C"][self.aspectNum]
-        if not go.loadedGO:
-            go.loadGO()
-        if not go.loadedSlimGO:
-            go.setSlims("goslim_yeast")
-        if not go.loadedAnnotation:
-            go.loadAnnotation()
-        self.progressBarInit()
-        #self.terms=go.GOTermFinder(genes, slimsOnly=self.slimsOnly, aspect=aspect, progressCallback=self.progressBarSet)
-        self.terms=go.findTerms(genes, slimsOnly=self.slimsOnly, aspect=[aspect],reportEvidence=False, progressCallback=self.progressBarSet)
-        self.progressBarFinished()
-        self.filterTerms()
-        if self.fragments:
-            self.commitButton.setEnabled(1)
-
-    def filterTerms(self):
-        ll=[]
-        for key, val in self.terms.items():
-            if self.selectedTerms and key in self.selectedTerms:
-                ll.append((key, val))
-            elif not self.selectedTerms:
-                ll.append((key, val))
-        #ll.sort(lambda a,b:-cmp(a[1][1], b[1][1]))
-        #ll=ll[:max(len(ll),self.maxTerms)]
-        self.terms=dict(ll)
-
-    def sendFragments(self):
-        vars=[orange.FloatVariable(frag) for frag in self.fragments]
-        mid=orange.newmetaid()
-        chemVar=orange.StringVariable("chemical name")
-        domain=orange.Domain(vars,0)
-        domain.addmeta(mid, chemVar)
-        table=orange.ExampleTable(domain)
-        for chem, map in self.fragmentMap.items():
-            val=[map[frag] for frag in self.fragments]
-            e=orange.Example(domain, val)
-            e[mid]=chem
-            table.append(e)
-        self.send("Molecule fragmetns", table)
-
-    def sendFragmentTerms(self):
-        matrix=[]
-        for frag in self.fragments:
-            vec=[]
-            for term in self.terms.keys():
-                genes=self.terms[term]#[0]
-                #print genes
-                chem=filter(lambda a:self.fragmentMap[a][frag], self.fragmentMap.keys())
-                avgSens=0.0
-                for g in genes:
-                    for c in chem:
-                        avgSens+=self.sensDict[g][self.reverseSmilesDict[c]]
-                avgSens/=len(genes)*len(chem)
-                vec.append(avgSens)
-            matrix.append(vec)
-            
-        vars=[orange.FloatVariable(term) for term in self.terms.keys()]
-        mid=orange.newmetaid()
-        domain=orange.Domain(vars,0)
-        domain.addmeta(mid, orange.StringVariable("fragment"))
-        table=orange.ExampleTable(domain)
-        for frag, vec in zip(self.fragments, matrix):
-            e=orange.Example(domain, vec)
-            e[mid]=frag
-            table.append(e)
-        self.send("Slim-based fragment profiles", table)
-        
-        import Numeric
-        matrix=Numeric.transpose(matrix)
-        vars=[orange.FloatVariable(frag) for frag in self.fragments]
-        mid=orange.newmetaid()
-        mid1=orange.newmetaid()
-        domain=orange.Domain(vars,0)
-        domain.addmeta(mid, orange.StringVariable("term id"))
-        domain.addmeta(mid1, orange.StringVariable("term name"))
-        table=orange.ExampleTable(domain)
-        for term, vec in zip(self.terms.keys(),matrix):
-            e=orange.Example(domain, list(vec))
-            e[mid]=term
-            e[mid1]=go.loadedGO.termDict[term].name
-            table.append(e)
-        self.send("Fragment-based slim profiles", table)
-
-    def sendMoleculeTerms(self):
-        matrix=[]
-        for chem in self.data.domain.variables[1:]:
-            vec=[]
-            for term in self.terms.keys():
-                genes=self.terms[term]#[0]
-                avgSens=0.0
-                for g in genes:
-                    avgSens+=self.sensDict[g][chem]
-                avgSens/=len(genes)
-                vec.append(avgSens)
-            matrix.append(vec)
-            
-        vars=[orange.FloatVariable(term) for term in self.terms.keys()]
-        mid=orange.newmetaid()
-        domain=orange.Domain(vars,0)
-        domain.addmeta(mid, orange.StringVariable("chemical name"))
-        table=orange.ExampleTable(domain)
-        for chem, vec in zip(self.chemicals,matrix):
-            e=orange.Example(domain, vec)
-            e[mid]=chem
-            table.append(e)
-        self.send("Slim-based molecular profiles", table)
-        
-        import Numeric
-        matrix=Numeric.transpose(matrix)
-        vars=[orange.FloatVariable(chem) for chem in self.chemicals]
-        mid=orange.newmetaid()
-        mid1=orange.newmetaid()
-        domain=orange.Domain(vars,0)
-        domain.addmeta(mid, orange.StringVariable("term id"))
-        domain.addmeta(mid1, orange.StringVariable("term name"))
-        table=orange.ExampleTable(domain)
-        for term, vec in zip(self.terms.keys(),matrix):
-            e=orange.Example(domain, list(vec))
-            e[mid]=term
-            e[mid1]=go.loadedGO.termDict[term].name
-            table.append(e)
-        self.send("Molecule-based slim profiles", table)
-
-    def sensData(self, data=None):
-        self.data=data
-        self.send("Molecule fragmetns", None)
-        self.send("Slim-based molecular profiles", None)
-        self.send("Molecule-based slim profiles", None)
-        self.send("Slim-based fragment profiles", None)
-        self.send("Fragment-based slim profiles", None)
-        if self.data:
-            self.findTermsButton.setEnabled(1)
-            self.sensDict={}
-            for e in data:
-                self.sensDict[str(e[0])]=e
-                self.sensDict[go.mapGeneName(str(e[0]))]=e
-            self.chemicals=[var.name for var in data.domain.variables[1:]]
-        else:
-            self.findTermsButton.setEnabled(0)
-            self.commitButton.setEnabled(0)
-            self.sensDict={}
-            self.chemicals=[]
-            
-    def commitData(self):
-        if self.fragments:
-            self.sendFragments()
-            self.sendFragmentTerms()
-        self.sendMoleculeTerms()
-        
-    def loadSmiles(self, filename=""):
-        if not filename:
-            filename=str(QFileDialog.getOpenFileName("./","Text files (*.txt *.tab)",self,"open", "Choose a smiles file"))
-        try:
-            #if filename.endswith(".txt"):
-            #    raise ""
-            data=orange.ExampleTable(filename)
-            self.smilesDict=[(str(e[0]), str(e[1])) for e in data if not e[1].isSpecial()]
-        except:
-            file=open(filename)
-            data=file.read()
-            lines=data.split("\n")
-            self.smilesDict=[l.split("\t") for l in lines]
-        self.smilesDict=dict([(a[0].strip(), a[1].strip()) for a in self.smilesDict if a[1].strip() or a[1].strip()!="?"])
-        self.reverseSmilesDict=dict([(val, key) for key, val in self.smilesDict.items()])
-        self.smilesFileName=filename
-        self.findFragmentsButton.setEnabled(1)
-
-    def loadSelectedTerms(self):
-        filename=str(QFileDialog.getOpenFileName("./","Text file (*.txt)",self,"open", "Choose file containing terms"))
-        data=open(filename)
-        data=data.read().split("\n")
-        self.selectedTerms=data
-        
-if __name__=="__main__":
-    import sys
-    go.setDataDir("E://GO//data")
-    app=QApplication(sys.argv)
-    w=OWSensProfile()
-    app.setMainWidget(w)
-    d=orange.ExampleTable("E://chem//boone//sens.tab")
-    w.sensData(d)
-    w.show()
-    app.exec_loop()
-    w.saveSettings()
-    
-            
-        

File README.txt

-fragmenter.py
-	Takes an input file containing SMILES codes and finds frequent fragments in them
-	Arguments:
-	-s file		(specifies an input file(default "smiles.tab") containing SMILES codes. Can be a tab delim. file
-			with SMILES as a second column or a simple txt file containg SMILES strings
-			seperated with newline)
-	-a attrName	(the name of the attribute that contains the smiles codes in the input file)
-	-o file		(specifies an output file (default "fragments.txt") where it will print one fragment code per line)
-	-f freq		(specifies the required frequency for the fragments (default 0.4))
-	Example:
-	python fragmenter.py -s smiles.tab -a SMILES -o fragmentcodes.txt -f 0.4
-
-fragment_mapper.py
-	Takes an input file containg SMILES codes of chemicals and an file contating fragment codes. Outputs an 
-	tab delim. file specifying the 	number of  times a fragment is matched in each chemical.
-	Arguments:
-	-s file		(specifies an input file (default "smiles.tab") containing SMILES codes. Must be a tab delim. file
-			with SMILES as second column or a column specified by -a attrName)
-	-a attrName	(the name of the attribute that contains the smiles codes in the input file)
-	-f file		(specifies an input file (default "fragments.txt") containing fragment codes seperated by newlines)
-	-o file		(specifies an output file (default "fragmentmap.tab"))
-	-b		(if present the output file will only contain values 0 or 1 indicating the presence of a fragment
-			in a chemical)
-
-profile_analisys.py
-	Takes the sensitivity data and maps it to go terms or fragments and go terms
-	Arguments:
-	-s file		(specifies an input file(default "smiles.tab") containing SMILES codes. Must be a tab delim. file
-			with SMILES as second column)
-	-S file		(specifies an file containing sensitivity data(default "sens.tab"))
-	-b file		(specifies an file containing subset of go terms, that we are interested in (otherwise all terms
-			are considered)
-	-o file		(output file (default "sens_profile.tab")
-	-f file		(file containing fragment codes)
-	-a P|C|F	(go aspect (process|component|function) we are interested in (default P))
-	-g path		(path to the local go database)
-	-l 		(use slims subset only)
-	-m		(output molecule based profile, otherwise fragment based profile will be generated)
-	Example:
-	python profile_analisys.py -s smiles.tab -S sens.tab -f fragments.txt -o ms.tab -b selected_terms.txt -m
-	
-profile_transpose.py
-	Flips the output from profile_analisys.py
-	Arguments:
-	-i file		(input filename(default "sens_profile.tab")
-	-o file		(output filename(default "sens_profile_t.tab")
-	-n name		(meta variable name (default "name"))
-	Example:
-	python profile_transpose.py -i sens_profile.tab -n smiles
-
-map_to_closest_terms.py
-	Takes an input file ("Molecule-based slim profiles" output from 
-	OWSensProfile) and maps terms to closest chemicals and vice versa.
-	Arguments:
-	-i file 	(specifies an input file)
-	-k n 		(map n closest terms to each chemical, default 5)
-	-j n 		(map n closest chemicals to each term, default 3)
-	-o1 file	(specifies an output file for term to chemical mapping, default "term-chem.tab")
-	-o2 file	(specifies an output file for chemical to term mapping, default "chem-term.tab")
-	
-	Example:
-	python map_to_closest_terms.py -i ms.tab -k 5 -j 5 
-
-map_genes_to_terms.py
-	For each specified term get all genes from the whole annotation and only those from the 
-	Boone paper (reads those genes from genes.txt). Outputs a file named "terms_with_genes.txt".
-	
-	Example:
-	python map_genes_to_terms.py
-
-plot.py
-	Draws the CA plot of any OWSensProfile or profile_analisys.py output (Molecule-based slim terms ...)
-	Example:
-	python plot.py ms.tab
-
-OWSensProfile widget
-	input: sensitivity data from Boone ("sens.tab")
-	
-	
-
-	

File chemicals_with_closest_process_terms.xls

Binary file removed.

File findFragmentsAndTerms.ows

-<?xml version="1.0" ?>
-<schema>
-	<widgets>
-		<widget caption="File" widgetName="OWFile" xPos="10" yPos="150"/>
-		<widget caption="Sensitivity profile analysisy" widgetName="OWSensProfile" xPos="120" yPos="150"/>
-		<widget caption="Data Table" widgetName="OWDataTable" xPos="330" yPos="60"/>
-		<widget caption="Save" widgetName="OWSave" xPos="330" yPos="150"/>
-		<widget caption="Save (2)" widgetName="OWSave" xPos="340" yPos="260"/>
-		<widget caption="Save (3)" widgetName="OWSave" xPos="280" yPos="330"/>
-		<widget caption="Save (4)" widgetName="OWSave" xPos="560" yPos="80"/>
-		<widget caption="Save (5)" widgetName="OWSave" xPos="520" yPos="250"/>
-	</widgets>
-	<channels>
-		<channel enabled="1" inWidgetCaption="Sensitivity profile analysisy" outWidgetCaption="File" signals="[('Examples', 'Sensitivity')]"/>
-		<channel enabled="1" inWidgetCaption="Data Table" outWidgetCaption="Sensitivity profile analysisy" signals="[('Molecule fragmetns', 'Examples'), ('Slim-based molecular profiles', 'Examples'), ('Molecule-based slim profiles', 'Examples'), ('Slim-based fragment profiles', 'Examples'), ('Fragment-based slim profiles', 'Examples')]"/>
-		<channel enabled="1" inWidgetCaption="Save" outWidgetCaption="Sensitivity profile analysisy" signals="[('Molecule fragmetns', 'Examples')]"/>
-		<channel enabled="1" inWidgetCaption="Save (2)" outWidgetCaption="Sensitivity profile analysisy" signals="[('Slim-based molecular profiles', 'Examples')]"/>
-		<channel enabled="1" inWidgetCaption="Save (3)" outWidgetCaption="Sensitivity profile analysisy" signals="[('Molecule-based slim profiles', 'Examples')]"/>
-		<channel enabled="1" inWidgetCaption="Save (4)" outWidgetCaption="Sensitivity profile analysisy" signals="[('Slim-based fragment profiles', 'Examples')]"/>
-		<channel enabled="1" inWidgetCaption="Save (5)" outWidgetCaption="Sensitivity profile analysisy" signals="[('Fragment-based slim profiles', 'Examples')]"/>
-	</channels>
-	<settings settingsDictionary="{'Sensitivity profile analysisy': &quot;(dp1\nS'aspectNum'\np2\nI0\nsS'fragFreq'\np3\nF0.5\nsS'smilesFileName'\np4\nS'E:/chem/boone/smiles.tab'\np5\ns.&quot;, 'Save (3)': &quot;(dp1\nS'selectedFileName'\np2\nS''\nsS'recentFiles'\np3\n(lp4\nS'E:/chem/new/ms.tab'\np5\naS'E:/chem/New Folder 1/ms.tab'\np6\naS'E:/chem/New Folder 1/fs.tab'\np7\naS'E:/chem/New Folder 1/sf.tab'\np8\naS'E:/chem/New Folder 1/sm.tab'\np9\naS'E:/chem/New Folder 1/frag.tab'\np10\nas.&quot;, 'Save (2)': &quot;(dp1\nS'selectedFileName'\np2\nS''\nsS'recentFiles'\np3\n(lp4\nS'E:/chem/new/sm.tab'\np5\naS'E:/chem/New Folder 1/sm.tab'\np6\naS'E:/chem/New Folder 1/fs.tab'\np7\naS'E:/chem/New Folder 1/sf.tab'\np8\naS'E:/chem/New Folder 1/ms.tab'\np9\naS'E:/chem/New Folder 1/frag.tab'\np10\nas.&quot;, 'Data Table': '(dp1\n.', 'File': &quot;(dp1\nS'recentFiles'\np2\n(lp3\nS'E:/chem/boone/sens.tab'\np4\naS'E:/orangecvs/orange/doc/datasets/iris.tab'\np5\naS'E:/chem/data/mutagen_frag_0.01.tab'\np6\naS'E:/chem/data/mutagen_frag_0.03.tab'\np7\naS'E:/chem/data/mutagen_frag_0.05.tab'\np8\naS'E:/chem/mutagen_frag.tab'\np9\naS'E:/orangecvs/orange/doc/datasets/shuttle-landing-control.tab'\np10\naS'E:/orangecvs/orange/doc/datasets/ionosphere.tab'\np11\naS'E:/orangecvs/orange/doc/datasets/primary-tumor.tab'\np12\naS'E:/orangecvs/orange/doc/datasets/monks-1.tab'\np13\naS'E:/orangecvs/orange/doc/datasets/auto-mpg.tab'\np14\naS'E:/orangecvs/orange/doc/datasets/imports-85.tab'\np15\naS'E:/orangecvs/orange/doc/datasets/housing.tab'\np16\naS'E:/orangecvs/orange/doc/datasets/zoo.tab'\np17\naS'E:/orangecvs/orange/doc/datasets/monks-1_test.tab'\np18\nas.&quot;, 'Save (5)': &quot;(dp1\nS'selectedFileName'\np2\nS''\nsS'recentFiles'\np3\n(lp4\nS'E:/chem/new/fs.tab'\np5\naS'E:/chem/New Folder 1/fs.tab'\np6\naS'E:/chem/New Folder 1/sf.tab'\np7\naS'E:/chem/New Folder 1/sm.tab'\np8\naS'E:/chem/New Folder 1/ms.tab'\np9\naS'E:/chem/New Folder 1/frag.tab'\np10\nas.&quot;, 'Save (4)': &quot;(dp1\nS'selectedFileName'\np2\nS''\nsS'recentFiles'\np3\n(lp4\nS'E:/chem/new/sf.tab'\np5\naS'E:/chem/New Folder 1/sf.tab'\np6\naS'E:/chem/New Folder 1/fs.tab'\np7\naS'E:/chem/New Folder 1/sm.tab'\np8\naS'E:/chem/New Folder 1/ms.tab'\np9\naS'E:/chem/New Folder 1/frag.tab'\np10\nas.&quot;, 'Save': &quot;(dp1\nS'selectedFileName'\np2\nS''\nsS'recentFiles'\np3\n(lp4\nS'E:/chem/new/frag.tab'\np5\naS'E:/chem/New Folder 1/frag.tab'\np6\naS'E:/chem/New Folder 1/fs.tab'\np7\naS'E:/chem/New Folder 1/sf.tab'\np8\naS'E:/chem/New Folder 1/sm.tab'\np9\naS'E:/chem/New Folder 1/ms.tab'\np10\nas.&quot;}"/>
-</schema>

File fragment_mapper.py

-import orange
-import orngChem
-import sys, getopt
-
-smilesFilename="smiles.tab"
-fragmentsFilename="fragments.txt"
-outputFilename="fragmentmap.tab"
-binary=False
-
-opt=dict(getopt.getopt(sys.argv[1:], "s:f:o:a:b")[0])
-
-smilesFilename=opt.get("-s",None) or smilesFilename
-fragmetnsFilename=opt.get("-f", None) or fragmentsFilename
-outputFilename=opt.get("-o", None) or outputFilename
-attrName=opt.get("-a", 1)
-binary=opt.has_key("-b")
-
-smilesData=orange.ExampleTable(smilesFilename)
-smilesData=smilesData.filter(orange.Filter(lambda e:not e[attrName].isSpecial()))
-#smilesDict=dict([(str(e[0]), str(e[1])) for e in smilesData])
-#revSmilesDict=dict([(val, key) for key, val in smilesDict.items()])
-smilesCodes=[str(e[attrName]) for e in smilesData]
-
-fragments=map(lambda s:s.strip(), open(fragmetnsFilename).read().split("\n"))
-fragmentMap=orngChem.map_fragments(fragments, smilesCodes, binary)
-
-vars=[orange.FloatVariable(frag) for frag in fragments]
-mid=orange.newmetaid()
-cvar=orange.StringVariable("chemical")
-vars=smilesData.domain.attributes+vars+(smilesData.domain.classVar and [smilesData.domain.classVar] or [])
-
-domain=orange.Domain(vars,0)
-domain.addmetas(smilesData.domain.getmetas())
-#domain.addmeta(mid,cvar)
-table=orange.ExampleTable(domain)
-for e in smilesData:
-    ex=orange.Example(domain)
-    for v in smilesData.domain.variables+smilesData.domain.getmetas().values():
-        ex[v]=e[v]
-    fragmap=fragmentMap[str(e[attrName])]
-    for frag, val in fragmap.items():
-        ex[frag]=val
-    table.append(ex)
-"""
-for chem, fragmap in fragmentMap.items():
-    ex=orange.Example(domain)
-    for fragment, val in fragmap.items():
-        ex[fragment]=val
-    ex[mid]=chem
-    table.append(ex)
-"""
-table.save(outputFilename)

File fragmenter.py

-import orange
-import orngChem
-import getopt
-import sys
-
-smilesFilename="smiles.tab"
-fragmentFilename="fragments.txt"
-freq=0.4
-opt=dict(getopt.getopt(sys.argv[1:], "s:f:o:a:")[0])
-smilesFilename=opt.get("-s", None) or smilesFilename
-fragmentFilename=opt.get("-o", None) or fragmentFilename
-freq=float(opt.get("-f", freq))
-attrName=opt.get("-a",None) or 1
-
-if smilesFilename.endswith(".tab"):
-    smilesData=orange.ExampleTable(smilesFilename)
-    smiles=map(str, [e[attrName] for e in smilesData if not e[attrName].isSpecial()])
-else:
-    smiles=map(lambda s:s.strip(), open(smilesFilename).read().split("\n"))
-    
-fragments=orngChem.find_fragments(smiles,freq)
-file=open(fragmentFilename, "w")
-file.write("\n".join(fragments))
-file.close()
-
-
-

File fragments.txt

-C
-C-C
-C-C-C
-C-C-C-C
-C-C-C-C-C
-C-C-C-C-C-C
-C-C-C-C=C-C=C
-C-C-C-N
-C-C-C=C-C=C
-C-C-C=C-C=C-C
-C-C-C=O
-C-C-N
-C-C-O
-C-C-O-C
-C-C=C
-C-C=C-C
-C-C=C-C-C
-C-C=C-C-C-C
-C-C=C-C-C-C-C
-C-C=C-C=C-C
-C-C=O
-C-N
-C-N-C
-C-N-C-C
-C-O
-C-O-C
-C=C
-C=C-C-C
-C=C-C-C-C
-C=C-C-C-C-C
-C=C-C=C
-C=C-C=C-C
-C=C-C=C-C=C
-C=C-C=C-C=C-C
-C=O
-N
-O
-O-C-C-C
-O-C-C-C-C
-O-C-C=C
-O-C-C=C-C

File genes.txt

-YBR084C-A
-YOR104W
-YMR063W
-YDR432W
-YHR081W
-YOL068C
-YOR215C
-YBR127C
-YMR035W
-YDR287W
-YOR214C
-YOR234C
-YGR209C
-YBR182C
-YPR084W
-YLR068W
-YGL223C
-YCR101C
-YLR056W
-YBL087C
-YLR185W
-YNL280C
-YOR299W
-YDR025W
-YIL099W
-YDL082W
-YFR025C
-YOR092W
-YBR042C
-YMR244W
-YOL048C
-YPL046C
-YKR017C
-YPR071W
-YLR144C
-YBR215W
-YDR458C
-YDR147W
-YPL068C
-YGR023W
-YGR085C
-YOR268C
-YCR102C
-YOR136W
-YML035C
-YEL044W
-YPR148C
-YBL033C
-YGR159C
-YPR002W
-YPL121C
-YLR027C
-YBR138C
-YLR270W
-YDR101C
-YDL130W
-YHR156C
-YNL211C
-YOR185C
-YMR188C
-YLR214W
-YGL205W
-YPR101W
-YLL006W
-YLR059C
-YGR184C
-YLR108C
-YBR024W
-YNL011C
-YOR352W
-YLR231C
-YDR283C
-YDL138W
-YDR471W
-YBR094W
-YJR032W
-YMR169C
-YLR326W
-YMR266W
-YDR134C
-YBR097W
-YHR106W
-YBL093C
-YDR450W
-YNL014W
-YGL070C
-YOR171C
-YDL240W
-YOR191W
-YBR025C
-YOR084W
-YER032W
-YDR258C
-YHL014C
-YDR316W
-YHR039C
-YDR465C
-YIR025W
-YML118W
-YJL059W
-YKL073W
-YDR275W
-YPL141C
-YGL078C
-YDR122W
-YDR178W
-YLR233C
-YDR255C
-YPL017C
-YLR288C
-YBR213W
-YHR066W
-YOR337W
-YBR128C
-YKR010C
-YAL049C
-YHR026W
-YOR178C
-YOR304C-A
-YPR115W
-YBR272C
-YAL034C
-YKL150W
-YNL236W
-YJR135C
-YDR470C
-YDR092W
-YKL091C
-YPL050C
-YEL037C
-YPL088W
-YHR034C
-YDR105C
-YDR281C
-YDR279W
-YOR177C
-YPL024W
-YBR149W
-YBR057C
-YLR043C
-YMR091C
-YBR148W
-YDR359C
-YDR159W
-YPR199C
-YLR221C
-YOR230W
-YEL012W
-YNL330C
-YJR088C
-YDR033W
-YLL045C
-YDL175C
-YDL125C
-YOL012C
-YGL085W
-YNL286W
-YBR289W
-YNR021W
-YPL198W
-YDR406W
-YHR137W
-YPL129W
-YLR443W
-YNL291C
-YNL304W
-YKL143W
-YMR143W
-YIR026C
-YGL147C
-YDR336W
-YGR272C
-YDR140W
-YPR093C
-YLR228C
-YBR141C
-YPL072W
-YMR234W
-YLR014C
-YNL069C
-YDR120C
-YBR005W
-YIL110W
-YKR021W
-YDL133W
-YBR066C
-YFL007W
-YJL127C
-YBL058W
-YLL002W
-YJL115W
-YGL175C
-YDR466W
-YGL200C
-YHR195W
-YMR170C
-YOR320C
-YDR195W
-YNL107W
-YBR133C
-YDL116W
-YER070W
-YKL057C
-YKL178C
-YLR283W
-YPR140W
-YLR168C
-YOL027C
-YLR047C
-YDR350C
-YNL239W
-YNL215W
-YBR195C
-YJR070C
-YOR112W
-YMR071C
-YLR148W
-YDR500C
-YOL013W-A
-YEL031W
-YHR010W
-YNR010W
-YBR173C
-YOR209C
-YDL099W
-YNL121C
-YNR052C
-YJR153W
-YPR201W
-YIR001C
-YER073W
-YBR157C
-YBR228W
-YJR003C
-YMR160W
-YDL241W
-YML070W
-YML002W
-YKL133C
-YCR107W
-YIL016W
-YHL010C
-YLL012W
-YJL141C
-YMR251W
-YMR295C
-YMR280C
-YBR180W
-YMR041C
-YJR049C
-YGR144W
-YLL010C
-YEL039C
-YOL107W
-YAL005C
-YER117W
-YDR017C
-YOR133W
-YNL135C
-YDR385W
-YLR048W
-YDL052C
-YFL023W
-YHR041C
-YDL112W
-YLR450W
-YIL121W
-YPR058W
-YMR219W
-YGR012W
-YDR097C
-YLR063W
-YML119W
-YPR043W
-YDL160C
-YKR013W
-YMR304W
-YKL174C
-YAL021C
-YOR291W
-YBR168W
-YJR059W
-YKL148C
-YEL054C
-YOR140W
-YGR223C
-YMR261C
-YMR142C
-YMR224C
-YHR030C
-YJL095W
-YLR138W
-YBR260C
-YGR196C
-YPL140C
-YPR095C
-YKL002W
-YNL094W
-YPL069C
-YDL066W
-YKL040C
-YCR053W
-YHR025W
-YNL148C
-YMR042W
-YHR008C
-YNL241C
-YPR074C
-YGL136C
-YHR046C
-YLR203C
-YOR350C
-YDR452W
-YDR018C
-YOR081C
-YNL100W
-YOR156C
-YDR338C
-YLR130C
-YDR234W
-YFR048W
-YDL001W
-YER060W-A
-YGL089C
-YOR332W
-YMR088C
-YIL090W
-YLR118C
-YOR131C
-YPR060C
-YOL023W
-YJR113C
-YLR382C
-YML061C
-YMR228W
-YCR071C
-YBR282W
-YNL005C
-YLR260W
-YNR037C
-YOL095C
-YBR179C
-YMR089C
-YDL113C
-YDL181W
-YDR042C
-YAL048C
-YNL160W
-YPL104W
-YCR046C
-YOR201C
-YDL045W-A
-YPL098C
-YGR102C
-YJR144W
-YKR006C
-YLR312W-A
-YLR069C
-YDR065W
-YFL036W
-YPR166C
-YNL213C
-YDL104C
-YDR115W
-YOR150W
-YBL002W
-YOL033W
-YPL040C
-YOL100W
-YMR282C
-YOR205C
-YGL064C
-YDR405W
-YGR171C
-YBR268W
-YMR287C
-YKR085C
-YBR251W
-YPL173W
-YER050C
-YBL044W
-YDL057W
-YPR047W
-YDR194C
-YMR184W
-YDR337W
-YDL049C
-YDR237W
-YLR139C
-YDR518W
-YKL138C
-YPL029W
-YDR268W
-YDL044C
-YBR163W
-YMR158W
-YDR377W
-YGR215W
-YDR298C
-YPL118W
-YCR004C
-YKL170W
-YGL107C
-YMR286W
-YPL078C
-YBL080C
-YNL073W
-YDR175C
-YDR296W
-YOR305W
-YML088W
-YNL177C
-YJL102W
-YLL033W
-YPR116W
-YJL096W
-YBL038W
-YBL090W
-YMR193W
-YGL129C
-YMR267W
-YPR100W
-YDR079W
-YPL005W
-YHR183W
-YGL143C
-YER169W
-YMR293C
-YHR168W
-YHR051W
-YCR003W
-YER103W
-YER154W
-YKL194C
-YLR091W
-YLR114C
-YKL003C
-YER028C
-YMR083W
-YOR211C
-YHR147C
-YHR011W
-YDL063C
-YNL252C
-YCR028C-A
-YPL148C
-YNL003C
-YOR033C
-YDR078C
-YLR439W
-YDL033C
-YDR332W
-YCR024C
-YKL155C
-YDL198C
-YGR257C
-YDL146W
-YDR295C
-YER110C
-YNL284C
-YPL097W
-YOL129W
-YMR037C
-YLL026W
-YIR037W
-YBR216C
-YJL079C
-YBR120C
-YOR065W
-YHL038C
-YDL069C
-YBL045C
-YDR493W
-YJL166W
-YPR191W
-YKL086W
-YFR033C
-YMR175W
-YLR448W
-YKR066C
-YPL215W
-YLR077W
-YJR124C
-YJL209W
-YGR174C
-YBR003W
-YGR183C
-YOR037W
-YJR048W
-YAL039C
-YDR204W
-YNR041C
-YOR125C
-YML110C
-YOL008W
-YOR022C
-YLR204W
-YGR150C
-YGR220C
-YKL106W
-YGR101W
-YKL016C
-YJL063C
-YLR220W
-YNL123W
-YBL102W
-YOR371C
-YDR529C
-YKL208W
-YKL087C
-YBR187W
-YIL128W
-YOR017W
-YPL188W
-YER178W
-YAL044C
-YNL071W
-YBR248C
-YFL018C
-YJL046W
-YOR196C
-YER061C
-YOR221C
-YLR239C
-YMR207C
-YHR067W
-YKL055C
-YMR097C
-YPL013C
-YDL167C
-YHR120W
-YHR038W
-YNL081C
-YKL134C
-YBR035C
-YOL096C
-YPL174C
-YJR122W
-YPR067W
-YLL027W
-YLR304C
-YER122C
-YDR322W
-YHR091C
-YLR369W
-YBR132C
-YJR077C
-YMR002W
-YJL013C
-YBR185C
-YDL202W
-YOR330C
-YIR021W
-YOR187W
-YGL220W
-YDL230W
-YPL092W
-YHR029C
-YPR106W
-YGL254W
-YMR072W
-YKR099W
-YLL024C
-YMR084W
-YGL240W
-YFR034C
-YDL106C
-YNL025C
-YOL067C
-YNL076W
-YBL103C
-YGL252C
-YFL001W
-YJL180C
-YLR420W
-YKR028W
-YBL099W
-YNL315C
-YDR512C
-YNR020C
-YML081C-A
-YLR193C
-YDL142C
-YHR100C
-YHR194W
-YER093C-A
-YLR324W
-YFR011C
-YKR016W
-YDR393W
-YLR393W
-YOR147W
-YML028W
-YHR206W
-YIL173W
-YDR391C
-YBL095W
-YBR084W
-YOR334W
-YKR087C
-YPL060W
-YCL044C
-YLR368W
-YHR189W
-YML009C
-YIR024C
-YNR001C
-YNL242W
-YKL167C
-YKL109W
-YBL021C
-YOR358W
-YOR047C
-YOL152W
-YER182W
-YGR238C
-YGR281W
-YCR005C
-YKR050W
-YOR238W
-YOR284W
-YPL147W
-YIL145C
-YDL201W
-YMR226C
-YPL191C
-YOR280C
-YLR392C
-YOR321W
-YLL018C-A
-YOL075C
-YLR395C
-YKR011C
-YLR227C
-YPR125W
-YLR011W
-YGR084C
-YBL098W
-YBR014C
-YPL103C
-YOR313C
-YPR042C
-YMR232W
-YNR033W
-YJR094C
-YLR356W
-YDR423C
-YGL057C
-YBR259W
-YPR192W
-YOR344C
-YLR413W
-YMR174C
-YDR058C
-YOR289W
-YHR138C
-YNL029C
-YBL066C
-YHR179W
-YDR379W
-YIL138C
-YGR236C
-YBR293W
-YJR148W
-YDL238C
-YLR451W
-YNL095C
-YPL230W
-YER059W
-YBR203W
-YOR292C
-YJR142W
-YDR001C
-YPL139C
-YLR038C
-YBR264C
-YDR494W
-YKL064W
-YPL099C
-YCL039W
-YNL117W
-YGR072W
-YDR511W
-YMR257C
-YNL067W
-YML011C
-YER153C
-YPL132W
-YMR205C
-YHR116W
-YER141W
-YML129C
-YDL107W
-YGR112W
-YER058W
-YJL052W
-YKR097W
-YJR004C
-YBR037C
-YGR222W
-YOR354C
-YKL121W
-YJR145C
-YNL255C
-YIL040W
-YGR092W
-YLR190W
-YIR033W
-YHR013C
-YGR181W
-YFR035C
-YAR002C-A
-YJL105W
-YGR049W
-YGR231C
-YLR067C
-YLR218C
-YMR073C
-YNL329C
-YER078C
-YMR135C
-YDR244W
-YGL153W
-YGR077C
-YKL197C
-YOR226C
-YBR105C
-YDR265W
-YLR191W
-YDR329C
-YOR255W
-YGR133W
-YMR026C
-YAL055W
-YJL210W
-YKL185W
-YDL065C
-YDR400W
-YHR077C
-YER143W
-YJR035W
-YKL114C
-YER142C
-YMR276W
-YNR074C
-YOL044W
-YGL227W
-YMR064W
-YOR045W
-YLR399C
-YGL087C
-YCL037C
-YDR207C
-YJR139C
-YDR247W
-YER162C
-YGR258C
-YMR201C
-YOR346W
-YPL022W
-YML095C
-YER116C
-YPL167C
-YOR231W
-YIL139C
-YML096W
-YBR244W
-YDR291W
-YAL027W
-YLR032W
-YJR043C
-YHR134W
-YBR114W
-YOL093W
-YMR075W
-YDR363W
-YDR439W
-YAL019W
-YNL273W
-YDL059C
-YPL194W
-YJL092W
-YLR135W
-YDR014W
-YMR048W
-YCL016C
-YJL047C
-YLR376C
-YIL132C
-YBR073W
-YOR368W
-YBR058C
-YER173W
-YOR144C
-YBL088C
-YHR031C
-YPR120C
-YDR076W
-YER095W
-YDR004W
-YGL163C
-YDR386W
-YLR234W
-YBR098W
-YDR369C
-YNL250W
-YML032C
-YHR154W
-YMR190C
-YLR320W
-YPR164W
-YPR135W
-YDR217C
-YOL090W
-YLR102C
-YDR139C
-YDR036C
-YLR248W
-YPL003W
-YPR068C
-YLR306W
-YBR028C
-YJR099W
-YPR066W
-YFR010W
-YKL213C
-YDR075W
-YNL201C
-YHL006C
-YOR223W
-YMR198W
-YMR284W
-YER016W
-YGR262C
-YOR141C
-YOR080W
-YLR297W
-YAR014C
-YJL123C
-YAR002W
-YDL013W
-YMR039C
-YLR006C
-YPR020W
-YCR086W
-YOR025W
-YLR403W
-YIL153W
-YNL040W
-YNL015W
-YPR040W
-YMR223W
-YOR324C
-YCL049C
-YJL107C
-YCR015C
-YEL016C
-YLR013W
-YGR249W
-YPR062W
-YER152C
-YBR197C
-YFL003C
-YLR431C
-YFL012W
-YPL206C
-YIL060W
-YCR021C
-YLL061W
-YOR058C
-YFR022W
-YFL050C
-YGR248W
-YIL001W
-YBR230C
-YGL208W
-YLR328W
-YPL247C
-YIL164C
-YPR138C
-YHR035W
-YNL275W
-YGR203W
-YAL015C
-YGL032C
-YMR020W
-YJR051W
-YOR378W
-YDL199C
-YJR137C
-YIR029W
-YAL017W
-YDR533C
-YPR145W
-YHR076W
-YJL048C
-YIL158W
-YIR028W
-YMR008C
-YER067W
-YLR364W
-YKL146W
-YIL094C
-YLL058W
-YPR128C
-YPL263C
-YDR519W
-YIR027C
-YJL160C
-YOR365C
-YDL239C
-YCL028W
-YOR374W
-YLR445W
-YHL030W
-YDR536W
-YMR017W
-YBR158W
-YCR073C
-YGL230C
-YER044C-A
-YGR161C
-YGL157W
-YLR001C
-YER039C-A
-YBR296C
-YPL245W
-YCR011C
-YNL200C
-YMR271C
-YER124C
-YNL268W
-YER150W
-YFR015C
-YPR156C
-YGL196W
-YGL248W
-YGR127W
-YGL067W
-YKR091W
-YLL054C
-YHR016C
-YLR012C
-YKL005C
-YMR157C
-YEL041W
-YKR003W
-YLL060C
-YBR285W
-YKR080W
-YNL274C
-YCR043C
-YPR198W
-YOL052C
-YML083C
-YPL222W
-YAR031W
-YPL216W
-YMR300C
-YKR075C
-YPL137C
-YAR035W
-YAR028W
-YGR287C
-YAR023C
-YEL017W
-YPR184W
-YOL084W
-YLR438W
-YPL264C
-YIL155C
-YJL200C
-YCL075W
-YLR432W
-YDR534C
-YEL052W
-YNL333W
-YIR007W
-YBR301W
-YER184C
-YAL065C
-YJL162C
-YER011W
-YHR198C
-YKL094W
-YMR009W
-YML004C
-YML058W
-YLR460C
-YBR151W
-YOR385W
-YPL196W
-YML053C
-YOL098C
-YKR065C
-YNR067C
-YNL336W
-YMR171C
-YEL066W
-YCL026C-A
-YAR050W
-YFR049W
-YIR032C
-YNL318C
-YER183C
-YMR322C
-YFR030W
-YJR133W
-YML072C
-YBR241C
-YML120C
-YCL048W
-YMR318C
-YPR196W
-YJR061W
-YMR085W
-YKR105C
-YLR422W
-YJL196C
-YNL314W
-YML078W
-YLR290C
-YDR116C
-YPL109C
-YMR289W
-YMR317W
-YDL222C
-YNR007C
-YAL018C
-YCR032W
-YHR182W
-YCR091W
-YGR273C
-YML020W
-YPR157W
-YKL175W
-YNL305C
-YHR152W
-YLL057C
-YER049W
-YAL028W
-YKL188C
-YML060W
-YNR002C
-YAL029C
-YJL213W
-YGL236C
-YGL259W
-YDR541C
-YGL251C
-YKR101W
-YNL320W
-YAL022C
-YKR089C
-YPL207W
-YDL215C
-YIR017C
-YJR150C
-YEL038W
-YPL221W
-YML079W
-YOL109W
-YNR018W
-YNR055C
-YJR119C
-YPL159C
-YJL153C
-YDR517W
-YCR010C
-YNL316C
-YBR242W
-YBR214W
-YFR017C
-YNL008C
-YER034W
-YBR263W
-YNL012W
-YFL055W
-YEL065W
-YHR086W
-YOR266W
-YIL165C
-YAL008W
-YLR449W
-YJR134C
-YOL071W
-YNL335W
-YIL170W
-YDR538W
-YMR306W
-YOL158C
-YOR286W
-YFL041W
-YBR250W
-YHR021W-A
-YKL163W
-YPL187W
-YFL052W
-YNR040W
-YDR539W
-YLR461W
-YNR056C
-YNR063W
-YIR044C
-YKR098C
-YNR065C
-YER046W
-YGR239C
-YML100W
-YDR289C
-YHR124W
-YFR053C
-YGL261C
-YBR299W
-YGL262W
-YGR286C
-YFL042C
-YMR150C
-YNR062C
-YEL040W
-YCR067C
-YMR054W
-YNR058W
-YNL311C
-YIL166C
-YLR224W
-YDR513W
-YIR043C
-YGR292W
-YJR120W
-YMR195W
-YOL163W
-YJR127C
-YDR430C
-YBR262C
-YHL032C
-YDL133C-A
-YLR348C
-YHL021C
-YBR104W
-YIL070C
-YMR177W
-YFR007W
-YNL214W
-YBR255W
-YCR098C
-YGL170C
-YER187W
-YOR347C
-YJR091C
-YAR015W
-YIL146C
-YKR058W
-YKR009C
-YMR019W
-YPL267W
-YNL332W
-YJR115W
-YJR015W
-YKR046C
-YLL046C
-YPL229W
-YFL034C-A
-YGR033C
-YKR039W
-YCR100C
-YIL085C
-YPL258C
-YLR353W
-YIL072W
-YMR225C
-YKL221W
-YKR078W
-YLL041C
-YMR034C
-YBR273C
-YEL047C
-YAL046C
-YMR285C
-YAL037W
-YKL220C
-YAL064C-A
-YNL301C
-YBR294W
-YIR018W
-YAL061W
-YAL060W
-YCR099C
-YNL339C
-YGR295C
-YER179W
-YMR147W
-YOL147C
-YAL062W
-YMR023C
-YGR247W
-YHR127W
-YAL068C
-YER176W
-YAL030W
-YIL067C
-YDR501W
-YKR045C
-YMR115W
-YAL051W
-YKL222C
-YFR039C
-YIL130W
-YOL132W
-YCR076C
-YCL069W
-YHL039W
-YDR540C
-YNR064C
-YKL218C
-YOR375C
-YEL025C
-YKR043C
-YCR083W
-YBR258C
-YCR069W
-YJR098C
-YJR149W
-YPL171C
-YGR235C
-YOL141W
-YMR011W
-YIL156W
-YGL222C
-YNL283C
-YFR032C
-YLL015W
-YLL053C
-YCR105W
-YCR106W
-YGL263W
-YFR055W
-YKR106W
-YKR104W
-YOR377W
-YCL038C
-YCL074W
-YFL051C
-YPL274W
-YIR035C
-YGL243W
-YIL087C
-YEL071W
-YIL167W
-YNL321W
-YLL052C
-YDR506C
-YCL047C
-YNR066C
-YNR071C
-YJR078W
-YFL027C
-YHL017W
-YMR313C
-YLR404W
-YBR199W
-YDR502C
-YFR038W
-YOL091W
-YOL119C
-YIR004W
-YFR047C
-YNR075W
-YOL104C
-YKL120W
-YJL084C
-YCR073W-A
-YPR200C
-YGR034W
-YJR094W-A
-YBR071W
-YER041W
-YHL026C
-YOL020W
-YGR111W
-YBL107C
-YBL043W
-YNL193W
-YER047C
-YEL006W
-YIR034C
-YGL209W
-YLR225C
-YDR151C
-YER134C
-YPR073C
-YBR207W
-YLR384C
-YPL039W
-YGR256W
-YCR060W
-YJR080C
-YJL155C
-YLL048C
-YER040W
-YGR027C
-YIL137C
-YIL079C
-YIL133C
-YOL030W
-YGR040W
-YKR052C
-YFR031C-A
-YIL043C
-YNR048W
-YOL045W
-YNL108C
-YER062C
-YJL172W
-YNL068C
-YEL064C
-YNL129W
-YJL042W
-YPL172C
-YOR382W
-YNR032C-A
-YER118C
-YKL010C
-YBR156C
-YOR258W
-YLR226W
-YDR496C
-YPL135W
-YBL003C
-YML038C
-YER156C
-YPL079W
-YHL033C
-YIL119C
-YMR056C
-YMR310C
-YMR258C
-YML108W
-YBR204C
-YMR312W
-YKL110C
-YGR200C
-YPL101W
-YAL020C
-YPL086C
-YPL049C
-YNL090W
-YPR114W
-YPR008W
-YOR083W
-YLR023C
-YHL024W
-YIL135C
-YGR017W
-YIL123W
-YIL111W
-YIL161W
-YIL160C
-YIL055C
-YIL057C
-YIL116W
-YBL059W
-YHR199C
-YBL029W
-YBL055C
-YBL069W
-YBL063W
-YBL075C
-YHR176W
-YBL031W
-YBL009W
-YBL091C
-YBL078C
-YBL057C
-YBL052C
-YBL036C
-YKL157W
-YOR338W
-YBL015W
-YDR110W
-YPR030W
-YFL040W
-YFL028C
-YML101C
-YFL021W
-YLL042C
-YMR210W
-YFL047W
-YMR302C
-YPR188C
-YGL257C
-YBL049W
-YNR034W
-YOR348C
-YLR028C
-YFR018C
-YFL046W
-YJR108W
-YHR006W
-YBL011W
-YAR027W
-YBL054W
-YDR528W
-YCR075C
-YJL181W
-YFL053W
-YBL106C
-YIR014W
-YCL057W