Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_version(self) -> str:
self.found(raise_error=True)
which_prog = which('nwchem')
if which_prog not in self.version_cache:
success, output = execute([which_prog, "v.nw"], {"v.nw": ""})
if success:
for line in output["stdout"].splitlines():
if 'nwchem branch' in line:
branch = line.strip().split()[-1]
if 'nwchem revision' in line:
revision = line.strip().split()[-1]
self.version_cache[which_prog] = safe_version(branch + '+' + revision)
return self.version_cache[which_prog]
def get_version(self) -> str:
self.found(raise_error=True)
which_prog = which("rungms")
if which_prog not in self.version_cache:
success, output = execute([which_prog, "v.inp"], {"v.inp": ""})
if success:
for line in output["stdout"].splitlines():
if "GAMESS VERSION" in line:
branch = " ".join(line.strip(" *\t").split()[3:])
self.version_cache[which_prog] = safe_version(branch)
return self.version_cache[which_prog]
raise_error: bool
Passed on to control negative return between False and ModuleNotFoundError raised.
Returns
-------
bool
If psi4 (psithon or psiapi) is found, returns True.
If raise_error is False and psi4 is missing, returns False.
If raise_error is True and psi4 is missing, the error message is raised.
"""
psithon = which("psi4", return_bool=True)
psiapi = which_import("psi4", return_bool=True)
if psithon and not psiapi:
with popen([which("psi4"), "--module"]) as exc:
exc["proc"].wait(timeout=30)
if "module does not exist" in exc["stderr"]:
pass # --module argument only in Psi4 DDD branch
else:
sys.path.append(exc["stdout"].split()[-1])
if psiapi and not psithon:
psiimport = str(Path(which_import("psi4")).parent.parent)
env = os.environ.copy()
env["PYTHONPATH"] = psiimport
with popen(["python", "-c", "import psi4; print(psi4.executable[:-5])"], popen_kwargs={"env": env}) as exc:
exc["proc"].wait(timeout=30)
os.environ["PATH"] += os.pathsep + exc["stdout"].split()[-1]
if psithon or psiapi:
return True
def get_version(self) -> str:
self.found(raise_error=True)
which_prog = which("terachem")
if which_prog not in self.version_cache:
with popen([which_prog, "--version"]) as exc:
exc["proc"].wait(timeout=5)
mobj = re.search(NUMBER, exc["stdout"], re.VERBOSE)
version = mobj.group(0)
self.version_cache[which_prog] = safe_version(version)
return self.version_cache[which_prog]
def get_version(self) -> str:
self.found(raise_error=True)
# Get the node configuration
config = get_config()
# Run NWChem
which_prog = which("nwchem")
if config.use_mpiexec:
command = create_mpi_invocation(which_prog, config)
else:
command = [which_prog]
command.append("v.nw")
if which_prog not in self.version_cache:
success, output = execute(command, {"v.nw": ""}, scratch_directory=config.scratch_directory)
if success:
for line in output["stdout"].splitlines():
if "nwchem branch" in line:
branch = line.strip().split()[-1]
if "nwchem revision" in line:
revision = line.strip().split()[-1]
self.version_cache[which_prog] = safe_version(branch + "+" + revision)
def get_version(self) -> str:
self.found(raise_error=True)
which_prog = which("mp2d")
if which_prog not in self.version_cache:
# Note: anything below v1.1 will return an input error message here. but that's fine as version compare evals to False.
command = [which_prog, "--version"]
import subprocess
proc = subprocess.run(command, stdout=subprocess.PIPE)
self.version_cache[which_prog] = safe_version(proc.stdout.decode("utf-8").strip())
return self.version_cache[which_prog]
def found(self, raise_error: bool = False) -> bool:
return which(
"entos", return_bool=True, raise_error=raise_error, raise_msg="Please install via https://www.entos.info/"
)
def found(raise_error: bool = False) -> bool:
return which(
"xcfour", return_bool=True, raise_error=raise_error, raise_msg="Please install via http://cfour.de/"
)
"""Whether NWChem harness is ready for operation, with both the QC program and any particular dependencies found.
Parameters
----------
raise_error: bool
Passed on to control negative return between False and ModuleNotFoundError raised.
Returns
-------
bool
If both nwchem and its harness dependency networkx are found, returns True.
If raise_error is False and nwchem or networkx are missing, returns False.
If raise_error is True and nwchem or networkx are missing, the error message for the first missing one is raised.
"""
qc = which(
"nwchem",
return_bool=True,
raise_error=raise_error,
raise_msg="Please install via http://www.nwchem-sw.org/index.php/Download",
)
dep = which_import(
"networkx",
return_bool=True,
raise_error=raise_error,
raise_msg="For NWChem harness, please install via `conda install networkx -c conda-forge`.",
)
return qc and dep
def found(raise_error: bool = False) -> bool:
return which(
"mp2d",
return_bool=True,
raise_error=raise_error,
raise_msg="Please install via `conda install mp2d -c psi4`",
)