﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking	notify_on_close	platform	project
16682	Volume raycasting with orthoplanes: Shader compile failure	chimerax-bug-report@…	Zach Pearson	"{{{
The following bug report has been submitted:
Platform:        Linux-5.14.0-503.14.1.el9_5.x86_64-x86_64-with-glibc2.34
ChimeraX Version: 1.9 (2024-12-11 19:11:19 UTC)
Description
I update pyopengl to 3.1.9, because for default version (3.1.7), I just can not open chimerax. I'm not sure is it cause the problem.

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  
UCSF ChimeraX version: 1.9 (2024-12-11)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open
> /eml2/xyan/ERGIC/titan2_20230712/dataset/CH6_3_lam1_1_defocus5_bin5_rotx_corrected.mrc

Opened CH6_3_lam1_1_defocus5_bin5_rotx_corrected.mrc as #1, grid size
818,1152,300, pixel 1, shown at step 1, values float32  

> volume #1 region 0,0,0,817,1151,299 step 4

[Repeated 1 time(s)]

> volume #1 change image level -0.8597,0 level 0.2141,0.8 level 0.9877,1

> volume #1 level -0.05283

> volume projectionMode rays

> lighting soft

> volume projectionMode rays

[Repeated 1 time(s)]

> volume #1 level 0.3833

> volume #1 style image region 0,0,148,817,1151,148 step 1 showOutlineBox true

> volume #1 region 0,0,299,817,1151,299

> volume #1 region 0,0,149,817,1151,149

> volume #1 region 0,0,240,817,1151,240

> volume #1 region 0,0,154,817,1151,154

> volume #1 region 0,0,0,817,1151,0

[Repeated 1 time(s)]

> volume #1 region 0,0,0,817,1151,299 step 4

> volume #1 region 0,0,0,817,1151,299 step 1 colorMode opaque8 orthoplanes xyz
> positionPlanes 408,575,149 imageMode orthoplanes

An OpenGL graphics error occurred. Most often this is caused by a graphics
driver bug. The only way to fix such bugs is to update your graphics driver.
Redrawing graphics is now stopped to avoid a continuous stream of error
messages. To restart graphics use the command ""graphics restart"" after
changing the settings that caused the error.  
  
('Shader compile failure (0): b\'0(289) : error C1503: undefined variable
""tex_coord_3d""\\\n0(292) : error C1503: undefined variable ""tex3d""\\\n0(292) :
error C1503: undefined variable ""colormap_range""\\\n0(292) : error C1503:
undefined variable ""colormap_range""\\\n0(293) : error C1503: undefined
variable ""colormap""\\\n0(295) : error C1503: undefined variable
""tex3d""\\\n0(295) : error C1503: undefined variable ""tex3d""\\\n0(296) : error
C1503: undefined variable ""tex3d""\\\n0(296) : error C1503: undefined variable
""tex3d""\\\n0(297) : error C1503: undefined variable ""tex3d""\\\n0(297) : error
C1503: undefined variable ""tex3d""\\\n0(300) : error C1503: undefined variable
""key_light_direction""\\\n0(301) : error C1503: undefined variable
""fill_light_direction""\\\n0(302) : error C1503: undefined variable
""key_light_direction""\\\n0(303) : error C1503: undefined variable
""key_light_specular_exponent""\\\n0(305) : error C1503: undefined variable
""key_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""fill_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""key_light_specular_color""\\\n0(306) : error C1503: undefined variable
""ambient_color""\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED ""AS IS"" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  
Traceback (most recent call last):  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 2946,
in compile_shader  
fs = shaders.compileShader(fshader, GL.GL_FRAGMENT_SHADER)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/OpenGL/GL/shaders.py"", line 235, in
compileShader  
raise ShaderCompilationError(  
OpenGL.GL.shaders.ShaderCompilationError: ('Shader compile failure (0):
b\'0(289) : error C1503: undefined variable ""tex_coord_3d""\\\n0(292) : error
C1503: undefined variable ""tex3d""\\\n0(292) : error C1503: undefined variable
""colormap_range""\\\n0(292) : error C1503: undefined variable
""colormap_range""\\\n0(293) : error C1503: undefined variable
""colormap""\\\n0(295) : error C1503: undefined variable ""tex3d""\\\n0(295) :
error C1503: undefined variable ""tex3d""\\\n0(296) : error C1503: undefined
variable ""tex3d""\\\n0(296) : error C1503: undefined variable ""tex3d""\\\n0(297)
: error C1503: undefined variable ""tex3d""\\\n0(297) : error C1503: undefined
variable ""tex3d""\\\n0(300) : error C1503: undefined variable
""key_light_direction""\\\n0(301) : error C1503: undefined variable
""fill_light_direction""\\\n0(302) : error C1503: undefined variable
""key_light_direction""\\\n0(303) : error C1503: undefined variable
""key_light_specular_exponent""\\\n0(305) : error C1503: undefined variable
""key_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""fill_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""key_light_specular_color""\\\n0(306) : error C1503: undefined variable
""ambient_color""\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED ""AS IS"" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  
During handling of the above exception, another exception occurred:  
  
Traceback (most recent call last):  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/core/updateloop.py"", line 84,
in draw_new_frame  
view.draw(check_for_changes = False)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py"", line 188, in
draw  
self._draw_scene(camera, drawings)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py"", line 227, in
_draw_scene  
shadow, multishadow = self._compute_shadowmaps(opaque_drawings,
transparent_drawings, camera)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py"", line 632, in
_compute_shadowmaps  
multishadow_enabled = r.multishadow.use_multishadow_map(shadow_drawings)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 1727,
in use_multishadow_map  
draw_depth(r, sdrawings, opaque_only = not mat.transparent_cast_shadows)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line
1579, in draw_depth  
draw_opaque(r, drawings)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line
1554, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line
1567, in _draw_multiple  
d.draw(renderer, draw_pass)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py"", line 941, in
draw  
self._draw_planes(renderer, draw_pass, dtransp, drawing)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py"", line 960, in
_draw_planes  
drawing.draw(r, draw_pass)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py"", line 1278, in
draw  
Drawing.draw(self, renderer, draw_pass)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line 780,
in draw  
self.draw_self(renderer, draw_pass)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line 787,
in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py"", line 818,
in _draw_geometry  
shader = r.shader(sopt)  
^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 703,
in shader  
p = self._opengl_shader(options)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 805,
in _opengl_shader  
p = Shader(capabilities = capabilities, max_shadows =
self.multishadow.max_multishadows())  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 2886,
in __init__  
self.program_id = self.compile_shader(vertex_shader_path,
fragment_shader_path,  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File ""/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py"", line 2948,
in compile_shader  
raise OpenGLError(str(e))  
chimerax.graphics.opengl.OpenGLError: ('Shader compile failure (0): b\'0(289)
: error C1503: undefined variable ""tex_coord_3d""\\\n0(292) : error C1503:
undefined variable ""tex3d""\\\n0(292) : error C1503: undefined variable
""colormap_range""\\\n0(292) : error C1503: undefined variable
""colormap_range""\\\n0(293) : error C1503: undefined variable
""colormap""\\\n0(295) : error C1503: undefined variable ""tex3d""\\\n0(295) :
error C1503: undefined variable ""tex3d""\\\n0(296) : error C1503: undefined
variable ""tex3d""\\\n0(296) : error C1503: undefined variable ""tex3d""\\\n0(297)
: error C1503: undefined variable ""tex3d""\\\n0(297) : error C1503: undefined
variable ""tex3d""\\\n0(300) : error C1503: undefined variable
""key_light_direction""\\\n0(301) : error C1503: undefined variable
""fill_light_direction""\\\n0(302) : error C1503: undefined variable
""key_light_direction""\\\n0(303) : error C1503: undefined variable
""key_light_specular_exponent""\\\n0(305) : error C1503: undefined variable
""key_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""fill_light_diffuse_color""\\\n0(305) : error C1503: undefined variable
""key_light_specular_color""\\\n0(306) : error C1503: undefined variable
""ambient_color""\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED ""AS IS"" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  




OpenGL version: 3.3.0 NVIDIA 560.35.05
OpenGL renderer: Quadro P620/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.4
Locale: en_US.UTF-8
Qt version: PyQt6 6.7.1, Qt 6.7.1
Qt runtime version: 6.7.3
Qt platform: xcb

XDG_SESSION_TYPE=x11
DESKTOP_SESSION=gnome
XDG_SESSION_DESKTOP=gnome
XDG_CURRENT_DESKTOP=GNOME
DISPLAY=:1
Manufacturer: Dell Inc.
Model: Precision 7920 Tower
OS: Rocky Linux 9.5
Architecture: 64bit ELF
Virtual Machine: none
CPU: 56 Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz
Cache Size: 19712 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:           125Gi       7.3Gi        98Gi       547Mi        20Gi       118Gi
	Swap:           63Gi          0B        63Gi

Graphics:
	03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GL [Quadro P620] [10de:1cb6] (rev a1)	
	Subsystem: Dell Device [1028:1264]	
	Kernel driver in use: nvidia

Installed Packages:
    alabaster: 1.0.0
    anyio: 4.7.0
    appdirs: 1.4.4
    asttokens: 3.0.0
    auditwheel: 6.1.0
    babel: 2.16.0
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 3.0.0
    build: 1.2.1
    certifi: 2024.8.30
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.0
    ChimeraX-AddCharge: 1.5.18
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.16.1
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.58.8
    ChimeraX-AtomicLibrary: 14.1.11
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.0
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.4.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.6
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.9
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.4
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2.6
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.3
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.4.1
    ChimeraX-Hbonds: 2.5
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.3
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.2.1
    ChimeraX-Label: 1.1.14
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.3
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.1.6
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.2
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.18
    ChimeraX-ModelPanel: 1.5
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.14
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.6
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.4
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.2
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.2
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.6
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.14
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.0
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-SimilarStructures: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.18.1
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.41
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.4
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.3.1
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.9
    decorator: 5.1.1
    distro: 1.9.0
    docutils: 0.21.2
    executing: 2.1.0
    filelock: 3.15.4
    fonttools: 4.55.3
    funcparserlib: 2.0.0a0
    glfw: 2.8.0
    grako: 3.16.5
    h11: 0.14.0
    h5py: 3.12.1
    html2text: 2024.2.26
    httpcore: 1.0.7
    httpx: 0.28.1
    idna: 3.10
    ihm: 1.3
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.5
    jedi: 0.19.1
    Jinja2: 3.1.4
    jupyter_client: 8.6.2
    jupyter_core: 5.7.2
    jupyterlab_widgets: 3.0.13
    kiwisolver: 1.4.7
    line_profiler: 4.1.3
    lxml: 5.2.2
    lz4: 4.3.3
    MarkupSafe: 3.0.2
    matplotlib: 3.9.2
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    ndindex: 1.9.2
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.2
    numpy: 1.26.4
    openvr: 1.26.701
    packaging: 23.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pexpect: 4.9.0
    pillow: 10.4.0
    pip: 24.2
    pkginfo: 1.11.1
    platformdirs: 4.3.6
    prompt_toolkit: 3.0.48
    psutil: 6.0.0
    ptyprocess: 0.7.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pyelftools: 0.31
    Pygments: 2.18.0
    pynmrstar: 3.3.4
    pynrrd: 1.0.0
    PyOpenGL: 3.1.9
    PyOpenGL-accelerate: 3.1.9
    pyopenxr: 1.0.3401
    pyparsing: 3.2.0
    pyproject_hooks: 1.2.0
    PyQt6-commercial: 6.7.1
    PyQt6-Qt6: 6.7.3
    PyQt6-WebEngine-commercial: 6.7.0
    PyQt6-WebEngine-Qt6: 6.7.3
    PyQt6-WebEngineSubwheel-Qt6: 6.7.3
    PyQt6_sip: 13.8.0
    python-dateutil: 2.9.0.post0
    pytz: 2024.2
    pyzmq: 26.2.0
    qtconsole: 5.5.2
    QtPy: 2.4.2
    qtshim: 1.0
    RandomWords: 0.4.0
    requests: 2.32.3
    scipy: 1.14.0
    setuptools: 72.1.0
    sfftk-rw: 0.8.1
    six: 1.16.0
    sniffio: 1.3.1
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.6
    Sphinx: 8.0.2
    sphinx-autodoc-typehints: 2.2.3
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    stack-data: 0.6.3
    superqt: 0.6.3
    tables: 3.10.1
    tcia_utils: 1.5.1
    tifffile: 2024.7.24
    tinyarray: 1.2.4
    tornado: 6.4.2
    traitlets: 5.14.3
    typing_extensions: 4.12.2
    tzdata: 2024.2
    urllib3: 2.2.3
    wcwidth: 0.2.13
    webcolors: 24.6.0
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.13
}}}
"	defect	closed	normal		Graphics		fixed		Tom Goddard				all	ChimeraX
