https://github.com/murrellgroup/backboner.jl
Molecular backbone geometry utilities
https://github.com/murrellgroup/backboner.jl
backbone differentiable julia knot protein torsion-angles
Last synced: 7 months ago
JSON representation
Molecular backbone geometry utilities
- Host: GitHub
- URL: https://github.com/murrellgroup/backboner.jl
- Owner: MurrellGroup
- License: mit
- Created: 2023-10-25T19:36:25.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-13T15:42:41.000Z (8 months ago)
- Last Synced: 2025-03-14T12:36:50.336Z (7 months ago)
- Topics: backbone, differentiable, julia, knot, protein, torsion-angles
- Language: Julia
- Homepage: https://murrellgroup.github.io/Backboner.jl/
- Size: 1.41 MB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Backboner
[](https://MurrellGroup.github.io/Backboner.jl/stable/)
[](https://MurrellGroup.github.io/Backboner.jl/dev/)
[](https://github.com/MurrellGroup/Backboner.jl/actions/workflows/CI.yml?query=branch%3Amain)
[](https://codecov.io/gh/MurrellGroup/Backboner.jl)This package implements types and functions for working with molecular *backbones*, defined here as continuous chains of bonded atoms.[^1]
Backbones can be represented with different types:
- `Backbone`: a type containing a 3xN matrix of coordinates
- `ChainedBonds`: a type that holds vectors of bond lengths, bond angles, and torsion angles
- `Frames`: a collection of rotations and translations (e.g. for representing orientations and locations of protein residues)Most functions are implemented especially with differentiability in mind, and can be used in combination with automatic differentiation packages like [Zygote.jl](https://github.com/FluxML/Zygote.jl).
## Installation
```julia
using Pkg
pkg"add Backboner"
```## Example usage
```julia
julia> using Backbonerjulia> backbone = Backbone(rand(Float32, 3, 9))
10-element Backbone{Float32, Matrix{Float32}}:
[0.48967552, 0.91008425, 0.5339774]
[0.2951318, 0.38963223, 0.8952989]
[0.83763623, 0.5279301, 0.3407849]
[0.88848716, 0.643387, 0.76827604]
[0.697279, 0.63588345, 0.0889622]
[0.08590478, 0.6086006, 0.6478121]
[0.06308746, 0.6704904, 0.55852276]
[0.46147835, 0.56259614, 0.7884294]
[0.9694153, 0.052023113, 0.08127427]julia> ChainedBonds(backbone)
ChainedBonds{Float32, Vector{Float32}} with 8 bond lengths, 7 bond angles, and 6 torsion anglesjulia> is_knotted(backbone)
false
```[^1]: In some contexts, the term *backbone* may be used more loosely, and allow for atoms that are not part of the main continuous chain of atoms. This package does not support storing e.g. oxygen and beta-carbon atoms in the matrix of coordinates, as they are not part of the continuous chain of atoms.