Re: [Paraview] PV client-server: browsing remote files
Sebastien and Utkarsh, Thanks for both of your suggestions. I have now looked at them and they both look pretty good to me. I'll practice with these solutions and see which one I like best. Kind Regards, Robert -- Science personalities series: calculus and charity http://en.wikipedia.org/wiki/Maria_Gaetana_Agnesi ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: https://paraview.org/mailman/listinfo/paraview
Re: [Paraview] PV client-server: browsing remote files
You can find another way to do it here as well: https://github.com/Kitware/ParaView/blob/master/Web/Python/paraview/web/protocols.py#L2692-L2695 https://github.com/Kitware/ParaView/blob/master/Web/Python/paraview/web/protocols.py#L2715-L2716 [...] On Sat, Jan 6, 2018 at 12:03 PM, Utkarsh Ayachit < utkarsh.ayac...@kitware.com> wrote: > Robert, > > Sorry I missed the email earlier. What you have as an alternative is > indeed a reasonable approach. Once can also use ParaView's > infrastructure used by the file dialog, but it's a little clunky > currently, since it needs to be pythonified for easier user. > > Here's how you'd do this with 5.4.1. > > from paraview import servermanager as sm > > helper = sm.misc.FileInformationHelper() > helper.DirectoryListing = 1 > helper.WorkingDirecotry = "'/path/to/data/on/remote" > > pvinfo = servermanager.vtkPVFileInformation() > helper.GatherInformation(pvinfo) > for a_pvinfo in pvinfo.GetConents(): >if a_pvinfo.GetType() == a_pvinfo.FILE_GROUP: > for b_pvinfo in a_pvinfo.GetContents(): > assert b_pvinfo.GetType() == b_pvinfo.SINGLE_FILE > print (b_pvinfo.GetName(), b_pvinfo.GetFullPath()) >elif a_pvinfo.GetType() == a_pvinfo.SINGLE_FILE > print (a_pvinfo.GetName(), a_pvinfo.GetFullPath()) > > This will print all files in the directory. > > See vtkPVFileInformation docs > (https://www.paraview.org/ParaView3/Doc/Nightly/www/cxx- > doc/classvtkPVFileInformation.html) > for more API details. > > Hope that helps. > > Utkarsh > > On Fri, Jan 5, 2018 at 2:05 PM, Robert Sawko > wrote: > > Hi, > > > > I will bump my own post from a month back (see below) and just will > answer the > > question in case anyone else was looking for something similar. I > haven't found > > a way to remotely navigate the file system through ParaView Python API > objects, > > but of course there are other Python packages which can achieve that. I > used > > paramiko. Below is my minimal example. > > > > > > from paraview.simple import LegacyVTKReader, RenameSource, Connect > > from paramiko import SSHClient, AutoAddPolicy > > > > ''' > > This script extracts the output of a remote ls command with to feed > into > > a LegacyVTKReader. The main use is it to make a collection of VTK > files > > into a time sequence inside PV. > > ''' > > > > # Inputs: > > host = 'remote.host.com' > > port = 22 > > username = 'me' > > key_filename = '/path/to/private/key' > > > > pvhost = 'localhost'# I typically run pvserver through an ssh > tunnel so > > pvport = 7 # these are the parameters for local port > forward > > > > data_dir = '/path/to/data/on/remote' > > > > # SSH part > > # to get a list of files to open > > client = SSHClient() > > client.set_missing_host_key_policy(AutoAddPolicy()) > > > > client.connect( > > host, port=port, > > username=username, > > key_filename=key_filename) > > > > stdin, stdout, stderr = client.exec_command( > > 'ls -1 {0}'.format(data_dir)) > > lslines = stdout.readlines() > > client.close() > > > > # ParaView part > > Connect('localhost', 7) > > reader = LegacyVTKReader(FileNames=[ > > 'data/{0}'.format(l.strip()) for l in lslines]) > > RenameSource('source', reader) > > > > Hope this helps someone! > > Robert > > > > On 12/01/17 at 07:18pm, Robert Sawko wrote: > >> Dear ParaViewers, > >> > >> > >> I am trying to use Python shell in Client-Server mode, but I am running > into > >> some difficulties. How can I actually browse the remote directories. I > tried > >> to use the `os` module, but that obviously ends up being all local. > Here's a > >> minimal example of what I am trying to achieve. > >> > >> > >> from paraview.simple import Connect, LegacyVTKReader > >> from os import listdir > >> > >> Connect('my_server', port) > >> location = '/my/remote/location/' > >> > >> file_names = listdir(location).sort() > >> reader = LegacyVTKReader(FileNames=file_names) > >> > >> > >> Please let me know if it's at all possible to query the directory on > the remote > >> side through an established connection. > >> > >> Many thanks, > >> Robert > >> -- > >> Seems like the famous poem of turbulence comes from Jonathan Swift > >> http://en.wikipedia.org/wiki/The_Siphonaptera > > > > -- > > Playing possum, opposable digit, climbing, swimming, omnivores... > > Is there nothing they can't do? > > http://en.wikipedia.org/wiki/Opossum > > ___ > > Powered by www.kitware.com > > > > Visit other Kitware open-source projects at http://www.kitware.com/ > opensource/opensource.html > > > > Please keep messages on-topic and check the ParaView Wiki at: > http://paraview.org/Wiki/ParaView > > > > Search the list archives at: http://markmail.org/search/?q=ParaView > > > > Follow this link to subscribe/unsubscribe
Re: [Paraview] PV client-server: browsing remote files
Robert, Sorry I missed the email earlier. What you have as an alternative is indeed a reasonable approach. Once can also use ParaView's infrastructure used by the file dialog, but it's a little clunky currently, since it needs to be pythonified for easier user. Here's how you'd do this with 5.4.1. from paraview import servermanager as sm helper = sm.misc.FileInformationHelper() helper.DirectoryListing = 1 helper.WorkingDirecotry = "'/path/to/data/on/remote" pvinfo = servermanager.vtkPVFileInformation() helper.GatherInformation(pvinfo) for a_pvinfo in pvinfo.GetConents(): if a_pvinfo.GetType() == a_pvinfo.FILE_GROUP: for b_pvinfo in a_pvinfo.GetContents(): assert b_pvinfo.GetType() == b_pvinfo.SINGLE_FILE print (b_pvinfo.GetName(), b_pvinfo.GetFullPath()) elif a_pvinfo.GetType() == a_pvinfo.SINGLE_FILE print (a_pvinfo.GetName(), a_pvinfo.GetFullPath()) This will print all files in the directory. See vtkPVFileInformation docs (https://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-doc/classvtkPVFileInformation.html) for more API details. Hope that helps. Utkarsh On Fri, Jan 5, 2018 at 2:05 PM, Robert Sawko wrote: > Hi, > > I will bump my own post from a month back (see below) and just will answer the > question in case anyone else was looking for something similar. I haven't > found > a way to remotely navigate the file system through ParaView Python API > objects, > but of course there are other Python packages which can achieve that. I used > paramiko. Below is my minimal example. > > > from paraview.simple import LegacyVTKReader, RenameSource, Connect > from paramiko import SSHClient, AutoAddPolicy > > ''' > This script extracts the output of a remote ls command with to feed into > a LegacyVTKReader. The main use is it to make a collection of VTK files > into a time sequence inside PV. > ''' > > # Inputs: > host = 'remote.host.com' > port = 22 > username = 'me' > key_filename = '/path/to/private/key' > > pvhost = 'localhost'# I typically run pvserver through an ssh tunnel > so > pvport = 7 # these are the parameters for local port forward > > data_dir = '/path/to/data/on/remote' > > # SSH part > # to get a list of files to open > client = SSHClient() > client.set_missing_host_key_policy(AutoAddPolicy()) > > client.connect( > host, port=port, > username=username, > key_filename=key_filename) > > stdin, stdout, stderr = client.exec_command( > 'ls -1 {0}'.format(data_dir)) > lslines = stdout.readlines() > client.close() > > # ParaView part > Connect('localhost', 7) > reader = LegacyVTKReader(FileNames=[ > 'data/{0}'.format(l.strip()) for l in lslines]) > RenameSource('source', reader) > > Hope this helps someone! > Robert > > On 12/01/17 at 07:18pm, Robert Sawko wrote: >> Dear ParaViewers, >> >> >> I am trying to use Python shell in Client-Server mode, but I am running into >> some difficulties. How can I actually browse the remote directories. I tried >> to use the `os` module, but that obviously ends up being all local. Here's a >> minimal example of what I am trying to achieve. >> >> >> from paraview.simple import Connect, LegacyVTKReader >> from os import listdir >> >> Connect('my_server', port) >> location = '/my/remote/location/' >> >> file_names = listdir(location).sort() >> reader = LegacyVTKReader(FileNames=file_names) >> >> >> Please let me know if it's at all possible to query the directory on the >> remote >> side through an established connection. >> >> Many thanks, >> Robert >> -- >> Seems like the famous poem of turbulence comes from Jonathan Swift >> http://en.wikipedia.org/wiki/The_Siphonaptera > > -- > Playing possum, opposable digit, climbing, swimming, omnivores... > Is there nothing they can't do? > http://en.wikipedia.org/wiki/Opossum > ___ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the ParaView Wiki at: > http://paraview.org/Wiki/ParaView > > Search the list archives at: http://markmail.org/search/?q=ParaView > > Follow this link to subscribe/unsubscribe: > https://paraview.org/mailman/listinfo/paraview ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: https://paraview.org/mailman/listinfo/paraview
Re: [Paraview] PV client-server: browsing remote files
Hi, I will bump my own post from a month back (see below) and just will answer the question in case anyone else was looking for something similar. I haven't found a way to remotely navigate the file system through ParaView Python API objects, but of course there are other Python packages which can achieve that. I used paramiko. Below is my minimal example. from paraview.simple import LegacyVTKReader, RenameSource, Connect from paramiko import SSHClient, AutoAddPolicy ''' This script extracts the output of a remote ls command with to feed into a LegacyVTKReader. The main use is it to make a collection of VTK files into a time sequence inside PV. ''' # Inputs: host = 'remote.host.com' port = 22 username = 'me' key_filename = '/path/to/private/key' pvhost = 'localhost'# I typically run pvserver through an ssh tunnel so pvport = 7 # these are the parameters for local port forward data_dir = '/path/to/data/on/remote' # SSH part # to get a list of files to open client = SSHClient() client.set_missing_host_key_policy(AutoAddPolicy()) client.connect( host, port=port, username=username, key_filename=key_filename) stdin, stdout, stderr = client.exec_command( 'ls -1 {0}'.format(data_dir)) lslines = stdout.readlines() client.close() # ParaView part Connect('localhost', 7) reader = LegacyVTKReader(FileNames=[ 'data/{0}'.format(l.strip()) for l in lslines]) RenameSource('source', reader) Hope this helps someone! Robert On 12/01/17 at 07:18pm, Robert Sawko wrote: > Dear ParaViewers, > > > I am trying to use Python shell in Client-Server mode, but I am running into > some difficulties. How can I actually browse the remote directories. I tried > to use the `os` module, but that obviously ends up being all local. Here's a > minimal example of what I am trying to achieve. > > > from paraview.simple import Connect, LegacyVTKReader > from os import listdir > > Connect('my_server', port) > location = '/my/remote/location/' > > file_names = listdir(location).sort() > reader = LegacyVTKReader(FileNames=file_names) > > > Please let me know if it's at all possible to query the directory on the > remote > side through an established connection. > > Many thanks, > Robert > -- > Seems like the famous poem of turbulence comes from Jonathan Swift > http://en.wikipedia.org/wiki/The_Siphonaptera -- Playing possum, opposable digit, climbing, swimming, omnivores... Is there nothing they can't do? http://en.wikipedia.org/wiki/Opossum ___ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: https://paraview.org/mailman/listinfo/paraview