Exporting data to excel (csv) or matlab (mat)
-
I have generated a set of simulations and i would be interested to export some information like:
1 - SAR slice : How to determine the slice number which is closer to a coordinate: lets say at 0cm but due to gridding it corresponds to 0.013 cm.
2- In the extracted SAR slice I am interested in the SAR values in a line along for example Y-axis. Again i know the absolute value of the line but i dont know exactly to which coordinate would correspond due to gridding.I generated a python script of a manually extracted line, then i run the generated script, but it gives errors.
Could you show an example script of generating and exporting the SAR slice and a line in that slice?
-
I have generated a set of simulations and i would be interested to export some information like:
1 - SAR slice : How to determine the slice number which is closer to a coordinate: lets say at 0cm but due to gridding it corresponds to 0.013 cm.
2- In the extracted SAR slice I am interested in the SAR values in a line along for example Y-axis. Again i know the absolute value of the line but i dont know exactly to which coordinate would correspond due to gridding.I generated a python script of a manually extracted line, then i run the generated script, but it gives errors.
Could you show an example script of generating and exporting the SAR slice and a line in that slice?
- You need teh function
FindCell(see example below) - You also need
FindCell, together with raw access to the underlying numpy data array and a way to "reshape" it properly (see same example below)
# Creating the analysis pipeline # Adding a new SimulationExtractor simulation = document.AllSimulations["SCC34 Benchmark Simulation"] simulation_extractor = simulation.Results() # Adding a new EmSensorExtractor em_sensor_extractor = simulation_extractor["Overall Field"] em_sensor_extractor.FrequencySettings.ExtractedFrequency = u"All" em_sensor_extractor.SurfaceCurrent.SurfaceResolution = 0.001, units.Meters document.AllAlgorithms.Add(em_sensor_extractor) # Get data object em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Update() # output needs to be updated before extracting data sar = em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Data # a location in space: x = 0 y = -0.00910 z = -0.00025 # get grid cell indices closest to that location: id_x, id_y, id_z = sar.Grid.FindCell(x,y,z) # Create Slice Viewer at that location inputs = [em_sensor_extractor.Outputs["SAR(x,y,z,f0)"]] slice_field_viewer = analysis.viewers.SliceFieldViewer(inputs=inputs) slice_field_viewer.Data.Mode = slice_field_viewer.Data.Mode.enum.QuantityRealModulus slice_field_viewer.Slice.Index = id_z slice_field_viewer.UpdateAttributes() document.AllAlgorithms.Add(slice_field_viewer) # Get raw data array (in the form of a numpy array) sar_array = em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Data.Field(snapshot_index=0) nx, ny, nz = numpy.array(sar.Grid.Dimensions) - numpy.array((1,1,1)) # grid is defined on nodes, SAR data is in cell centers sar_array = numpy.reshape(sar_array, (nx, ny, nz), order='F') # now data can be accessed easily: print sar_array[:, id_y, id_z] - You need teh function
-
- You need teh function
FindCell(see example below) - You also need
FindCell, together with raw access to the underlying numpy data array and a way to "reshape" it properly (see same example below)
# Creating the analysis pipeline # Adding a new SimulationExtractor simulation = document.AllSimulations["SCC34 Benchmark Simulation"] simulation_extractor = simulation.Results() # Adding a new EmSensorExtractor em_sensor_extractor = simulation_extractor["Overall Field"] em_sensor_extractor.FrequencySettings.ExtractedFrequency = u"All" em_sensor_extractor.SurfaceCurrent.SurfaceResolution = 0.001, units.Meters document.AllAlgorithms.Add(em_sensor_extractor) # Get data object em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Update() # output needs to be updated before extracting data sar = em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Data # a location in space: x = 0 y = -0.00910 z = -0.00025 # get grid cell indices closest to that location: id_x, id_y, id_z = sar.Grid.FindCell(x,y,z) # Create Slice Viewer at that location inputs = [em_sensor_extractor.Outputs["SAR(x,y,z,f0)"]] slice_field_viewer = analysis.viewers.SliceFieldViewer(inputs=inputs) slice_field_viewer.Data.Mode = slice_field_viewer.Data.Mode.enum.QuantityRealModulus slice_field_viewer.Slice.Index = id_z slice_field_viewer.UpdateAttributes() document.AllAlgorithms.Add(slice_field_viewer) # Get raw data array (in the form of a numpy array) sar_array = em_sensor_extractor.Outputs["SAR(x,y,z,f0)"].Data.Field(snapshot_index=0) nx, ny, nz = numpy.array(sar.Grid.Dimensions) - numpy.array((1,1,1)) # grid is defined on nodes, SAR data is in cell centers sar_array = numpy.reshape(sar_array, (nx, ny, nz), order='F') # now data can be accessed easily: print sar_array[:, id_y, id_z] - You need teh function
-
Currently the Matlab exporter only allows exporting a whole quantity (i.e. the whole 3D array if it is a 3D quantity, like the SAR(x,y,z,f0)).
Once exported, though, it is relatively straightforward to slice through the array in Matlab. See for example this post: https://forum.zurichmedtech.com/topic/47/exporting-data-to-matlab-how-to-access-the-data-as-a-volume-matrix -
Dear Redi, you can export arbitrary data to Matlab (e.g. field array and grid coordinates) using the Scipy.io library. A generic use of it is the following:
import scipy.io as sio
dict={'field':fieldarray,'xgrid':xgrid,'ygrid':ygrid,'zgrid':zgrid}
sio.savemat(filename,dict)where xgrid,ygrid,zgrid are the vectors containing the cartesian coordinates of the grid.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login