Skip to content
goodrichgroupPublic

About

Combinatorial analysis framework for targeted self-assembly

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crafts.jl

Docs Docs Build Status Coverage

Crafts.jl (Combinatorial Analysis Framework for Targeted Self-assembly) computes and optimizes the equilibrium properties and assembly kinetics of mixtures of self-assembling particles.

Starting from a set of binding rules defined within its partner package Roly.jl, Crafts.jl enumerates every structure those rules allow and then predicts their number densities and yields. It further allows investigation of the assembly kinetics by integrating the rate equations governing the assembly, and inverse design of the concentrations and bond energies that make a chosen structure dominate.

Installation

To install Crafts.jl directly from your Julia REPL, first press ] to enter Pkg mode, and then run

pkg> add https://github.com/goodrichgroup/Roly.jl
pkg> add https://github.com/goodrichgroup/Crafts.jl

Basic usage

Three species of square particle that bind into a chain:

using Crafts, Roly

rules = BindingRules([1 1 2 3; 2 1 3 3], UnitSquare)
asys = AssemblySystem(rules, EntropyModel(TreeLike()))

ϕs, εs = fill(0.1, 3), fill(8.0, 2)   # particle concentrations and binding energies
densities(asys, ϕs, εs)               # equilibrium number density of every structure
yields(asys, ϕs, εs)                  # fractions of all structures present

To follow the assembly in time instead, build a reaction network and integrate the rate equations. The last column of ρs is the equilibrium computed above:

net = ReactionNetwork(asys)
ts, ρs = simulate_kinetics(net, ϕs, εs; T=1000.0)

To design instead of predict, load Convex.jl with a solver of your choice. This finds the weakest bonds that still put 90% of the population into the three-particle chain:

using Convex, Clarabel

ξ, residual_energy = minenergydesign(asys, 6; maxdensity=1, minyield=0.9, optimizer=Clarabel.Optimizer)

See the documentation for bond potentials, rate kernels, stability analysis, and the full API.

About

Combinatorial analysis framework for targeted self-assembly

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages