E. Coli Whole Cell Model by Covert Lab Other run variants Updated 2025-07-16
Besides time series run variants, conditions can also be selected directly without a time series as in:which select row indices from so
python runscripts/manual/runSim.py --variant condition 1 1reconstruction/ecoli/flat/condition/condition_defs.tsv. The above 1 1 would mean the second line of that file which starts with:"condition" "nutrients" "genotype perturbations" "doubling time (units.min)" "active TFs"
"basal" "minimal" {} 44.0 []
"no_oxygen" "minimal_minus_oxygen" {} 100.0 []
"with_aa" "minimal_plus_amino_acids" {} 25.0 ["CPLX-125", "MONOMER0-162", "CPLX0-7671", "CPLX0-228", "MONOMER0-155"]1 means no_oxygen. E. Coli Whole Cell Model by Covert Lab Output overview Updated 2025-07-16
Run output is placed under
out/:Some of the output data is stored as
.cpickle files. To observe those files, you need the original Python classes, and therefore you have to be inside Docker, from the host it won't work.We can list all the plots that have been produced under Plots are also available in SVG and PDF formats, e.g.:
out/ withfind -name '*.png'The output directory has a hierarchical structure of type:where:
./out/manual/wildtype_000000/000000/generation_000000/000000/wildtype_000000: variant conditions.wildtypeis a human readable label, and000000is an index amongst the possiblewildtypeconditions. For example, we can have different simulations with different nutrients, or different DNA sequences. An example of this is shown at run variants.000000: initial random seed for the initial cell, likely fed to NumPy'snp.random.seedgenereation_000000: this will increase with generations if we simulate multiple cells, which is supported by the model000000: this will presumably contain the cell index within a generation
We also understand that some of the top level directories contain summaries over all cells, e.g. the
massFractionSummary.pdf plot exists at several levels of the hierarchy:./out/manual/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut/massFractionSummary.pdfEach of thoes four levels of
plotOut is generated by a different one of the analysis scripts:./out/manual/plotOut: generated bypython runscripts/manual/analysisVariant.py. Contains comparisons of different variant conditions. We confirm this by looking at the results of run variants../out/manual/wildtype_000000/plotOut: generated bypython runscripts/manual/analysisCohort.py --variant_index 0. TODO not sure how to differentiate between two different labels e.g.wildtype_000000andsomethingElse_000000. If-vis not given, a it just picks the first one alphabetically. TODO not sure how to automatically generate all of those plots without inspecting the directories../out/manual/wildtype_000000/000000/plotOut: generated bypython runscripts/manual/analysisMultigen.py --variant_index 0 --seed 0./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut: generated bypython runscripts/manual/analysisSingle.py --variant_index 0 --seed 0 --generation 0 --daughter 0. Contains information about a single specific cell.
E. Coli Whole Cell Model by Covert Lab Publications Updated 2025-07-16
Unfortunately, due to lack of one page to rule them all, the on-Git tree publication list is meager, some of the most relevant ones seems to be:
- 2021 open access review paper: journals.asm.org/doi/full/10.1128/ecosalplus.ESP-0001-2020 "The E. coli Whole-Cell Modeling Project". They should just past that stuff in a README :-) The article mentions that it is a follow up to the previous M. genitalium whole cell model by Covert lab. Only 43% of known genes modelled at this point however, a shame.
- 2020 under Science paywall: www.science.org/doi/10.1126/science.aav3751 "Simultaneous cross-evaluation of heterogeneous E. coli datasets via mechanistic simulation"
E. Coli Whole Cell Model by Covert Lab Source code overview Updated 2025-07-16
Let's try to understand some interesting looking, with a special focus on our understanding of the tiny E. Coli K-12 MG1655 operon thrLABC part of the metabolism, which we have well understood at Section "E. Coli K-12 MG1655 operon thrLABC".
reconstruction/ecoli/flat/compartments.tsvcontains cellular compartment information:"abbrev" "id" "n" "CCO-BAC-NUCLEOID" "j" "CCO-CELL-PROJECTION" "w" "CCO-CW-BAC-NEG" "c" "CCO-CYTOSOL" "e" "CCO-EXTRACELLULAR" "m" "CCO-MEMBRANE" "o" "CCO-OUTER-MEM" "p" "CCO-PERI-BAC" "l" "CCO-PILUS" "i" "CCO-PM-BAC-NEG"CCO: "Celular COmpartment"BAC-NUCLEOID: nucleoidCELL-PROJECTION: cell projectionCW-BAC-NEG: TODO confirm: cell wall (of a Gram-negative bacteria)CYTOSOL: cytosolEXTRACELLULAR: outside the cellMEMBRANE: cell membraneOUTER-MEM: bacterial outer membranePERI-BAC: periplasmPILUS: pilusPM-BAC-NEG: TODO: plasma membrane, but that is the same as cell membrane no?
reconstruction/ecoli/flat/promoters.tsvcontains promoter information. Simple file, sample lines:corresponds to E. Coli K-12 MG1655 promoter thrLp, which starts as position 148."position" "direction" "id" "name" 148 "+" "PM00249" "thrLp"reconstruction/ecoli/flat/proteins.tsvcontains protein information. Sample line corresponding to e. Coli K-12 MG1655 gene thrA:so we understand that:"aaCount" "name" "seq" "comments" "codingRnaSeq" "mw" "location" "rnaId" "id" "geneId" [91, 46, 38, 44, 12, 53, 30, 63, 14, 46, 89, 34, 23, 30, 29, 51, 34, 4, 20, 0, 69] "ThrA" "MRVL..." "Location information from Ecocyc dump." "AUGCGAGUGUUG..." [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 89103.51099999998, 0.0, 0.0, 0.0, 0.0] ["c"] "EG10998_RNA" "ASPKINIHOMOSERDEHYDROGI-MONOMER" "EG10998"aaCount: amino acid count, how many of each of the 20 proteinogenic amino acid are thereseq: full sequence, using the single letter abbreviation of the proteinogenic amino acidsmw; molecular weight? The 11 components appear to be given atreconstruction/ecoli/flat/scripts/unifyBulkFiles.py:so they simply classify the weight? Presumably this exists for complexes that have multiple classes?molecular_weight_keys = [ '23srRNA', '16srRNA', '5srRNA', 'tRNA', 'mRNA', 'miscRNA', 'protein', 'metabolite', 'water', 'DNA', 'RNA' # nonspecific RNA ]23srRNA,16srRNA,5srRNAare the three structural RNAs present in the ribosome: 23S ribosomal RNA, 16S ribosomal RNA, 5S ribosomal RNA, all others are obvious:- tRNA
- mRNA
- protein. This is the seventh class, and this enzyme only contains mass in this class as expected.
- metabolite
- water
- DNA
- RNA: TODO
rnavsmiscRNA
location: cell compartment where the protein is present,cdefined atreconstruction/ecoli/flat/compartments.tsvas cytoplasm, as expected for something that will make an amino acid
reconstruction/ecoli/flat/rnas.tsv: TODO vstranscriptionUnits.tsv. Sample lines:"halfLife" "name" "seq" "type" "modifiedForms" "monomerId" "comments" "mw" "location" "ntCount" "id" "geneId" "microarray expression" 174.0 "ThrA [RNA]" "AUGCGAGUGUUG..." "mRNA" [] "ASPKINIHOMOSERDEHYDROGI-MONOMER" "" [0.0, 0.0, 0.0, 0.0, 790935.00399999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ["c"] [553, 615, 692, 603] "EG10998_RNA" "EG10998" 0.0005264904halfLife: half-lifemw: molecular weight, same as inreconstruction/ecoli/flat/proteins.tsv. This molecule only have weight in themRNAclass, as expected, as it just codes for a proteinlocation: same as inreconstruction/ecoli/flat/proteins.tsvntCount: nucleotide count for each of the ATGCmicroarray expression: presumably refers to DNA microarray for gene expression profiling, but what measure exactly?
reconstruction/ecoli/flat/sequence.fasta: FASTA DNA sequence, first two lines:>E. coli K-12 MG1655 U00096.2 (1 to 4639675 = 4639675 bp) AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGCTTCTGreconstruction/ecoli/flat/transcriptionUnits.tsv: transcription units. We can observe for example the two different transcription units of the E. Coli K-12 MG1655 operon thrLABC in the lines:"expression_rate" "direction" "right" "terminator_id" "name" "promoter_id" "degradation_rate" "id" "gene_id" "left" 0.0 "f" 310 ["TERM0-1059"] "thrL" "PM00249" 0.198905992329492 "TU0-42486" ["EG11277"] 148 657.057317358791 "f" 5022 ["TERM_WC-2174"] "thrLABC" "PM00249" 0.231049060186648 "TU00178" ["EG10998", "EG10999", "EG11000", "EG11277"] 148promoter_id: matches promoter id inreconstruction/ecoli/flat/promoters.tsvgene_id: matches id inreconstruction/ecoli/flat/genes.tsvid: matches exactly those used in BioCyc, which is quite nice, might be more or less standardized:
reconstruction/ecoli/flat/genes.tsv"length" "name" "seq" "rnaId" "coordinate" "direction" "symbol" "type" "id" "monomerId" 66 "thr operon leader peptide" "ATGAAACGCATT..." "EG11277_RNA" 189 "+" "thrL" "mRNA" "EG11277" "EG11277-MONOMER" 2463 "ThrA" "ATGCGAGTGTTG" "EG10998_RNA" 336 "+" "thrA" "mRNA" "EG10998" "ASPKINIHOMOSERDEHYDROGI-MONOMER"reconstruction/ecoli/flat/metabolites.tsvcontains metabolite information. Sample lines:In the case of the enzyme thrA, one of the two reactions it catalyzes is "L-aspartate 4-semialdehyde" into "Homoserine"."id" "mw7.2" "location" "HOMO-SER" 119.12 ["n", "j", "w", "c", "e", "m", "o", "p", "l", "i"] "L-ASPARTATE-SEMIALDEHYDE" 117.104 ["n", "j", "w", "c", "e", "m", "o", "p", "l", "i"]Starting from the enzyme page: biocyc.org/gene?orgid=ECOLI&id=EG10998 we reach the reaction page: biocyc.org/ECOLI/NEW-IMAGE?type=REACTION&object=HOMOSERDEHYDROG-RXN which has reaction IDHOMOSERDEHYDROG-RXN, and that page which clarifies the IDs:so these are the compounds that we care about.- biocyc.org/compound?orgid=ECOLI&id=L-ASPARTATE-SEMIALDEHYDE: "L-aspartate 4-semialdehyde" has ID
L-ASPARTATE-SEMIALDEHYDE - biocyc.org/compound?orgid=ECOLI&id=HOMO-SER: "Homoserine" has ID
HOMO-SER
- biocyc.org/compound?orgid=ECOLI&id=L-ASPARTATE-SEMIALDEHYDE: "L-aspartate 4-semialdehyde" has ID
reconstruction/ecoli/flat/reactions.tsvcontains chemical reaction information. Sample lines:"reaction id" "stoichiometry" "is reversible" "catalyzed by" "HOMOSERDEHYDROG-RXN-HOMO-SER/NAD//L-ASPARTATE-SEMIALDEHYDE/NADH/PROTON.51." {"NADH[c]": -1, "PROTON[c]": -1, "HOMO-SER[c]": 1, "L-ASPARTATE-SEMIALDEHYDE[c]": -1, "NAD[c]": 1} false ["ASPKINIIHOMOSERDEHYDROGII-CPLX", "ASPKINIHOMOSERDEHYDROGI-CPLX"] "HOMOSERDEHYDROG-RXN-HOMO-SER/NADP//L-ASPARTATE-SEMIALDEHYDE/NADPH/PROTON.53." {"NADPH[c]": -1, "NADP[c]": 1, "PROTON[c]": -1, "L-ASPARTATE-SEMIALDEHYDE[c]": -1, "HOMO-SER[c]": 1 false ["ASPKINIIHOMOSERDEHYDROGII-CPLX", "ASPKINIHOMOSERDEHYDROGI-CPLX"]catalized by: here we seeASPKINIHOMOSERDEHYDROGI-CPLX, which we can guess is a protein complex made out ofASPKINIHOMOSERDEHYDROGI-MONOMER, which is the ID for thethrAwe care about! This is confirmed incomplexationReactions.tsv.
reconstruction/ecoli/flat/complexationReactions.tsvcontains information about chemical reactions that produce protein complexes:The"process" "stoichiometry" "id" "dir" "complexation" [ { "molecule": "ASPKINIHOMOSERDEHYDROGI-CPLX", "coeff": 1, "type": "proteincomplex", "location": "c", "form": "mature" }, { "molecule": "ASPKINIHOMOSERDEHYDROGI-MONOMER", "coeff": -4, "type": "proteinmonomer", "location": "c", "form": "mature" } ] "ASPKINIHOMOSERDEHYDROGI-CPLX_RXN" 1coeffis how many monomers need to get together for form the final complex. This can be seen from the Summary section of ecocyc.org/gene?orgid=ECOLI&id=ASPKINIHOMOSERDEHYDROGI-MONOMER:Fantastic literature summary! Can't find that in database form there however.Aspartate kinase I / homoserine dehydrogenase I comprises a dimer of ThrA dimers. Although the dimeric form is catalytically active, the binding equilibrium dramatically favors the tetrameric form. The aspartate kinase and homoserine dehydrogenase activities of each ThrA monomer are catalyzed by independent domains connected by a linker region.
reconstruction/ecoli/flat/proteinComplexes.tsvcontains protein complex information:"name" "comments" "mw" "location" "reactionId" "id" "aspartate kinase / homoserine dehydrogenase" "" [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356414.04399999994, 0.0, 0.0, 0.0, 0.0] ["c"] "ASPKINIHOMOSERDEHYDROGI-CPLX_RXN" "ASPKINIHOMOSERDEHYDROGI-CPLX"reconstruction/ecoli/flat/protein_half_lives.tsvcontains the half-life of proteins. Very few proteins are listed however for some reason.reconstruction/ecoli/flat/tfIds.csv: transcription factors information:"TF" "geneId" "oneComponentId" "twoComponentId" "nonMetaboliteBindingId" "activeId" "notes" "arcA" "EG10061" "PHOSPHO-ARCA" "PHOSPHO-ARCA" "fnr" "EG10325" "FNR-4FE-4S-CPLX" "FNR-4FE-4S-CPLX" "dksA" "EG10230"
Education Updated 2025-07-16
One of the causes Ciro Santilli care the most about: motivation.
How to improve education? Simple:
- tax the fuck out of the rich people and companies: wealth tax and invest it in education
- invest intelligently as mentioned at what poor countries have to do to get richer:
- focus on fewer higher excellence schools that select the most promising poor students, rather than giving crappy average to everyone
- use OurBigBook.com
Educational charitable organization Updated 2025-07-16
In this section we list charitable organizations that support education or research:
- elifesciences.org/labs by eLife
- www.digital-science.com/investment/catalyst-grant/ by Shuttleworth Foundation.
- en.wikipedia.org/wiki/PLOS
- www.chanzuckerberg.com/ Zuck has already invested in education previously:
- openuk.uk/
- Sir Peter Lampl, Education Endowment Foundation and Sutton Trust
- Jacobs Foundation, by German-Swiss coffee mogul Klaus Johann Jacobs
- joint-research-centre.ec.europa.eu/what-open-education_en
- www.non-trivial.org/ "Launch Your Own Impactful Project CHOOSE YOUR CAUSE. GET EXPERT GUIDANCE. FIND A SOLUTION AND MAKE IT HAPPEN."
- by United States Government:
- FY 2024 Education Innovation and Research:
- Education Innovation and Research (EIR) Notices Inviting Applications
- oese.ed.gov/offices/office-of-discretionary-grants-support-services/innovation-early-learning/education-innovation-and-research-eir/fy-2024-competition/
- www.federalregister.gov/documents/2024/05/06/2024-09797/applications-for-new-awards-education-innovation-and-research-eir-program-early-phase-grants
- FY 2024 Education Innovation and Research:
ELF Hello World Tutorial Program header table Updated 2025-07-16
Only appears in the executable.
Contains information of how the executable should be put into the process virtual memory.
The executable is generated from object files by the linker. The main jobs that the linker does are:
- determine which sections of the object files will go into which segments of the executable.
- do relocation according to the
.rela.textsection. This depends on how the multiple sections are put into memory.
readelf -l hello_world.out gives:Elf file type is EXEC (Executable file)
Entry point 0x4000b0
There are 2 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000
0x00000000000000d7 0x00000000000000d7 R E 200000
LOAD 0x00000000000000d8 0x00000000006000d8 0x00000000006000d8
0x000000000000000d 0x000000000000000d RW 200000
Section to Segment mapping:
Segment Sections...
00 .text
01 .dataOn the ELF header, and:
e_phoff, e_phnum and e_phentsize told us that there are 2 program headers, which start at 0x40 and are 0x38 bytes long each, so they are:00000040 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00 |..@.......@.....|
00000060 d7 00 00 00 00 00 00 00 d7 00 00 00 00 00 00 00 |................|
00000070 00 00 20 00 00 00 00 00 |.. ..... |00000070 01 00 00 00 06 00 00 00 | ........|
00000080 d8 00 00 00 00 00 00 00 d8 00 60 00 00 00 00 00 |..........`.....|
00000090 d8 00 60 00 00 00 00 00 0d 00 00 00 00 00 00 00 |..`.............|
000000a0 0d 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 |.......... .....|Structure represented www.sco.com/developers/gabi/2003-12-17/ch5.pheader.html:
typedef struct {
Elf64_Word p_type;
Elf64_Word p_flags;
Elf64_Off p_offset;
Elf64_Addr p_vaddr;
Elf64_Addr p_paddr;
Elf64_Xword p_filesz;
Elf64_Xword p_memsz;
Elf64_Xword p_align;
} Elf64_Phdr;Breakdown of the first one:
- 40 0:
p_type=01 00 00 00=PT_LOAD: this is a regular segment that will get loaded in memory. - 40 4:
p_flags=05 00 00 00= execute and read permissions. No write: we cannot modify the text segment. A classic way to do this in C is with string literals: stackoverflow.com/a/30662565/895245 This allows kernels to do certain optimizations, like sharing the segment amongst processes. This member gives the offset from the beginning of the file at which the first byte of the segment resides.
But it looks like offsets from the beginning of segments, not file?- 50 0:
p_vaddr=00 00 40 00 00 00 00 00: initial virtual memory address to load this segment to - 50 8:
p_paddr=00 00 40 00 00 00 00 00: unspecified effect. Intended for systems in which physical addressing matters. TODO example? - 60 0:
p_filesz=d7 00 00 00 00 00 00 00: size that the segment occupies in memory. If smaller thanp_memsz, the OS fills it with zeroes to fit when loading the program. This is how BSS data is implemented to save space on executable files. i368 ABI says onPT_LOAD:The bytes from the file are mapped to the beginning of the memory segment. If the segment’s memory size (p_memsz) is larger than the file size (p_filesz), the ‘‘extra’’ bytes are defined to hold the value 0 and to follow the segment’s initialized area. The file size may not be larger than the memory size.
The second segment (
.data) is analogous. TODO: why use offset 0x0000d8 and address 0x00000000006000d8? Why not just use 0 and 0x00000000006000d8?Then the:section of the
Section to Segment mapping:readelf tells us that:TODO where does this information come from? stackoverflow.com/questions/23018496/section-to-segment-mapping-in-elf-files
Education as a system of indoctrination Updated 2025-07-16
Whenever Ciro Santilli walks in front of a school and sees the tall gates it makes him sad. Maybe 8 year olds need gates. But do we need to protect 15 year olds like that? Students should be going out to see the world, both good and evil not hiding from it! We should instead be guiding them to the world. But instead, we are locking them up in brainwashing centers.
Video "The Purpose of Education by Noam Chomsky (2012)" puts it well, education can be either be:He has spoken about that infinitely, e.g. from when he was thin: www.youtube.com/watch?v=JVqMAlgAnlo
- a brainwashing to make people comply with The Establishment
- a way to get people genuinely interested and help them to reach their life goals
Bibliography:
- www.youtube.com/watch?v=ts7CEFQM2bE How Education Became Indoctrination: Dr Stephen Hicks (2021) Interview by www.youtube.com/c/KnowlandKnows Interesting channel. "Are you sick of woke-washing in education? Free speech distinguishes education from indoctrination" and "I taught at Eton College before I was fired because 'The Patriarchy Paradox' caused offence.".
Edward Snowden Updated 2025-07-16
Edward Snowden in 2013
. Source. From the film Prism, during interview with reporter Glenn Greenwald.Edward Snowden original interview cut by The Guardian (2013)
Source. Edward Witten Updated 2025-07-16
Effect of a change of basis on the matrix of a bilinear form Updated 2025-07-16
If is the change of basis matrix, then the matrix representation of a bilinear form that looked like:then the matrix in the new basis is:Sylvester's law of inertia then tells us that the number of positive, negative and 0 eigenvalues of both of those matrices is the same.
Proof: the value of a given bilinear form cannot change due to a change of basis, since the bilinear form is just a function, and does not depend on the choice of basis. The only thing that change is the matrix representation of the form. Therefore, we must have:and in the new basis:and so since:
Eigendecomposition of a real symmetric matrix Updated 2025-07-16
The general result from eigendecomposition of a matrix:becomes:where is an orthogonal matrix, and therefore has .
Eigenvalue Updated 2025-07-16
Eightfold way (physics) Updated 2025-07-16
Strangeness Minus Three (BBC Horizon 1964)
Source. Basically shows Richard Feynman 15 minutes on a blackboard explaining the experimental basis of the eightfold way really well, while at the same time hyperactively moving all over. The word symmetry gets tossed a few times. E Ink Updated 2025-07-16
Electronic Ink such as that found on Amazon Kindle is the greatest invention ever made by man.
Once E Ink reaches reasonable refresh rates to replace liquid crystal displays, the world will finally be saved.
It would allow Ciro Santilli to spend his entire life in front of a screen rather in the real world without getting tired eyes, and even if it is sunny outside.
Ciro stopped reading non-code non-news a while back though, so the current refresh rates are useless, what a shame.
OMG, this is amazing: getfreewrite.com/
ELF Hello World Tutorial
PT_INTERP Updated 2025-07-16Contains the path to the dynamic loader, i.e.
/lib64/ld-linux-x86-64.so.2 in Ubuntu 18.10. Explained at: stackoverflow.com/questions/8040631/checking-if-a-binary-compiled-with-static/55664341#55664341 Einstein notation Updated 2025-07-16
The Wikipedia page of this article is basically a masterclass why Wikipedia is useless for learning technical subjects. They are not even able to teach such a simple subject properly there!
Bibliography:
- www.maths.cam.ac.uk/postgrad/part-iii/files/misc/index-notation.pdf gives a definition that does not consider upper and lower indexes, it only counts how many times the indices appearTheir definition of the Laplacian is a bit wrong as only one appears in it, they likely meant to have written instead of , related:
Einstein notation for partial derivatives Updated 2025-07-16
The Einstein summation convention works will with partial derivatives and it is widely used in particle physics.
In particular, the divergence and the Laplacian can be succinctly expressed in this notation:
In order to express partial derivatives, we must use what Ciro Santilli calls the "partial index partial derivative notation", which refers to variables with indices such as , , , , and instead of the usual letters , and .
Einstein synchronization Updated 2025-07-16
Elastic collision Updated 2025-07-16
Unlisted articles are being shown, click here to show only listed articles.
