[vtkusers] vtkWeb - sending data to the client
Dan Lipsa
dan.lipsa at kitware.com
Tue Oct 11 13:19:24 EDT 2016
Sounds good. Thanks Seb.
Dan
On Tue, Oct 11, 2016 at 1:08 PM, Sebastien Jourdain <
sebastien.jourdain at kitware.com> wrote:
> Thinks serialization... And don't assume any specific efficiency. Think on
> what you want to get on the JavaScript side.
>
> On Tue, Oct 11, 2016 at 11:03 AM, Dan Lipsa <dan.lipsa at kitware.com> wrote:
>
>> Thanks Seb,
>> So I'll have to make regular arrays out of the numpy arrays and send
>> those over?
>> What about multi-dimensional numpy arrays? (2D, 3D) Do I have to flatten
>> them on the server and then get them into the right format on the client?
>>
>> What about the numpy masked arrays? This have missing values, similar
>> with VTK blanking.
>>
>> How efficient is this?
>>
>> Thanks,
>> Dan
>>
>>
>> On Fri, Oct 7, 2016 at 5:27 PM, Sebastien Jourdain <
>> sebastien.jourdain at kitware.com> wrote:
>>
>>> We do that all the time, so yes, vtk/paraview web can handle it.
>>>
>>> Just need to create a new RPC method that will build the structure the
>>> client expect based on its request.
>>>
>>> Here is a ParaView example which should apply to VTK if you ignore the
>>> ParaView proxy magic (self.reader.GetClientSideObject())
>>>
>>> @exportRpc("my.super.app.get.table")
>>> def getTable(self):
>>> from vtk.util.numpy_support import vtk_to_numpy
>>> returnValue = {}
>>> dataTable = self.reader.GetClientSideObjec
>>> t().GetOutputDataObject(0)
>>> count = dataTable.GetNumberOfColumns()
>>> for idx in range(count):
>>> array = dataTable.GetColumn(idx)
>>> if SUPPORTED_TYPES[VTK_DATA_TYPES[array.GetDataType()]]:
>>> npArray = vtk_to_numpy(array)
>>> returnValue[array.GetName()] = [ i.item() for i in
>>> npArray ]
>>> else:
>>> returnValue[array.GetName()] = [ array.GetValue(i) for i
>>> in xrange(array.GetNumberOfValues()) ]
>>> return returnValue
>>>
>>> with that for our constant settings for filtering arrays we don't want
>>> to get on the client side.
>>>
>>> VTK_DATA_TYPES = [ 'void', # 0
>>> 'bit', # 1
>>> 'char', # 2
>>> 'unsigned_char', # 3
>>> 'short', # 4
>>> 'unsigned_short', # 5
>>> 'int', # 6
>>> 'unsigned_int', # 7
>>> 'long', # 8
>>> 'unsigned_long', # 9
>>> 'float', # 10
>>> 'double', # 11
>>> 'id_type', # 12
>>> 'unspecified', # 13
>>> 'unspecified', # 14
>>> 'signed_char' ] # 15
>>>
>>> SUPPORTED_TYPES = { 'void': False,
>>> 'bit': False,
>>> 'char': True,
>>> 'unsigned_char': True,
>>> 'short': True,
>>> 'unsigned_short': True,
>>> 'int': True,
>>> 'unsigned_int': True,
>>> 'long': True,
>>> 'unsigned_long': True,
>>> 'float': True,
>>> 'double': True,
>>> 'id_type': True,
>>> 'unspecified': False,
>>> 'unspecified': False,
>>> 'signed_char': True }
>>>
>>> On Fri, Oct 7, 2016 at 3:09 PM, Dan Lipsa <dan.lipsa at kitware.com> wrote:
>>>
>>>> Hi Seb and all,
>>>> One of the features we want to implement in our application is the
>>>> ability to render plots on the client (in certain cases) using alternate
>>>> means such as plotly.
>>>>
>>>> For this we need to send data = a numpy or numpy masked array = to the
>>>> client. Is there any capability in vtkWeb or do you have any advise on how
>>>> to do that?
>>>>
>>>> Thanks,
>>>> Dan
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20161011/d097cbe5/attachment.html>
More information about the vtkusers
mailing list