<div dir="ltr">Sounds good. Thanks Seb.<div><br></div><div>Dan</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 11, 2016 at 1:08 PM, Sebastien Jourdain <span dir="ltr"><<a href="mailto:sebastien.jourdain@kitware.com" target="_blank">sebastien.jourdain@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thinks serialization... And don't assume any specific efficiency. Think on what you want to get on the JavaScript side.</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 11, 2016 at 11:03 AM, Dan Lipsa <span dir="ltr"><<a href="mailto:dan.lipsa@kitware.com" target="_blank">dan.lipsa@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks Seb,<div>So I'll have to make regular arrays out of the numpy arrays and send those over? </div><div>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?</div><div><br></div><div>What about the numpy masked arrays? This have missing values, similar with VTK blanking.</div><div><br></div><div>How efficient is this?</div><div><br></div><div>Thanks,</div><div>Dan</div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 7, 2016 at 5:27 PM, Sebastien Jourdain <span dir="ltr"><<a href="mailto:sebastien.jourdain@kitware.com" target="_blank">sebastien.jourdain@kitware.co<wbr>m</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">We do that all the time, so yes, vtk/paraview web can handle it.<div><br></div><div>Just need to create a new RPC method that will build the structure the client expect based on its request.</div><div><br></div><div>Here is a ParaView example which should apply to VTK if you ignore the ParaView proxy magic (self.reader.GetClientSideObje<wbr>ct())</div><div><br></div><div><div> @exportRpc("my.super.app.get.t<wbr>able")</div><div> def getTable(self):</div><div> from vtk.util.numpy_support import vtk_to_numpy</div><div> returnValue = {}</div><div> dataTable = self.reader.GetClientSideObjec<wbr>t().GetOutputDataObject(0)</div><div> count = dataTable.GetNumberOfColumns()</div><div> for idx in range(count):</div><div> array = dataTable.GetColumn(idx)</div><div> if SUPPORTED_TYPES[VTK_DATA_TYPES<wbr>[array.GetDataType()]]:</div><div> npArray = vtk_to_numpy(array)</div><div> returnValue[array.GetName()] = [ i.item() for i in npArray ]</div><div> else:</div><div> returnValue[array.GetName()] = [ array.GetValue(i) for i in xrange(array.GetNumberOfValues<wbr>()) ]</div><div> return returnValue</div></div><div><br></div><div>with that for our constant settings for filtering arrays we don't want to get on the client side.</div><div><br></div><div><div>VTK_DATA_TYPES = [ 'void', # 0</div><div> 'bit', # 1</div><div> 'char', # 2</div><div> 'unsigned_char', # 3</div><div> 'short', # 4</div><div> 'unsigned_short', # 5</div><div> 'int', # 6</div><div> 'unsigned_int', # 7</div><div> 'long', # 8</div><div> 'unsigned_long', # 9</div><div> 'float', # 10</div><div> 'double', # 11</div><div> 'id_type', # 12</div><div> 'unspecified', # 13</div><div> 'unspecified', # 14</div><div> 'signed_char' ] # 15</div><div><br></div><div>SUPPORTED_TYPES = { 'void': False,</div><div> 'bit': False,</div><div> 'char': True,</div><div> 'unsigned_char': True,</div><div> 'short': True,</div><div> 'unsigned_short': True,</div><div> 'int': True,</div><div> 'unsigned_int': True,</div><div> 'long': True,</div><div> 'unsigned_long': True,</div><div> 'float': True,</div><div> 'double': True,</div><div> 'id_type': True,</div><div> 'unspecified': False,</div><div> 'unspecified': False,</div><div> 'signed_char': True }</div></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 7, 2016 at 3:09 PM, Dan Lipsa <span dir="ltr"><<a href="mailto:dan.lipsa@kitware.com" target="_blank">dan.lipsa@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Seb and all,<div>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.</div><div><br></div><div>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?</div><div><br></div><div>Thanks,</div><div>Dan</div><div><br></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>