# Introduction of this project This section describes the internal structure of the CALYPSO. And introducing the basic algorithms of the CALYPSO. Make sure it is updated when you are developing the CALYPSO. ## Basic structure - Main Thread(Runner) ```mermaid --- caption: Main Thread (Runner) --- flowchart LR id1[population] -- Calydata --> id2[generator wrapper] -- Calydata --> id3[database] --> id4[workers] --> id1 ``` - Workers Thread(WorkerTreads) ```mermaid --- caption: Workers Thread (WorkerTreads) --- flowchart LR subgraph sent_task direction LR runner -- Calydata --> optimizer optimizer -- optcontext --> dispatcher end subgraph receive_task direction LR id0[dispatcher] -- optcontext --> id1[optimizer] id1[optimizer] -- Calydata --> population end ``` - Dispatcher ```mermaid flowchart LR database <-- optcontext --> resource1 & resource2 & ... ``` ## Main The CALYPSO is a Python package. `calypso.x` begin at `calypso/cli.py:6` and it deal with command line arguments and pass them to `calypso.main` ```mermaid flowchart LR subgraph sg1[Init basic] direction TB id1[Find config file] --> id2[Read config file] id2[Read config file] --> id3[Seed everything] id3[Seed everything] --> id4[Pick up set] end subgraph sg2[Init instance] direction LR id5[CalyDatabase] id6[Population] id7[Descriptor] id8[Gbest] id9[Pbest] id10[Fitness] id11[Evolution] id12[Generator] id13[Optimizer] id14[GeneratorWrapper] Dispatcher Runner sg1out(config) --> id5 & id6 & id7 & id8 & id9 & id10 & id11 & id12 & id13 & Dispatcher & Runner subgraph sg3[Database] direction TB id5 --> id5out(database) end subgraph sg4[Population] id5out --> id6 --> id6out(population) end subgraph sg5[Descriptor] id7 --> id7out(descriptor) end subgraph sg6[Evolution] id11 --> id11out(evolutioner) end subgraph sg7[Generator] id12 --> id12out(generator) end subgraph sg8[GeneratorWrapper] id11 & id12 --> id14 --> id14out(generator_wrapper) end subgraph FitnessSub id10 --> id10out(fitness) end subgraph OptimizerSub id10out --> id13 --> id13out(optimizer) end subgraph DispatcherSub id5out --> Dispatcher --> Disout(dispatcher) end end sg1 --> sg2 ``` ```mermaid flowchart LR subgraph RunnerSub id5out(database) & id6out(population) & id13out(optimizer) & id14out(generator_wrapper) & Disout(dispatcher) --> Runner end ```