Coverage for /builds/ase/ase/ase/visualize/sage.py: 22.22%

18 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2025-08-02 00:12 +0000

1# fmt: off 

2 

3from ase.data import covalent_radii 

4from ase.data.colors import jmol_colors 

5 

6 

7def view_sage_jmol(atoms, repeat=None, *args, **kwargs): 

8 try: 

9 from .sage.plot.plot3d.shapes import ColorCube, Sphere 

10 except Exception: # XXX Which kind of exception exactly? 

11 raise ImportError( 

12 'view_sage_jmol requires sage (http://www.sagemath.org/) ' + 

13 'and is intended to be used directly in the browser') 

14 

15 if repeat is not None: 

16 atoms = atoms.repeat(repeat) 

17 

18 cell = atoms.cell.diagonal() / 2 

19 model = ColorCube(list(cell), ['blue', 'blue', 'blue'], opacity=0.1) 

20 for atom in atoms: 

21 atomic_number = atom.number 

22 color = tuple(jmol_colors[atomic_number]) 

23 radius = covalent_radii[atomic_number] 

24 model += Sphere(radius, color=color).translate( 

25 *(atom.position - atoms.cell.diagonal() / 2)) 

26 model.show(aspect_ratio=1, frame=False) 

27 

28 

29view_sage = view_sage_jmol