julie-forman-kay-lab / IDPConformerGenerator

Build conformational representations of Intrinsically Disordered Proteins and Regions by a guided sampling of the protein torsion space
https://idpconformergenerator.readthedocs.io/
Apache License 2.0
19 stars 6 forks source link

`ldrs` Local Disordered Region Sampling and `resre` Renaming Residues Client #231

Closed menoliu closed 1 year ago

menoliu commented 2 years ago

Building folded domains by providing the folded domain region location -fldr and custom database containing structures that represent the folded domain -flds as part of the cli_build.py module.

joaomcteixeira commented 2 years ago

The most critical part of this implementation is the sort out the clashes in the chain interface between the folded and the unfolded tails. That was my experience when I first tried it some time ago. You can use the same data structures we have in build to accommodate the folded domain, IMHO. So that the pipeline remains almost unchanged. Masks would be needed to avoid calculated clashes (energy function) for the folded domain (if keeping the same pipeline).

Unless there's a better way :-)

:rocket:

menoliu commented 2 years ago

Development is underway! I will try different strategies I have written in the comments section. Fingers crossed these ideas work. Internal method for building will still work though as I'll be developing in coords_builder.py.

menoliu commented 1 year ago

3fe09ac is fully "operational" but it's not very good in the sense that un-physical torsion angles at stitching sites are reproduced. However, I am attempting a new method on the translator and rotator stage by mapping backbone N, CA, C atoms of the dummy residue onto the folded domain using a covariance matrix about their centroids and using single variable descent to calculate the rotational matrix.

In the near future, the rotator and pmover functions will be obsolete. Before optimizing the clash_count function for this new approach, I will see if the torsion angles make sense first.

menoliu commented 1 year ago

@joaomcteixeira After a long time I have touched up and finished these two clients. I have extensively tested fldrs and resptm with different proteins. I've also included a note in the documentation to rename any abnormal residue names in the folded domain with resptm prior to using fldrs so the automatic detection could work. Have a look and cheers :) On-to the next client contacts for complexes ;)

joaomcteixeira commented 1 year ago

Many, many, thanks @menoliu I will test it and review it in the next few days. Please give me ten days more or less. Sorry for the delays. Cheers!

menoliu commented 1 year ago

I am starting up development again! The work so far above this commit is excellent for generating conformers with N-term IDR and C-term IDR tails automatically. From here on I will be working on closing chain breaks with IDRs.

joaomcteixeira commented 1 year ago

Hi @menoliu , Great work! I was testing the cnot7 example and got some errors. I am pasting them here so they can guide you on further on this PR. Big cheers!

multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/joao/github/IDPConformerGenerator/src/idpconfgen/logger.py", line 112, in report_on_crash
    return func(*args, **kwargs)
  File "/home/joao/github/IDPConformerGenerator/src/idpconfgen/cli_fldrs.py", line 1100, in _build_conformers
    elif disorder_case == disorder_cases[3]:
KeyError: 3

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/joao/anaconda3/envs/idpconfgen/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/joao/github/IDPConformerGenerator/src/idpconfgen/logger.py", line 141, in report_on_crash
    raise roc_error from err
idpconfgen.core.exceptions.ReportOnCrashError: Crash reported to output/fldrs_3001593626476633033_1683294682143697767.rpr_on_crash.
"""