def view(atoms, data=None, viewer='ag', repeat=None, block=False): # Ignore for parallel calculations: if parallel.size != 1: return if hasattr(atoms, 'GetUnitCell'): # Convert old ASE ListOfAtoms to new style. atoms = OldASEListOfAtomsWrapper(atoms).copy() vwr = viewer.lower() if vwr == 'ag': format = 'traj' if repeat is None: command = 'ag' else: command = 'ag --repeat=%d,%d,%d' % tuple(repeat) repeat = None elif vwr == 'vmd': format = 'cube' command = 'vmd' elif vwr == 'rasmol': format = 'pdb' command = 'rasmol -pdb' elif vwr == 'xmakemol': format = 'xyz' command = 'xmakemol -f' elif vwr == 'gopenmol': format = 'xyz' command = 'rungOpenMol' elif vwr == 'avogadro': format = 'cube' command = 'avogadro' elif vwr == 'sage': from ase.visualize.sage import view_sage_jmol view_sage_jmol(atoms) return else: raise RuntimeError('Unknown viewer: ' + viewer) fd, filename = tempfile.mkstemp('.' + format, 'ase-') fd = os.fdopen(fd, 'w') if repeat is not None: atoms = atoms.repeat() if data is None: write(fd, atoms, format=format) else: write(fd, atoms, format=format, data=data) fd.close() if block: os.system('%s %s' % (command, filename)) os.remove(filename) else: if os.name in ['ce', 'nt']: # Win # XXX: how to make it non-blocking? os.system('%s %s' % (command, filename)) os.remove(filename) else: os.system('%s %s & ' % (command, filename)) os.system('(sleep 60; rm %s) &' % filename)
def view(atoms, data=None, viewer='ase-gui', repeat=None, block=False, colors={}): # Ignore for parallel calculations: if parallel.size != 1: return vwr = viewer.lower() if vwr == 'ase-gui': format = 'traj' if repeat is None: command = 'ase-gui' else: command = 'ase-gui --repeat=%d,%d,%d' % tuple(repeat) repeat = None elif vwr == 'vmd': format = 'cube' command = 'vmd' elif vwr == 'rasmol': format = 'pdb' command = 'rasmol -pdb' elif vwr == 'xmakemol': format = 'xyz' command = 'xmakemol -f' elif vwr == 'gopenmol': format = 'xyz' command = 'rungOpenMol' elif vwr == 'avogadro': format = 'cube' command = 'avogadro' elif vwr == 'sage': from ase.visualize.sage import view_sage_jmol view_sage_jmol(atoms) return elif vwr == 'custom': ag.main(colors) else: raise RuntimeError('Unknown viewer: ' + viewer) fd, filename = tempfile.mkstemp('.' + format, 'ase-') if repeat is not None: atoms = atoms.repeat() if data is None: write(filename, atoms, format=format) else: write(filename, atoms, format=format, data=data) if block: subprocess.call([command, filename]) os.remove(filename) else: subprocess.Popen([command, filename]) subprocess.Popen(['sleep 60; rm {0}'.format(filename)], shell=True)
def view(atoms, data=None, viewer='ase-gui', repeat=None, block=False): # Ignore for parallel calculations: if parallel.size != 1: return vwr = viewer.lower() if vwr == 'ase-gui': format = 'traj' if repeat is None: command = 'ase-gui' else: command = 'ase-gui --repeat=%d,%d,%d' % tuple(repeat) repeat = None elif vwr == 'vmd': format = 'cube' command = 'vmd' elif vwr == 'rasmol': format = 'pdb' command = 'rasmol -pdb' elif vwr == 'xmakemol': format = 'xyz' command = 'xmakemol -f' elif vwr == 'gopenmol': format = 'xyz' command = 'rungOpenMol' elif vwr == 'avogadro': format = 'cube' command = 'avogadro' elif vwr == 'sage': from ase.visualize.sage import view_sage_jmol view_sage_jmol(atoms) return else: raise RuntimeError('Unknown viewer: ' + viewer) fd, filename = tempfile.mkstemp('.' + format, 'ase-') if repeat is not None: atoms = atoms.repeat() if data is None: write(filename, atoms, format=format) else: write(filename, atoms, format=format, data=data) if block: subprocess.call([command, filename]) os.remove(filename) else: subprocess.Popen([command, filename]) subprocess.Popen(['sleep 60; rm {0}'.format(filename)], shell=True)
def view(atoms, data=None, viewer='ase', repeat=None, block=False): # Ignore for parallel calculations: if parallel.size != 1: return vwr = viewer.lower() if vwr == 'ase': format = 'traj' command = sys.executable + ' -m ase gui' if repeat is not None: command += ' --repeat={},{},{}'.format(*repeat) repeat = None elif vwr == 'vmd': format = 'cube' command = 'vmd' elif vwr == 'rasmol': format = 'proteindatabank' command = 'rasmol -pdb' elif vwr == 'xmakemol': format = 'xyz' command = 'xmakemol -f' elif vwr == 'gopenmol': format = 'xyz' command = 'rungOpenMol' elif vwr == 'avogadro': format = 'cube' command = 'avogadro' elif vwr == 'sage': from ase.visualize.sage import view_sage_jmol view_sage_jmol(atoms) return elif vwr in ('ngl', 'nglview'): from ase.visualize.nglview import view_ngl return view_ngl(atoms) elif vwr == 'x3d': from ase.visualize.x3d import view_x3d return view_x3d(atoms) elif vwr == 'paraview': # macro for showing atoms in paraview macro = """\ from paraview.simple import * version_major = servermanager.vtkSMProxyManager.GetVersionMajor() source = GetActiveSource() renderView1 = GetRenderView() atoms = Glyph(Input=source, GlyphType='Sphere', # GlyphMode='All Points', Scalars='radii', ScaleMode='scalar', ) RenameSource('Atoms', atoms) atomsDisplay = Show(atoms, renderView1) if version_major <= 4: atoms.SetScaleFactor = 0.8 atomicnumbers_PVLookupTable = GetLookupTableForArray( "atomic numbers", 1) atomsDisplay.ColorArrayName = ('POINT_DATA', 'atomic numbers') atomsDisplay.LookupTable = atomicnumbers_PVLookupTable else: atoms.ScaleFactor = 0.8 ColorBy(atomsDisplay, 'atomic numbers') atomsDisplay.SetScalarBarVisibility(renderView1, True) Render() """ script_name = os.path.join(tempfile.gettempdir(), 'draw_atoms.py') with open(script_name, 'w') as f: f.write(macro) format = 'vtu' command = 'paraview --script=' + script_name else: raise RuntimeError('Unknown viewer: ' + viewer) fd, filename = tempfile.mkstemp('.' + format, 'ase-') if repeat is not None: atoms = atoms.repeat() if data is None: write(filename, atoms, format=format) else: write(filename, atoms, format=format, data=data) if block: subprocess.call(command.split() + [filename]) os.remove(filename) else: subprocess.Popen(command.split() + [filename]) subprocess.Popen(['sleep 60; rm {0}'.format(filename)], shell=True)
def sage(self, atoms): from ase.visualize.sage import view_sage_jmol return view_sage_jmol(atoms)