Source code for jarvis.io.zeopp.inputs

"""Module to run zeo++ package."""
import os
import tempfile


[docs]def get_porosity(atoms=None, network_cmd="./network", output_file=None): """Gete pore diameters using zeo++.""" new_file, filename = tempfile.mkstemp() filename = filename + ".cif" atoms.write_cif(filename) if output_file is None: new_file, filename1 = tempfile.mkstemp() output_file = filename1 cmd = network_cmd + " -ha -res " + output_file + " " + filename os.system(cmd) f = open(output_file, "r") lines = f.read().splitlines() f.close() largest_included_sphere = lines[0].split()[1] largest_free_sphere = lines[0].split()[2] largest_included_sphere_along_free_sphere_path = lines[0].split()[3] os.close(new_file) os.remove(filename) return ( largest_included_sphere, largest_free_sphere, largest_included_sphere_along_free_sphere_path, )
[docs]def get_surface_area( atoms=None, network_cmd="/home/knc6/Software/zeopp/zeo++-0.3/network", probe_radius=1.2, chan_radius=None, num_samples=2000, output_file=None, prefix="ja_atoms", ): """Gete surface area using zeo++.""" # See: http://www.zeoplusplus.org/examples.html if chan_radius is None: chan_radius = probe_radius filename = str(prefix) + ".cif" atoms.write_cif(filename) filename1 = str(prefix) + ".sa" if os.path.exists(filename1): os.remove(filename1) cmd = ( network_cmd + " -ha -sa " + str(probe_radius) + " " + str(chan_radius) + " " + str(num_samples) + " " + filename ) os.system(cmd) f = open(filename1, "r") lines = f.read().splitlines() f.close() ASA_m2cm3 = float(lines[0].split()[9]) ASA_m2g = float(lines[0].split()[11]) return ASA_m2cm3, ASA_m2g
""" if __name__ == "__main__": from jarvis.db.figshare import get_jid_data from jarvis.core.atoms import Atoms a = Atoms.from_dict(get_jid_data(jid="JVASP-667")["atoms"]) cmd = "/home/knc6/Software/zeopp/zeo++-0.3/network" x, y, z = get_porosity(atoms=a, network_cmd=cmd) print(x, y, z) """