haddock3 icon indicating copy to clipboard operation
haddock3 copied to clipboard

Makes haddock3 restraints subcommands available as web service

Open sverhoeven opened this issue 1 year ago • 4 comments

You are about to submit a new Pull Request. Before continuing make sure you read the contributing guidelines and that you comply with the following criteria:

  • [x] You have sticked to Python. Please talk to us before adding other programming languages to HADDOCK3
  • [ ] Your PR is about CNS
  • [x] Your code is well documented: proper docstrings and explanatory comments for those tricky parts
  • [x] You structured the code into small functions as much as possible. You can use classes if there is a (state) purpose
  • [ ] Your code follows our coding style
  • [ ] You wrote tests for the new code
  • [ ] tox tests pass. Run tox command inside the repository folder
  • [ ] -test.cfg examples execute without errors. Inside examples/ run python run_tests.py -b
  • [ ] PR does not add any dependencies, unless permission granted by the HADDOCK team
  • [x] PR does not break licensing
  • [ ] Your PR is about writing documentation for already existing code :fire:
  • [ ] Your PR is about writing tests for already existing code :godmode:

In the haddock3 webapp I want to make a restraints file (*.tbl) from a list of active residues in 2 models/structures/molecules. I decided not to replicate that algorithm or have a complicated shell script behind a generic web service, but make the web service part of haddock3 repo. As the web service only exposes endpoints that are quick and do not need cns.

With this PR you can do

pip install fastapi uvicorn
uvicorn --port 5000 haddock.clis.restraints.webservice:app

This have the Swagger UI running at http://127.0.0.1:5000/docs#/

127 0 0 1_5000_docs

sverhoeven avatar Mar 27 '24 14:03 sverhoeven

hi Stefan, I would also expose the other endpoints (restrain_bodies, calc_accessibility), as they can be useful in the webapp (for ex. to target the whole surface)

mgiulini avatar Mar 27 '24 15:03 mgiulini

hi Stefan, I would also expose the other endpoints (restrain_bodies, calc_accessibility), as they can be useful in the webapp (for ex. to target the whole surface)

Other restrain endopoints added and also added a preprocess_pdb endpoint.

sverhoeven avatar Apr 17 '24 11:04 sverhoeven

@rvhonorato could you have a look at the web service code. @mgiulini could you have a look at the passive_from_active function? I had to move the guts in the cli module to the librestraints module.

sverhoeven avatar Apr 19 '24 12:04 sverhoeven

hey @sverhoeven I'm out of the loop about the purpose of this. The code lgtm tho

rvhonorato avatar Apr 23 '24 14:04 rvhonorato

@mgiulini could this PR be merged?

Then I can update the deployments in https://github.com/i-VRESSE/haddock3-webapp to use the main haddock3 branch.

sverhoeven avatar May 27 '24 08:05 sverhoeven

hi @sverhoeven no problem for me, but I see it fails the codacy-coverage-reporter-linux, not being able to run the integration tests..@rvhonorato do you know what is happening here?

mgiulini avatar May 27 '24 14:05 mgiulini

FYI i've been working on this: https://github.com/rvhonorato/haddock-restraints to add all these functionalities to the frontend via rust/webassembly and also to serve as the base for the GenTBL service. Seems like it overlaps a bit with this here.

rvhonorato avatar May 28 '24 16:05 rvhonorato

@rvhonorato do you know what is happening here?

Yes, it's written in the error message:

2024-05-27 07:52:56.094Z error [CodacyCoverageReporter] Invalid configuration: Either a project or account API token must be provided or available in an environment variable  - (CodacyCoverageReporter.scala:28)

We should figure out a way that external contributors can also run these, but since our continuous integration pipeline is just for show I've added a conditional: https://github.com/haddocking/haddock3/pull/904

@sverhoeven could you please rebase?

rvhonorato avatar May 28 '24 16:05 rvhonorato

thanks @rvhonorato , checks are green now.

sverhoeven avatar May 31 '24 06:05 sverhoeven