
Hi Jason, This is a Chimera bug. Resampling a map with integer values on a new grid produces 32-bit floating point values because it uses trilinear interpolation. But the Chimera code makes the new resampled map have integer values of the same type as the input map, and converting the float values to integer is generating this error (I think because the Python numpy module changed at some point to not automatically cast float to integer). So I fixed the bug in tonight's Chimera daily build to cast the float values to the integer type of the original map. You can also avoid the error with the Chimera 1.8.1 that you are using by first converting your map to 32-bit float values using Chimera command vop scale #0 value float32 That will produce a new map (called #1) that has 32-bit float value and that can be resampled without errors in your Chimera. Thanks for reporting this bug. I'm surprised it was not reported earlier. Tom On Apr 1, 2014, at 10:20 PM, Jason Kaelber wrote:
Hi all,
I decided to do a rough alignment of density maps manually and resample onto a common coordinate system to feed the output mrc files into my fine aligner. But, when I vop resample #1 onGrid #0, I get, TypeError: Cannot cast ufunc add output from dtype('float32') to dtype('uint8') with casting rule 'same_kind'
What might I be doing wrong to get this error? As far as I know, all the maps should be uint8 since they were most recently operated on by David Mastronarde's newstack command which outputs them as unsigned bytes.
Thanks, Jason
<type 'exceptions.TypeError'> Exception in Tk callback Function: <bound method MidasUI.processCommand of <Midas.midas_ui.MidasUI instance at 0x276b2d88>> (type: <type 'instancemethod'>) Args: (<Tkinter.Event instance at 0x276a2ea8>,) Event type: KeyPress (type num: 2) Traceback (innermost last): File "/opt/UCSF/Chimera64-1.8.1/lib/python2.7/site-packages/Pmw/Pmw_1_3/lib/PmwBase.py", line 1747, in __call__ return apply(self.func, args) File "/opt/UCSF/Chimera64-1.8.1/share/Midas/midas_ui.py", line 283, in processCommand midas_text.makeCommand(cmdText) File "/opt/UCSF/Chimera64-1.8.1/share/Midas/midas_text.py", line 69, in makeCommand f(c, args) File "/opt/UCSF/Chimera64-1.8.1/share/VolumeFilter/ChimeraExtension.py", line 24, in vop_cmd vop_command(cmdname, args) File "/opt/UCSF/Chimera64-1.8.1/share/VolumeFilter/vopcommand.py", line 91, in vop_command doExtensionFunc(func, fargs, specInfo = spec) File "/opt/UCSF/Chimera64-1.8.1/share/Midas/midas_text.py", line 435, in doExtensionFunc extFunc(*tuple(processedArgs), **kw) File "/opt/UCSF/Chimera64-1.8.1/share/VolumeFilter/vopcommand.py", line 553, in resample_op boundingGrid, False, None, modelId) File "/opt/UCSF/Chimera64-1.8.1/share/VolumeFilter/vopcommand.py", line 168, in add_operation scale = scale[i]) File "/opt/UCSF/Chimera64-1.8.1/share/VolumeViewer/volume.py", line 1535, in add_interpolated_values m[:,:,:] += values <type 'exceptions.TypeError'>: Cannot cast ufunc add output from dtype('float32') to dtype('uint8') with casting rule 'same_kind'
================================================ Event contents: char: delta: 36 height: ?? keycode: 36 keysym: Return keysym_num: 65293 num: ?? send_event: False serial: 39103 state: 16 time: 139539396 type: 2 widget: .59791048.661335648.802317088.802317376.802317448 width: ?? x: 159 x_root: 524 y: 9 y_root: 988
TypeError: Cannot cast ufunc add output from dtype('float32') to dtype('uint8') with casting rule 'same_kind'
File "/opt/UCSF/Chimera64-1.8.1/share/VolumeViewer/volume.py", line 1535, in add_interpolated_values m[:,:,:] += values
See reply log for Python traceback. -- National Center for Macromolecular Imaging, N420 Baylor College of Medicine, MS BCM125 1 Baylor Plaza Houston, TX, USA _______________________________________________ Chimera-users mailing list Chimera-users@cgl.ucsf.edu http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users