Structural properties
MolSimToolkitShared.distances
— Methoddistances(simulation, indices1::AbstractVector{<:Integer}, indices2::AbstractVector{<:Integer})
distances(simulation, selection1::AbstractVector{<:PDBTools.Atom}, selection2::AbstractVector{<:PDBTools.Atom})
Function that calculates the distance between the centers of mass of two selections in a simulation.
The selections are defined by the indices1 and indices2 vectors, which are the indices of the atoms, or by the selection1 and selection2 vectors, which are vectors of PDBTools.Atom
objects.
Use silent=true
to suppress the progress bar.
Example
julia> using PDBTools
julia> using MolSimToolkit, MolSimToolkit.Testing
julia> sim = Simulation(Testing.namd_pdb, Testing.namd_traj);
julia> ats = atoms(sim);
julia> i1 = findall(sel"protein and residue 1", ats); # indices
julia> i2 = findall(sel"protein and residue 15", ats); # indices
julia> distances(sim, i1, i2; silent=true)
5-element Vector{Float64}:
23.433267858947584
30.13791365033211
28.48617683945202
27.92740141686934
23.235012287435566
julia> distances(sim,
filter(sel"protein and residue 1", ats), # selection (PDBTools.Atom)
filter(sel"protein and residue 15", ats); # selection (PDBTools.Atom)
silent=true
)
5-element Vector{Float64}:
23.433267858947584
30.13791365033211
28.48617683945202
27.92740141686934
23.235012287435566
MolSimToolkitShared.center_of_mass
— Methodcenter_of_mass(
indices::AbstractVector{Int};
simulation::Simulation,
positions::FramePositions,
iref::Union{Nothing,Int} = max(1, div(length(indices),2)),
)
Calculate the center of mass of a selection of atoms in a simulation given the positions. The selection is defined by the indices
vector, which is the indices of the atoms.
The iref
parameter is the index of the reference atom. The center of mass is calculated by first computing the minimum-image of all atoms relative to this atom. By default, it is the atom closest to the middle of the indices vector. If iref
is nothing
, the center of mass is calculated without wrapping the coordinates.
julia> using PDBTools
julia> using MolSimToolkit, MolSimToolkit.Testing
julia> simulation = Simulation(Testing.namd_pdb, Testing.namd_traj);
julia> protein_indices = findall(sel"protein", atoms(simulation));
julia> first_frame!(simulation); # move simulation to the first frame
julia> coor = positions(current_frame(simulation));
julia> cm = center_of_mass(protein_indices, simulation, coor)
3-element Point3D{Float64} with indices SOneTo(3):
-3.7290442807974906
-1.5339226637687564
1.960640754560446
The iref=nothing
option was added in version 1.22.0.
MolSimToolkit.most_representative_structure
— Methodmost_representative_structure(simulation::Simulation; atoms = nothing)
Find the most representative structure in a simulation. The most representative structure is the one that minimizes the RMSD with respect to the average structure of the simulation. The average structure is defined iteratively, first by aligning all frames to the first frame, and then by averaging the aligned structures. The structure most similar to the average is then identified and used as the reference structure for the next iteration. The process is repeated until the structure most similar to the average is the same as the previous iteration.
Arguments
simulation::Simulation
: Simulation object.atoms
: Atoms to consider in the calculation:atoms
isnothing
: the function will consider all alpha-carbons in proteins ("protein and name CA"
).atoms
is anAbstractVector{<:PDBTools.Atom}
: the function will consider the atoms in the vector.atoms
is anAbstractVector{<:Int}
: the function will consider the atoms with the indices in the vector.atoms
is aString
: the function will consider the atoms selected by the string.
Returns
- Tuple
(Int, Float64)
, with:- Index of the most representative structure.
- RMSD of the most representative structure with respect to the average structure.
Example
julia> using MolSimToolkit, MolSimToolkit.Testing, PDBTools
julia> simulation = Simulation(Testing.namd_pdb, Testing.namd_traj);
julia> most_representative_structure(simulation) # atoms == nothing (all alpha-carbons in proteins)
(4, 1.1681526249035976)
julia> most_representative_structure(simulation; atoms = "protein and name CA") # atoms is a String
(4, 1.1681526249035976)
julia> calphas = select(atoms(simulation), "name CA");
julia> most_representative_structure(simulation; atoms = calphas) # atoms is an Vector{PDBTools.Atom}
(4, 1.1681526249035976)
julia> ica = PDBTools.index.(calphas)
julia> most_representative_structure(simulation; atoms = ica) # atoms is an vector of indices
(4, 1.1681526249035976)