3D modeling
This page is about software tools with the purpose of 3D modelling for atomically precise molecular system.
Both ...
- near term nanoscale atomically precise systems and ...
- far term atomically precise systems reaching all the way up towards the macroscale.
This is about:
- Core glue software combining existing tools together (Framework).
- Establishing and expanding a collection of mutually compatible software tools.
One main goal here is to bring different types of structures together in the same workspace.
Such that they can be worked on together in a beneficial way.
Contents
Benefits
This can greatly aid in ...
- A) understanding what to aim at and ...
- B) understanding how to build it. And analyze it.
These two types of work are both boosted and are mutually synergistic.
Following in flipped order since a majority of people are
working on the near term end of the spectrum.
Details to B)
- analysis of results of experiments were different things/structures have been put together
- planning of synthesis such that different things/structures will fit together
Details to A)
- determining what things/structures to synthesize in order to arrive at more advanced systems ASAP
- determining the potential high value goals/targets
Structures to bring together
- Structural DNA nanotechnology
- De-novo protein engineering
- Spiroligomers
- Design of transitionary structures like e.g.
highly polycyclic small molecules, metal organic frameworks, ceria, biominerals, ...
Still beyond experimental reach as of 2022:
Inclusion of structures that are not yet accessible through physical experiments ...
... but are accessible through reliable robust (molecular dynamics) simulation.
This can be useful for guiding development efforts.See:
- Exploratory engineering for what can and what can't be predicted without direct & immediate physical experiments.
- Future-backward development – Backwards chaining from goals/targets
This kind of work only has to offer as product knowledge for directing R&D.
As such it has little to no immediate economic value and is hard to fund.
One possible way to get some of this done nonetheless may be gameification (as e.g. demonstrated in FoldIt).
With the right interface the activity of building advanced namomachinery structures can maybe be made into a fun and enjoyable spare-time activity game.
This can also provide excitement for young adults and motivation to go into a related field.
In this regard noteworthy though is the risk of detrimental over-excitement.
Emergence of a "fanboy/fangirl" culture nor clearly separating between
- ideas serious proposed and by properly done low level exploratory engineering motivated and
- ideas that are very much SciFi fantasies (like grey goo eating the whole biosphere in mere hours)
Can be more harming rather than helping.
Existing Software (focus on open source SW tools - but not exclusive)
(wiki-TODO: extend on these lists)
Atomistic:
- Pymol – https://pymol.org – mostly viewing only
- Avogadro – https://avogadro.cc/
- CADnano – https://cadnano.org/
- Rosetta – https://rosettacommons.org – closed source
- (FoldIt – https://fold.it/ – no actual modelling)
- NanoEngineer-1
- ...
Bulk limit:
- FreeCAD – Attempting to combine several other tools
- OpenSCAD – programmatic denotative
- ...
Modelling across a wide range of scales
Current software modelling tools are typically limited in the range of modellable scale
due to usage of floating point numbers of limited range.
It should be useful to lift that restriction.
For now while actual systems do not yet span many orders of magnitudes in size
this is mostly useful only for far term concept visualizations.
As technology will progress this will increasingly get relevant for physical experiments too.
While it may not seem urgent to solve now, if not solved early on then
ugly/fragile/dangerous hacks & workarounds may creep all the way into advanced systems of the future.
Not a nice prospect.
Programming language as core
It's pretty much necessary as scrip-table glue.
Going beyond just low performance scripting of huge high performance executed batch jobs seems quite desirable.
More on that further down.
Popular suggestion for a language to use is the python programming language.
A huge disadvantage (as with most of current mainstream languages) is
the lack of (type level) guarantees on absence of side-effects
(aka denotatveness, purity, immutable variables).
More on that further below.
As of 2022 other quite revolutionary languages are juts still far from ready yet unfortunately.
Content addressed programming language unison language.
Huge benefits of a denotative (aka purely functional) language
See: Relations of APM to purely functional programming
Just a few examples, in no way exhaustive:
- No errors due to wrong orderings of code lines, as it is common in imperative code.
- Easier debugging. No non-local bugs. Systematic narrowing down leads to finding the bug more reliably.
- Can serve as a basis for projectional editing which can open up huge slew of more benefits
- ...
A Framework that is none
Having many standalone tools and only afterwards gluing them together is kind of a Frankenstein/Jengatower situation.
The necessity of reuse of current tools mandates starting out with this kind of approach. But ...
Ideally the chosen glue language is both powerful (read:fast) and expressive (read:readable) enough such,
that it not only can serve as that (glue), but rather can also serve as basis for new "micro-tools".
That is: Beside old very useful (but due to their size is some ways limited)
monolithic batch processing monster software packages (like e.g. Rosetta)
sub-functionalities of new tools can be exposed much more fine-grainedly and user-friendly.
Think e.g.: Tangible values (Conal Elliott)
Think e.g.: No border between GUI applications.
Related
- Constructive solid geometry
- Distorted visualization methods for convergent assembly
- Visualization methods for gemstone metamaterial factories
External links
MSEP ... Molecular Systems Engineering Platform
Suggesting using Godot game engine as a core common base and adding python scripting glue.