scikit-vector-fields 1.0__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. {scikit_vector_fields-1.0/src/scikit_vector_fields.egg-info → scikit_vector_fields-1.0.4}/PKG-INFO +1 -4
  2. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/pyproject.toml +3 -3
  3. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4/src/scikit_vector_fields.egg-info}/PKG-INFO +1 -4
  4. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/scikit_vector_fields.egg-info/requires.txt +0 -3
  5. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/skvf/__init__.py +1 -1
  6. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/skvf/data.py +4 -4
  7. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/skvf/entities.py +12 -7
  8. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/skvf/plot.py +113 -67
  9. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/LICENSE +0 -0
  10. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/README.md +0 -0
  11. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/setup.cfg +0 -0
  12. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/scikit_vector_fields.egg-info/SOURCES.txt +0 -0
  13. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/scikit_vector_fields.egg-info/dependency_links.txt +0 -0
  14. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/scikit_vector_fields.egg-info/top_level.txt +0 -0
  15. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/src/skvf/operations.py +0 -0
  16. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/tests/test_1.py +0 -0
  17. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/tests/test_2.py +0 -0
  18. {scikit_vector_fields-1.0 → scikit_vector_fields-1.0.4}/tests/test_3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scikit-vector-fields
3
- Version: 1.0
3
+ Version: 1.0.4
4
4
  Summary: A package to perform vector field computations
5
5
  Author-email: Sarang Pendharker <sarang@ece.iitkgp.ac.in>
6
6
  Project-URL: Homepage, https://github.com/sarang-IITKgp/scikit-vector-fields
@@ -15,11 +15,8 @@ Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: numpy
17
17
  Requires-Dist: matplotlib
18
- Requires-Dist: mayavi
19
- Requires-Dist: PyQt5
20
18
  Requires-Dist: pandas
21
19
  Requires-Dist: regex
22
- Requires-Dist: os-sys
23
20
  Dynamic: license-file
24
21
 
25
22
  # scikit-vector-fields
@@ -1,11 +1,11 @@
1
1
  [build-system]
2
- requires = ["setuptools>=40.8.0","numpy","matplotlib","PyQt5","pandas","regex"]
2
+ requires = ["setuptools>=40.8.0","numpy","matplotlib","pandas","regex"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
 
6
6
  [project]
7
7
  name = "scikit-vector-fields"
8
- version = "1.0"
8
+ version = "1.0.4"
9
9
  authors = [
10
10
  { name="Sarang Pendharker", email="sarang@ece.iitkgp.ac.in" },
11
11
  ]
@@ -20,7 +20,7 @@ classifiers = [
20
20
  "Topic :: Scientific/Engineering"
21
21
  ]
22
22
 
23
- dependencies = ["numpy","matplotlib","mayavi","PyQt5","pandas","regex","os-sys"]
23
+ dependencies = ["numpy","matplotlib","pandas","regex"]
24
24
 
25
25
  [project.urls]
26
26
  "Homepage" = "https://github.com/sarang-IITKgp/scikit-vector-fields"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scikit-vector-fields
3
- Version: 1.0
3
+ Version: 1.0.4
4
4
  Summary: A package to perform vector field computations
5
5
  Author-email: Sarang Pendharker <sarang@ece.iitkgp.ac.in>
6
6
  Project-URL: Homepage, https://github.com/sarang-IITKgp/scikit-vector-fields
@@ -15,11 +15,8 @@ Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: numpy
17
17
  Requires-Dist: matplotlib
18
- Requires-Dist: mayavi
19
- Requires-Dist: PyQt5
20
18
  Requires-Dist: pandas
21
19
  Requires-Dist: regex
22
- Requires-Dist: os-sys
23
20
  Dynamic: license-file
24
21
 
25
22
  # scikit-vector-fields
@@ -1,7 +1,4 @@
1
1
  numpy
2
2
  matplotlib
3
- mayavi
4
- PyQt5
5
3
  pandas
6
4
  regex
7
- os-sys
@@ -4,7 +4,7 @@ import skvf.plot
4
4
  import skvf.data
5
5
 
6
6
 
7
- __version__ = '1.0'
7
+ __version__ = '1.0.4'
8
8
 
9
9
 
10
10
  EPSILON_0 = 8.8541878128e-12 # F/m
@@ -12,7 +12,7 @@ import mayavi.mlab as mlab
12
12
 
13
13
  # import sys as sys
14
14
 
15
- from os.path import dirname, realpath
15
+ # from os.path import dirname, realpath
16
16
  import sys
17
17
 
18
18
 
@@ -35,11 +35,11 @@ def get_text_between_strings_regex(main_string, start_pattern, end_pattern=None)
35
35
  return match.group(1)
36
36
  return None
37
37
 
38
- def load_HFSS_field_file(filename,text_tag=None):
38
+ def load_HFSS_field_file(fullname,text_tag=None):
39
39
  '''Exported file contains following data columns:
40
40
  Z, Y, Freq, X, F_total, Fx, Fy, Fz'''
41
- path=dirname(realpath(sys.argv[0])) ## get path of the current directory.
42
- fullname = path+'/'+filename
41
+ # path=dirname(realpath(sys.argv[0])) ## get path of the current directory.
42
+ # fullname = path+'/'+filename
43
43
 
44
44
  df = pd.read_csv(fullname)
45
45
  print('Loading file: ',fullname, 'as data frame')
@@ -483,13 +483,18 @@ class field():
483
483
 
484
484
  def TH_at_t(self,omega,t):
485
485
  '''Return the field after harmonically evolving for 't' time with 'omega' frequency'''
486
- Fx = self.field.x*np.exp(1j*omega*t)
487
- Fy = self.field.y*np.exp(1j*omega*t)
488
- Fz = self.field.z*np.exp(1j*omega*t)
486
+
487
+ if self.field_type == 'vector':
488
+ Fx = self.field.x*np.exp(1j*omega*t)
489
+ Fy = self.field.y*np.exp(1j*omega*t)
490
+ Fz = self.field.z*np.exp(1j*omega*t)
489
491
 
490
- F_vec_t = vector(Fx,Fy,Fz)
492
+ F_vec_t = vector(Fx,Fy,Fz)
491
493
 
492
- return field(F_vec_t,self.space,text_tag=self.text_tag+'*exp(j '+str(omega)+'*'+str(t)+')')
494
+ return field(F_vec_t,self.space,text_tag=self.text_tag+'*exp(j '+str(omega)+'*'+str(t)+')')
495
+ if self.field_type == 'scalar':
496
+ F_scalar_t = self.field*np.exp(1j*omega*t)
497
+ return field(F_scalar_t,self.space,text_tag=self.text_tag+'*exp(j '+str(omega)+'*'+str(t)+')')
493
498
 
494
499
 
495
500
 
@@ -609,7 +614,7 @@ class field():
609
614
  return ax, Fig
610
615
 
611
616
 
612
- def plot_quiver3d(self,Fig=None,arrow_density = 0.7,text_tag=None,scale_mode='none',colormap='jet'):
617
+ def plot_quiver3d(self,Fig=None,arrow_density = 0.7,text_tag=None,scale_mode='none',cmap='jet'):
613
618
 
614
619
  if text_tag == None:
615
620
  text_tag = self.text_tag
@@ -618,7 +623,7 @@ class field():
618
623
 
619
624
 
620
625
  print('Plotting 3D quiver plot of: '+text_tag)
621
- handle_s, Fig = plot.quiver3d(self.space,self.field,arrow_density=arrow_density,text_tag=text_tag,scale_mode=scale_mode,Fig=Fig,colormap=colormap)
626
+ handle_s, Fig = plot.quiver3d(self.space,self.field,arrow_density=arrow_density,text_tag=text_tag,scale_mode=scale_mode,Fig=Fig,cmap=cmap)
622
627
 
623
628
  return handle_s, Fig
624
629
 
@@ -2,7 +2,7 @@ import numpy as np
2
2
  """Plot commands"""
3
3
  import matplotlib.pyplot as plt
4
4
 
5
- import mayavi.mlab as mlab
5
+
6
6
  import sys as sys
7
7
 
8
8
 
@@ -296,125 +296,171 @@ def contourf(space,scalar,plane=None,loc=0,ax=None,Fig=None,color=True,cmap='jet
296
296
  return ax, Fig
297
297
 
298
298
 
299
- def quiver3d(space,vector,arrow_density = 0.7,text_tag=None,scale_mode='none',Fig=None,colormap='jet'):
299
+ def quiver3d(space,vector,arrow_density = 0.5,text_tag=None,scale_mode=True,ax=None,Fig=None,color=True,cmap='jet',vmax=None,vmin=None,flag_colorbar=True):
300
300
 
301
301
  if text_tag == None:
302
302
  text_tag = vector.text_tag
303
303
 
304
- if Fig == None:
305
- Fig = mlab.figure('Mayavi plot: '+text_tag)
306
- else:
307
- mlab.figure(Fig)
304
+ if ax == None:
305
+ if Fig == None:
306
+ Fig = plt.figure(text_tag)
307
+
308
+ ax = Fig.add_subplot(111,projection='3d')
309
+
310
+
311
+ # mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density))
312
+
313
+
308
314
 
309
315
 
310
316
  if space.plane == 'x-y-z-3D':
311
317
  pts_y,pts_x,pts_z = space.shape
312
318
 
313
- print('Plotting 3D quiver plot of '+text_tag+' using mayavi')
319
+ print('Plotting 3D quiver plot of '+text_tag+' Matplotlib')
320
+
321
+ mask_points = int(1/arrow_density)
322
+
323
+
324
+
325
+ x_grid_masked = space.x_grid[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
326
+ y_grid_masked = space.y_grid[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
327
+ z_grid_masked = space.z_grid[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
328
+
329
+
330
+ vectror_x_grid_masked = vector.x[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
331
+ vectror_y_grid_masked = vector.y[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
332
+ vectror_z_grid_masked = vector.z[0:pts_y:mask_points,0:pts_x:mask_points,0:pts_z:mask_points]
333
+
314
334
 
315
- handle_s = mlab.quiver3d(space.x_grid,space.y_grid,space.z_grid, vector.x,vector.y,vector.z,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)),figure=Fig,colormap=colormap)
335
+
336
+ if color == True:
337
+ ax.quiver(x_grid_masked, y_grid_masked, z_grid_masked, vectror_x_grid_masked, vectror_y_grid_masked, vectror_y_grid_masked, length=0.1, normalize=True,cmap=cmap)
338
+ else:
339
+ ax.quiver(x_grid_masked, y_grid_masked, z_grid_masked, vectror_x_grid_masked, vectror_y_grid_masked, vectror_y_grid_masked, length=0.1, normalize=True)
340
+ # ax.quiver(var1,var2,data1,data2,pivot='mid')
341
+ # ax.set_aspect('equal')
342
+ # ax.set_xlabel(xlabel)
343
+ # ax.set_ylabel(ylabel)
344
+
345
+ # ax.quiver(space.x_grid, space.y_grid, space.z_grid, vector.x, vector.y, vector.z, length=0.1, normalize=True)
346
+ # handle_s = mlab.quiver3d(space.x_grid,space.y_grid,space.z_grid, vector.x,vector.y,vector.z,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)),figure=Fig,colormap=colormap)
316
347
 
317
- mlab.outline()
318
- mlab.orientation_axes()
319
- mlab.axes()
348
+ # mlab.outline()
349
+ # mlab.orientation_axes()
350
+ # mlab.axes()
320
351
 
321
352
  else:
322
353
  sys.exit('only 3D vector fields can be plotted using this command.')
323
- return handle_s, mlab.gcf()
354
+ # return handle_s, mlab.gcf()
355
+ return ax, Fig
324
356
 
325
357
  def volume_slice_scalar(scalar,Fig=None,colormap='jet',text_tag='scalar field'):
326
358
 
327
359
 
328
- if Fig == None:
329
- Fig = mlab.figure('Mayavi volume slice plot:'+text_tag)
330
- else:
331
- mlab.figure(Fig)
360
+ # if Fig == None:
361
+ # Fig = mlab.figure('Mayavi volume slice plot:'+text_tag)
362
+ # else:
363
+ # mlab.figure(Fig)
332
364
 
333
- mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='x_axes')
334
- mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='y_axes')
335
- mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='z_axes')
365
+ # mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='x_axes')
366
+ # mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='y_axes')
367
+ # mlab.volume_slice(np.transpose(scalar,axes=[1,0,2]),figure=Fig,plane_orientation='z_axes')
336
368
 
337
- mlab.contour3d(np.transpose(scalar,axes=[1,0,2]),figure=Fig)
369
+ # mlab.contour3d(np.transpose(scalar,axes=[1,0,2]),figure=Fig)
338
370
 
339
- mlab.outline()
340
- mlab.orientation_axes()
341
- mlab.axes()
371
+ # mlab.outline()
372
+ # mlab.orientation_axes()
373
+ # mlab.axes()
342
374
 
343
- return mlab.gcf()
375
+ print('VERSION UPDATE WARNING: VOLUME SLICE 3D PLOT BASED ON MAYAVI LIBRARY AS BEEN DISCONTINUED. PLEASE USE ALTERNATE PLOT COMMAND.')
376
+
377
+ return Fig
344
378
 
345
379
 
346
380
  def volume_slice_vector(vector,Fig=None,colormap='jet',text_tag='vector field',arrow_density = 0.7,normal_plot=False):
347
381
 
348
- pts_y,pts_x,pts_z = vector.x.shape
382
+ # pts_y,pts_x,pts_z = vector.x.shape
349
383
 
350
- if Fig == None:
351
- Fig = mlab.figure('Mayavi volume slice plot:'+text_tag)
352
- else:
353
- mlab.figure(Fig)
384
+ # if Fig == None:
385
+ # Fig = mlab.figure('Mayavi volume slice plot:'+text_tag)
386
+ # else:
387
+ # mlab.figure(Fig)
354
388
 
355
389
 
356
390
 
357
391
 
358
- if normal_plot == True:
359
- scalar_x_axes = vector.x #np.sqrt(vector.y**2 + vector.z**2)
360
- scalar_y_axes = vector.y #np.sqrt(vector.x**2 + vector.z**2)
361
- scalar_z_axes = vector.z #np.sqrt(vector.x**2 + vector.y**2)
362
- print('Control here')
363
- else:
392
+ # if normal_plot == True:
393
+ # scalar_x_axes = vector.x #np.sqrt(vector.y**2 + vector.z**2)
394
+ # scalar_y_axes = vector.y #np.sqrt(vector.x**2 + vector.z**2)
395
+ # scalar_z_axes = vector.z #np.sqrt(vector.x**2 + vector.y**2)
396
+ # print('Control here')
397
+ # else:
364
398
 
365
- scalar_x_axes = np.sqrt(vector.y**2 + vector.z**2)
366
- scalar_y_axes = np.sqrt(vector.x**2 + vector.z**2)
367
- scalar_z_axes = np.sqrt(vector.x**2 + vector.y**2)
399
+ # scalar_x_axes = np.sqrt(vector.y**2 + vector.z**2)
400
+ # scalar_y_axes = np.sqrt(vector.x**2 + vector.z**2)
401
+ # scalar_z_axes = np.sqrt(vector.x**2 + vector.y**2)
368
402
 
369
- mlab.volume_slice(np.transpose(scalar_x_axes,axes=[1,0,2]), plane_orientation='x_axes',colormap=colormap)
370
- mlab.volume_slice(np.transpose(scalar_y_axes,axes=[1,0,2]), plane_orientation='y_axes',colormap=colormap)
371
- mlab.volume_slice(np.transpose(scalar_z_axes,axes=[1,0,2]), plane_orientation='z_axes',colormap=colormap)
403
+ # mlab.volume_slice(np.transpose(scalar_x_axes,axes=[1,0,2]), plane_orientation='x_axes',colormap=colormap)
404
+ # mlab.volume_slice(np.transpose(scalar_y_axes,axes=[1,0,2]), plane_orientation='y_axes',colormap=colormap)
405
+ # mlab.volume_slice(np.transpose(scalar_z_axes,axes=[1,0,2]), plane_orientation='z_axes',colormap=colormap)
372
406
 
373
- obj = mlab.quiver3d(np.transpose(vector.x,axes=[1,0,2]),np.transpose(vector.y,axes=[1,0,2]),np.transpose(vector.z,axes=[1,0,2]),scale_mode='none',mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)))
407
+ # obj = mlab.quiver3d(np.transpose(vector.x,axes=[1,0,2]),np.transpose(vector.y,axes=[1,0,2]),np.transpose(vector.z,axes=[1,0,2]),scale_mode='none',mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)))
374
408
 
375
- mlab.outline()
376
- mlab.orientation_axes()
377
- mlab.axes()
409
+ # mlab.outline()
410
+ # mlab.orientation_axes()
411
+ # mlab.axes()
412
+
413
+
414
+ print('VERSION UPDATE WARNING: VOLUME SLICE 3D PLOT BASED ON MAYAVI LIBRARY AS BEEN DISCONTINUED. PLEASE USE ALTERNATE PLOT COMMAND.')
415
+
378
416
 
379
- return mlab.gcf()
417
+ return Fig
380
418
 
381
419
 
382
420
  def contour3d(space,scalar,Fig=None,colormap='jet',text_tag='field',contours=None):
383
- if Fig == None:
384
- Fig = mlab.figure('Mayavi contour3d plot:'+text_tag)
385
- else:
386
- mlab.figure(Fig)
421
+ # if Fig == None:
422
+ # Fig = mlab.figure('Mayavi contour3d plot:'+text_tag)
423
+ # else:
424
+ # mlab.figure(Fig)
387
425
 
388
426
 
389
- if contours == None:
390
- mlab.contour3d(np.transpose(space.x_grid,axes=[1,0,2]),np.transpose(space.y_grid,axes=[1,0,2]),np.transpose(space.z_grid,axes=[1,0,2]),np.transpose(scalar,axes=[1,0,2]),figure=Fig)
391
- else:
392
- mlab.contour3d(np.transpose(space.x_grid,axes=[1,0,2]),np.transpose(space.y_grid,axes=[1,0,2]),np.transpose(space.z_grid,axes=[1,0,2]),np.transpose(scalar,axes=[1,0,2]),figure=Fig,contours=contours)
393
- mlab.outline()
394
- mlab.orientation_axes()
395
- mlab.axes()
427
+ # if contours == None:
428
+ # mlab.contour3d(np.transpose(space.x_grid,axes=[1,0,2]),np.transpose(space.y_grid,axes=[1,0,2]),np.transpose(space.z_grid,axes=[1,0,2]),np.transpose(scalar,axes=[1,0,2]),figure=Fig)
429
+ # else:
430
+ # mlab.contour3d(np.transpose(space.x_grid,axes=[1,0,2]),np.transpose(space.y_grid,axes=[1,0,2]),np.transpose(space.z_grid,axes=[1,0,2]),np.transpose(scalar,axes=[1,0,2]),figure=Fig,contours=contours)
431
+ # mlab.outline()
432
+ # mlab.orientation_axes()
433
+ # mlab.axes()
434
+
396
435
 
397
- return mlab.gcf()
436
+ print('VERSION UPDATE WARNING: Contour3D PLOT BASED ON MAYAVI LIBRARY AS BEEN DISCONTINUED. PLEASE USE ALTERNATE PLOT COMMAND.')
437
+
438
+ return Fig
398
439
 
399
440
 
400
441
 
401
442
  def plot_mayavi_quiver(F_field,figure,scale_mode='none',arrow_density=0.7,colormap='jet',line_width=2):
402
443
 
403
- pts_y,pts_x,pts_z = F_field.space.x_grid.shape
444
+ # pts_y,pts_x,pts_z = F_field.space.x_grid.shape
445
+
446
+ # sq = mlab.quiver3d(F_field.space.x_grid,F_field.space.y_grid,F_field.space.z_grid, F_field.field.x,F_field.field.y,F_field.field.z,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)),figure=figure,colormap=colormap,line_width=line_width)
404
447
 
405
- sq = mlab.quiver3d(F_field.space.x_grid,F_field.space.y_grid,F_field.space.z_grid, F_field.field.x,F_field.field.y,F_field.field.z,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-arrow_density)),figure=figure,colormap=colormap,line_width=line_width)
406
- return sq
448
+ print('VERSION UPDATE WARNING: Quiver 3D PLOT BASED ON MAYAVI LIBRARY AS BEEN DISCONTINUED. PLEASE USE ALTERNATE PLOT COMMAND.')
449
+
450
+ return figure
407
451
 
408
452
 
409
453
  def plot_mayavi_points3d(F_field,figure,scale_mode='scalar',point_density=1,colormap='jet',opacity=0.2,vmax=None,vmin=None):
410
- if vmax == None:
411
- vmax = np.max(F_field.real().field)
454
+ # if vmax == None:
455
+ # vmax = np.max(F_field.real().field)
412
456
 
413
- if vmin == None:
414
- vmin = np.min(F_field.real().field)
457
+ # if vmin == None:
458
+ # vmin = np.min(F_field.real().field)
415
459
 
416
- pts_y,pts_x,pts_z = F_field.space.x_grid.shape
460
+ # pts_y,pts_x,pts_z = F_field.space.x_grid.shape
461
+
462
+ # s = mlab.points3d(F_field.space.x_grid,F_field.space.y_grid,F_field.space.z_grid, F_field.field,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-point_density)),figure=figure,colormap=colormap,vmax=vmax,vmin=vmin,opacity=opacity,scale_factor=0.05)
417
463
 
418
- s = mlab.points3d(F_field.space.x_grid,F_field.space.y_grid,F_field.space.z_grid, F_field.field,scale_mode=scale_mode,mask_points=int(max([pts_x,pts_y,pts_z])*(1.1-point_density)),figure=figure,colormap=colormap,vmax=vmax,vmin=vmin,opacity=opacity,scale_factor=0.05)
464
+ print('VERSION UPDATE WARNING: 3D Point PLOT BASED ON MAYAVI LIBRARY AS BEEN DISCONTINUED. PLEASE USE ALTERNATE PLOT COMMAND.')
419
465
 
420
466
  return s