# **************************************************************************
# *
# * Authors: Pablo Conesa (pconesa@cnb.csic.es)
# Marta Martinez (mmmtnez@cnb.csic.es)
# * Roberto Marabini (roberto@cnb.csic.es)
# * Unidad de Bioinformatica of Centro Nacional de Biotecnologia , CSIC
# *
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# * 02111-1307 USA
# *
# * All comments concerning this program package may be sent to the
# * e-mail address 'scipion@cnb.csic.es'
# *
# **************************************************************************
from pwem.wizards import GetStructureChainsWizard, pwobj, emconv
from .protocols import ChimeraModelFromTemplate, ChimeraSubtractionMaps
from .editList import EntryGrid
from .protocols.protocol_contacts import ChimeraProtContacts
from pyworkflow.wizard import Wizard
from pyworkflow.gui.tree import ListTreeProviderString
from pyworkflow.gui import dialog
[docs]class GetStructureChainsWizardChimera(GetStructureChainsWizard):
_targets = [(ChimeraModelFromTemplate, ['inputStructureChain']),
(ChimeraSubtractionMaps, ['inputStructureChain'])]
[docs]class GetStructureChains2WizardChimera(GetStructureChainsWizard):
_targets = [(ChimeraSubtractionMaps, ['selectStructureChain']),
(ChimeraModelFromTemplate, ['selectStructureChain'])]
[docs] def show(self, form, *params):
protocol = form.protocol
try:
modelsLength, modelsSeq = self.getModelsChainsStep(protocol)
except Exception as e:
print("ERROR: ", e)
return
self.editionListOfChains(modelsLength)
finalChainList = []
for i in self.chainList:
finalChainList.append(pwobj.String(i))
provider = ListTreeProviderString(finalChainList)
dlg = dialog.ListDialog(form.root, "Model chains", provider,
"Select one of the chains (model, chain, "
"number of chain residues)")
form.setVar('selectStructureChain', dlg.values[0].get())
[docs]class GetChainResiduesWizardChimera(GetStructureChainsWizard):
_targets = [(ChimeraSubtractionMaps, ['firstResidueToRemove'])]
[docs] def editionListOfResidues(self, modelsFirstResidue, model, chain):
self.residueList = []
for modelID, chainDic in modelsFirstResidue.items():
if int(model) == modelID:
for chainID, seq_number in chainDic.items():
if chain == chainID:
for i in seq_number:
self.residueList.append(
'{"residue": %d, "%s"}' % (i[0], str(i[1])))
[docs] def getResidues(self, form):
protocol = form.protocol
try:
modelsLength, modelsFirstResidue = self.getModelsChainsStep(protocol)
except Exception as e:
print("ERROR: ", e)
return
if protocol.selectStructureChain.get() is not None:
selection = protocol.selectStructureChain.get()
else:
selection = protocol.inputStructureChain.get()
model = selection.split(',')[0].split(':')[1].strip()
chain = selection.split(',')[1].split(':')[1].split('"')[1]
self.editionListOfResidues(modelsFirstResidue, model, chain)
finalResiduesList = []
for i in self.residueList:
finalResiduesList.append(pwobj.String(i))
return finalResiduesList
[docs] def show(self, form, *params):
finalResiduesList = self.getResidues(form)
provider = ListTreeProviderString(finalResiduesList)
dlg = dialog.ListDialog(form.root, "Chain residues", provider,
"Select one residue (residue number, "
"residue name)")
form.setVar('firstResidueToRemove', dlg.values[0].get())
[docs]class GetChainResidues2WizardChimera(GetChainResiduesWizardChimera):
_targets = [(ChimeraSubtractionMaps, ['lastResidueToRemove'])]
[docs] def show(self, form, *params):
finalResiduesList = self.getResidues(form)
provider = ListTreeProviderString(finalResiduesList)
dlg = dialog.ListDialog(form.root, "Chain residues", provider,
"Select one residue (residue number, "
"residue name)")
form.setVar('lastResidueToRemove', dlg.values[0].get())