BioMakie.jl
BioMakie.jl copied to clipboard
Plotting a protein from PDB fails with error: key "ALY" not found.
Very cool package. 💪🏼
I stumbled upon an unexpected behavior.
The following plot fails with error message: 'ERROR: KeyError: key "ALY" not found' which is one of the ligands in there.
using BioMakie
using GLMakie
using BioStructures
struc = retrievepdb("8cv4") |> Observable
fig = Figure()
plotstruc!(fig, struc; plottype = :ballandstick)
Environment: Julia v1.9.2 Arch linux
Stacktrace below:
ERROR: KeyError: key "ALY" not found
Stacktrace:
[1] getindex(h::Dict{String, Vector{Vector{String}}}, key::String)
@ Base ./dict.jl:484
[2] getbonds(::ProteinStructure; algo::Symbol, H::Bool, cutoff::Float64, extradistance::Float64, disulfides::Bool)
@ BioMakie ~/.julia/packages/BioMakie/iPAEt/src/bonds.jl:719
[3] getbonds
@ ~/.julia/packages/BioMakie/iPAEt/src/bonds.jl:681 [inlined]
[4] #290
@ ./none:0 [inlined]
[5] #map#13
@ ~/.julia/packages/Observables/PHGQ8/src/Observables.jl:564 [inlined]
[6] map
@ ~/.julia/packages/Observables/PHGQ8/src/Observables.jl:562 [inlined]
[7] plottingdata(struc::Observable{ProteinStructure}; colors::Dict{String, Symbol}, radiustype::Symbol, water::Bool)
@ BioMakie ~/.julia/packages/BioMakie/iPAEt/src/structure.jl:399
[8] plottingdata
@ ~/.julia/packages/BioMakie/iPAEt/src/structure.jl:382 [inlined]
[9] plotstruc!(fig::Figure, struc::Observable{ProteinStructure}; resolution::Tuple{Int64, Int64}, gridposition::Tuple{Int64, Int64}, plottype::Symbol, atomcolors::Dict{String, Symbol}, markersize::Float64, markerscale::Float64, bondtype::Symbol, distance::Float64, inspectorlabel::Symbol, water::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ BioMakie ~/.julia/packages/BioMakie/iPAEt/src/structure.jl:565
[10] plotstruc!(fig::Figure, struc::Observable{ProteinStructure})
@ BioMakie ~/.julia/packages/BioMakie/iPAEt/src/structure.jl:551
[11] top-level scope
@ REPL[69]:1
Hi! Thanks for opening an issue. I'll look into this. It appears to be a problem with the bond algorithm using a dictionary that doesn't include a lot of modified residues like acetyllysine. Maybe I can add some more of those.
I found the place in the code but I have no idea what to write there. :)