-
Notifications
You must be signed in to change notification settings - Fork 33
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’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flexible segments definition #919
Comments
It would be possible but requires a lot of refactoring of the CNS code…
Also, this syntax is used for some rather undocumented option to limit the random AIRs definition to selected segments per molecule.
I.e. I would go for a better description of the parameters.
|
Looking into the code you need this two numbers because of a loop; haddock3/src/haddock/modules/refinement/flexref/cns/flex_segment.cns Lines 17 to 18 in 01eb9ae
that later is used in the expression;
looks to me like this change can be achieved just by changing this whole haddock3/src/haddock/modules/refinement/flexref/cns/flex_segment.cns Lines 16 to 31 in 01eb9ae
to: evaluate($nchain1 = 0)
while ($nchain1 < $data.ncomponents) loop nloop1
evaluate($nchain1 = $nchain1 + 1)
evaluate($nflex = 0)
evaluate($continue = true)
while ($continue) loop count_flex
evaluate($nflex = $nflex + 1)
if (defined(flex_seg_$nflex) = FALSE) then
evaluate($continue = false)
evaluate($nflex = $nflex - 1)
end if
end loop count_flex
if ($nflex = 0) then
display NO FULLY FLEXIBLE SEGMENTS for molecule $nchain1
else
display FULLY FLEXIBLE SEGMENTS for molecule $nchain1
evaluate($nf = 0)
while ($nf < $nflex) loop Xfflex
evaluate($nf = $nf + 1)
do (store5 = $nchain1) ( resid $flex_$nf_sta : $flex_$nf_end
and segid $flex_seg_$nf )
display FULLY FLEXIBLE SEGMENT NR $nf FROM $flex_$nf_sta TO $flex_$nf_end IN CHAIN $flex_seg_$nf
end loop Xfflex
end if
end loop nloop1 So you first counts how many flexible segments are defined using your new format. Then uses these new variables in the main loop. The segid part becomes I do think this is a very valid (and not so complicated) change |
And lets please not have this kind of thing, if this changes also helps us to tackle this then it's two for one |
Actually it should be doable to refactor this as suggested as it is not used to limit the random air sampling to specific segments. We have now other parameters controlling that. I will look into it. |
Definition of flexible/semi-flexible segments in refinement modules is somewhat enigmatic:
One has to use parameter
nfleX
with X matching a sequential number of the molecule to be flexible, i.e. ifmolecules = [‘molecule1’, ‘molecule2’]
and one wants 1 segment of molecule2 to be flexible, one needs to define parameter
nfle2 = 1
and not, for example,nfle1
,nfle3
etc.This way of defining a segment feels much less intuitive compared to a definition of the symmetrical segments.
Plus it’s not at all explained at www.bonvinlab.org/haddock3/
Would it be possible to define flexible and semi-flexible segments similarly to the symmetry segment, i.e. using chain/segment id? Let’s say mol2.pdb contains chain B, then, current definition of two flexible segments looks like:
Possible simplified definition of the flexible segment could look like:
Alternatively, a better description of current semi/flexibility definition should be provided.
Current definition:
Possible enhanced definition:
The text was updated successfully, but these errors were encountered: