Skip to content

evcastelani/MolecularConformation.jl

Repository files navigation

MolecularConformation.jl

Build Status Build status codecov

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.

Install

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

Basic usage

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.

Note

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.

Benchmarks

To execute the benchmarks, you need to have the MolecularConformation package correctly installed. Follow these steps:

Real instances

  1. Navigate to the real_instances folder (type cd examples/real_instances/).
  2. Run julia.
  3. Load the necessary script using include("perform2.jl").
  4. 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)
  1. 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)`.

Artificial instances

  1. Go to examples/lavor_instances/
  2. Load include("performance.jl")
  3. Finally
julia> runperf(benchmarkSamples=100000,benchmarkSeconds=300=maxintfloat(),virtual_ε=maxintfloat())

TO DO

  1. Discuss about the standard extension .pdb or .mdjeep or another;
  2. Include signs vector (this idea doesn't work);
  3. Include in the data list the information about both atoms not just one
  4. Include in the data list the symmetry in the information too;
  5. Discuss preprocessing;
  6. Optimize redundant plan;
  7. Implement chirality;
  8. Optimize torsion angle in the repeating process;
  9. Modify the quaternion version to new input and improvements;
  10. Run all examples and create a table of tests;
  11. Include a decent documentation using Documenter.jl.
  12. Merge branch master with COAP
  13. Revise the Documentation (and the readme in benchmarks folders)
  14. Add in README informations about the consolidate benchmark files and a brief description about the benchmark folders
  15. Update the package to last LTS Julia version

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages