Comments (3)
I guess I shouldn't have used the bug issue... and now I can't seem to edit labels to mark it as a feature request. oops
from molecularnodes.
@tubiana you may want to have some input on this - as you use a lot of martini files
from molecularnodes.
Thanks for adding the label, Brady.
To add a few examples:
A calcium ion might have the atom names of CA, CAL, or CA2+, such as in a calmodulin (e.g. 1CKK). Without defined element information in the PDB file, the biotite guesser (here) would assign that atom to be a carbon atom. This happens for a number of other non-carbon atom names. Assuming a structure with cadmium present would label the cadmium atom as CD, this naming is ambiguous since CD is also used for the delta carbon in amino acid sidechains.
A similar assignment would happen from biotite for coarse-grained particles that begin with the letter C
. Particles that start with 'N', 'O', 'S', or 'H' would be mapped to nitrogen, oxygen, sulfur, and hydrogen atoms, respectively; no consideration of other characters in the atom name are given. And no coarse-grained particle names are considered by biotite if the particle's name gets passed that first filter.
If a trajectory is loaded into Blender via MN, then MDAnalysis is used, which has its own method of guessing missing information from atom names (https://github.com/MDAnalysis/mdanalysis/blob/0582265996b392da382f658b7f0805ca250e1233/package/MDAnalysis/topology/guessers.py#L184-L230 and other functions therein). The guesser is a bit better because MDA has a dictionary that acknowledges a few instances of ambiguousness by mapping atom names to element symbols (https://github.com/MDAnalysis/mdanalysis/blob/0582265996b392da382f658b7f0805ca250e1233/package/MDAnalysis/topology/tables.py#L81-L173).
Would it be worth implementing a single guesser approach rather two separate approaches depending on how files are loaded into Blender? Neither biotite nor MDA guessers require using the objects associated with those modules. They take in strings and return strings. So, for example, when biotite is used to load PDB/CIF files, it will run its own guesser within the biotite.struct.pdb.get_structure()
call (or equivalent for CIF files). After that, a validation run could be implemented to run the MDA guesser to check for incorrect assignments.
In regards to the logging of guessing instances, I've found the Console Window for Blender where warnings/logging could be printed. I'm not certain if this is a commonly used though. Maybe a verbosity level could be set in MN preferences that creates a log file to check when structures are loaded in and manipulated via MN nodes/functions? Just an idea.
from molecularnodes.
Related Issues (20)
- 'Live' MDAnlaysis session loses connection upon object name change
- Blender 4.1 import density broken
- Blender 4.1 custom nodes broken
- change pytest-snapshot to use syrupy
- v4.0.11 surface HOT 3
- TypeError: unsupported operand type(s) for *: 'NoneType' and 'float' HOT 17
- BUG: ValueError in npyio.py loading oxdna topology and trajectory HOT 5
- Can these four formats be imported? If so, which one should I choose? HOT 2
- Un-centered object import broken HOT 1
- MN 4.1.0 and Blender 4.1.1 not working HOT 2
- Doubling up of instances when building assemblies
- Potential to stream trajectories from the new MDDB
- Hals of the surface disappear when we unselect "separate" in Surface MN HOT 2
- Problematic PDBS
- SS with only sheets isn't detected
- Option to 'remove hydrogens' when importing a structure
- Ligand / Lipid Name capture
- Relative paths break import
- Chain Select Output is Color
- Operator to switch out a style node group for another style node group
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from molecularnodes.