These are the model weights for NanoMaker, my personal de novo protein designer prototype. Project repo: https://github.com/Elliot-Chan-120/NanoMaker
NanoMaker is a dual cross-attention transformer system that generates a 3D arrangement of amino acid (AA) residues' alpha carbons that would form a high-affinity binding area to any given chemical's scaffold in SMILES format. These can then be used as protein pocket patch templates for drug-delivery molecules. NanoMaker also comes with a visualization and characterization module, allowing for downstream analyses.
Skeleton: 3D structure generation
Model: Skeleton is responsible for generating the 3D spatial arrangement of the protein pocket prior to amino acid insertion into said pocket, hence the name "Skeleton".
When presented with a chemical compound, it will say: "the protein pocket surrounding this molecule should look like this". It then generates a series of spherical coordinate vectors, with each corresponding to a "blank" amino acid's alpha carbon placement relative to the drug compound's centroid (Figure 1).
NAAnoBot: Biochemical Environment Curation
Model: NAAnoBot is responsible for deciding which amino acid belongs in a given coordinate.
Each AA is characterized by their physicochemical properties and (bio)chemical makeup that distinguish them from the rest. NAAnoBot works with spatially aware "tokens", meaning it actually doesn't interpret sequences via amino acid identities (like "A", "H", "C" .etc) but rather their feature vectors and relative geometries. Its selection of the next AA depends on the neighbouring AAs biochemistry and their spatial positioning relative to the target coordinate.
(In human terms...) NAAnoBot doesn't say "Valine" or "Leucine" belongs here, instead it says:
"I see all these AAs around target coordinate 'x', and because of their biochemical features and geometry relative to 'x', an amino acid with these biochemical properties would fit in there".
Once the biochemical feature vector is produced, it is then matched against all amino acid feature vectors to determine its best fit. It does this continuously for each provided coordinate until the protein pocket is completed.