MolecularConformation.jl
is a Julia Package which can be used to solve the conformation problem of some structure defined by a distance matrix of exact distance.
This package was developed to Julia version >=1.0. Consequently, in order to install this package we need to type "]" in Julia REPL and after
Pkg> add https://github.com/evcastelani/MolecularConformation.jl#nameofbranch
This new version of Molecular Conformation works using a data list in NMRType
format. In this sense, in order to run the conformation function
we need to read a .nmr
file. For example, let us consider the pdb1a03.nmr
given in examples
folder. In this case, we need convert the .nmr
file to NMRType
as follows
julia> data = preprocessing("pdb1a03.nmr")
Now, we need to define the options of MolecularConformation.jl as
julia> options = ConformationSetup(0.000001,classicBP,true)
where 0.000001
is the precision, classicBP
is the solver used to solve the problem and true
value is used to compute all possible solutions. In order to determine the positions of atoms we can run the main function:
julia> conformation(data,options)
As return a ConformationOutput
type is provided with all required information.
Massive tests were carried out to prove the potential of the implementations. If you are interested in reproducing the tests, it is highly recommended that you use the performance
branch. In addition, for pre-processing of instances, it was used HCProtCLI.
To execute the benchmarks, you need to have the MolecularConformation
package correctly installed. Follow these steps:
- Navigate to the
real_instances
folder (typecd examples/real_instances/
). - Run
julia
. - Load the necessary script using
include("perform2.jl")
. - To run all selected instances, use the command
julia> perform("w", list_of_problems=Array{String,1}(), ε=1.0e-5, time_limit=Second(60), benchmarkSeconds=4500, benchmarkSamples=2, improv = (c,q) -> q/c)
- Finally, execute
julia> perform("w", list_of_problems=["pdb2k2f","pdb2kbm","pdb2j0z","pdb2adl"], ε=1.0e-5, time_limit=Second(60), benchmarkSeconds=4500, minSamples=20000, improv = (c,q) -> q/c)
to performe a specific list of problems.
If you want to run BP-All
, simply execute
julia> `performRMSD("w", list_of_problems = ["pdb2k2f", "pdb2kbm"], ε=1.0e-6, time_limit=Second(120), benchmarkSeconds=20000, minSamples=10000, improv= (m,q) -> q/m)`.
- Go to
examples/lavor_instances/
- Load
include("performance.jl")
- Finally
julia> runperf(benchmarkSamples=100000,benchmarkSeconds=300,ε=maxintfloat(),virtual_ε=maxintfloat())
- Discuss about the standard extension
.pdb
or.mdjeep
or another; - Include signs vector (this idea doesn't work);
- Include in the data list the information about both atoms not just one
- Include in the data list the symmetry in the information too;
- Discuss preprocessing;
- Optimize redundant plan;
- Implement chirality;
- Optimize torsion angle in the repeating process;
- Modify the quaternion version to new input and improvements;
- Run all examples and create a table of tests;
- Include a decent documentation using
Documenter.jl
. - Merge branch master with COAP
- Revise the Documentation (and the readme in benchmarks folders)
- Add in README informations about the consolidate benchmark files and a brief description about the benchmark folders
- Update the package to last LTS Julia version