Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] TeraChem "Server Mode" Harness #284

Closed
coltonbh opened this issue Feb 3, 2021 · 3 comments
Closed

[FEATURE] TeraChem "Server Mode" Harness #284

coltonbh opened this issue Feb 3, 2021 · 3 comments

Comments

@coltonbh
Copy link
Contributor

coltonbh commented Feb 3, 2021

Hi MolSSI Team!

Thanks for all the great work you're doing to standardize quantum chemistry computations. Much appreciated 馃檶

I'm doing some software development in the Martinez Group and want to add a new harness for QCEngine. I want to run my design by your team for any feedback or suggestions.

Proposal

TeraChem has a new mode it can run in--a server mode--that enables a protocol buffer interface to the package. This enables structured input/output from TeraChem. I'd like to conform this interface to the QCSchema specification.

A python package already exists that servers as a client to interface with the protocol buffer compliant server that TeraChem runs. I'll need to write a QCEngine harness that adapts AtomicInput objects to this specification and transforms outputs to the AtomicResult--no problem. However, adding this code to QCEngine will require adding a dependency to an additional package--the python client for the TeraChem protocol buffer server. How does the team feel about adding such a dependency? Additionally, this dependency may be updated quite frequently in the future as I take over new development of the project.

As an alternative, the QCEngine harness could specify this python package but assume it has been installed external to QCEngine. This leaves the QCEngine package missing a dependency for the code but prevents having an additional dependency for a very specific use case--someone using the TeraChem protocol buffer server interface.

Any thoughts on how the team would prefer this feature be implemented? Specifically, thoughts on adding an additional dependency to the QCEngine package?

Thanks! Will start working on this and get you a PR in the not-too-distant future.

@loriab
Copy link
Collaborator

loriab commented Feb 5, 2021

A new harness to TeraChem's server mode sounds great, thanks!

I don't think the extra python package dependency of the TC protocol buffer server python client will be a problem. It'll be like the extra networkx dep for NWChem. You'll search for both it and TeraChem itself in the def found and the harness will only be available if all pieces present. So there won't be a new dep for QCEngine itself, only an extra line in the dev-tools/conda-envs/terachem.yml env spec. That is, if it's possible to test TeraChem on CI servers? Ok if not, but certainly preferable.

You may want to join the QCArchive Slack channel for quicker Q&A. There's an invitation button off the GH QCEngine README. Looking forward to your harness.

@coltonbh
Copy link
Contributor Author

coltonbh commented Feb 5, 2021

Thanks, @loriab! Very helpful. Will be tough to test TeraChem on CI servers unless you have NVIDIA GPUs--do you have them on your CI servers?

Have joined the slack channel. Thanks!

I'll have something together for review in the coming days/weeks.

@coltonbh
Copy link
Contributor Author

Closed by #289

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants