ColourProfiles
Quickly setup customised window and contour colors
Size 4.0 kB - File type text/python-sourceFile contents
def setStandardColorProfiles(argServer):
from ccpnmr.analysis.Util import setSpectrumPosContourColor, setSpectrumNegContourColor
from ccpnmr.analysis.Util import getPeakListColor, setPeakListColor
background = 'black'
posColors = {
'H[N]' :[(200,100, 0),(200, 0, 0),(100,200, 0)],
'H[N[CA]]' :[(0 ,100,100),],
'H[N[co[CA]]]':[(200,200, 0),],
}
negColors = {
'H[N]' :[(0 , 0,128),],
'H[N[CA]]' :[(128, 0, 0),],
'H[N[co[CA]]]':[(128, 0,255),],
}
peakColors = {
'H[N]' :[(255,128, 0),(255, 0, 0),(128,255, 0)],
'H[N[CA]]' :[(0 ,128,128),],
'H[N[co[CA]]]':[(255,255, 0),],
}
project = argServer.getProject()
existingColors = project.colors
for window in project.spectrumWindows:
color = project.findFirstColor(name=background)
if (color):
window.background = color
expCount = {}
for experiment in project.nmrExperiments:
if experiment.refExperiment:
key = experiment.refExperiment.name
expCount[key] = expCount.get(key, -1) + 1
for spectrum in experiment.dataSources:
posColorList = posColors.get(key) or [(128, 128, 128),]
negColorList = negColors.get(key) or [(128, 128, 128),]
pksColorList = peakColors.get(key) or [(166, 166, 166),]
color256pos = posColorList[expCount[key] % len(posColorList)]
color256neg = negColorList[expCount[key] % len(negColorList)]
color256pks = pksColorList[expCount[key] % len(pksColorList)]
rgbPos = [x/255.0 for x in color256pos]
rgbNeg = [x/255.0 for x in color256neg]
rgbPks = [x/255.0 for x in color256pks]
hexPos = '#%02x%02x%02x' % color256pos
hexNeg = '#%02x%02x%02x' % color256neg
hexPks = '#%02x%02x%02x' % color256pks
existingColorPos = project.findFirstColor(name=hexPos)
existingColorNeg = project.findFirstColor(name=hexNeg)
existingColorPks = project.findFirstColor(name=hexPks)
if not existingColorPos:
for colorObj in existingColors:
rgb = [colorObj.r, colorObj.g, colorObj.b]
if rgb == rgbPos:
existingColorPos = colorObj
if not existingColorNeg:
for colorObj in existingColors:
rgb = [colorObj.r, colorObj.g, colorObj.b]
if rgb == rgbNeg:
existingColorNeg = colorObj
if not existingColorPks:
for colorObj in existingColors:
rgb = [colorObj.r, colorObj.g, colorObj.b]
if rgb == rgbPks:
existingColorPks = colorObj
if existingColorPos is None:
existingColorPos = project.newColor(name=hexPos, r=rgbPos[0], g=rgbPos[1], b=rgbPos[2])
if existingColorNeg is None:
existingColorNeg = project.newColor(name=hexNeg, r=rgbNeg[0], g=rgbNeg[1], b=rgbNeg[2])
if existingColorPks is None:
existingColorPks = project.newColor(name=hexPks, r=rgbPks[0], g=rgbPks[1], b=rgbPks[2])
setSpectrumNegContourColor(spectrum, existingColorNeg.name)
setSpectrumPosContourColor(spectrum, existingColorPos.name)
for peakList in spectrum.peakLists:
setPeakListColor(peakList, existingColorPks.name)
# deal with invisible peak lists
for experiment in project.nmrExperiments:
for spectrum in experiment.dataSources:
for peakList in spectrum.peakLists:
oName = getPeakListColor(peakList)
if background == 'black' and oName in ('#ffffff','#FFFFFF','black'):
setPeakListColor(peakList, 'white')
elif background == 'white' and oName in ('#000000','white'):
setPeakListColor(peakList, 'black')