Besides
sh_type == SHT_RELA
, there also exists SHT_REL
, which would have section name .text.rel
(not present in this object file).Those represent the same
struct
, but without the addend, e.g.:typedef struct {
Elf64_Addr r_offset;
Elf64_Xword r_info;
} Elf64_Rela;
The ELF standard says that in many cases the both can be used, and it is just a matter of convenience.
The video from futureai.guru/technologies/brian-simulator-ii-open-source-agi-toolkit/ shows a demo of the possibly non open source version. They have a GUI neuron viewer and editor, which is kind of cool.
Not having a manipulator claw is a major issue with this one.
But they also have a co-simulation focus, which is a bit of a win.
Before:
7 my-feature HEAD
|
6
|
5 master
|
4
|
3
|
2
|
1
Oh, commit 6 was crap:
git rebase -i HEAD~2
Mark
6
to be modified.After:Better now, ready to push.
7 my-feature HEAD
|
6v2
|
5 master
|
4
|
3
|
2
|
1
Note: history changes change all commits SHAs. All parents are considereEven time is considered. So is commit message/author. And obviously file contents. So now commit "7" will actually have a different SHA.
The cheapest and most resilient way to publish text content humanity has achieved so far.
Some tests:
- github.com/cirosantilli/jekyll-cheat: cirosantilli.com/jekyll-cheat
- Test with a
.nojekyll
file. - github.com/cirosantilli/test-gh-pages-min: cirosantilli.com/test-gh-pages-min. Minimal version of the above.
Transactions such as tx fe37c7eee73be5fda91068dbe0eb74a68495a3fc7185712b8417032db7fc9c5e (2015-01-15) starting withare Base64 encoded. Running them through we might as well give up. That string appears 26 times in our data currently, between 6c091e6152b83ec0df8d0d87c7c5f3da72a3328ed3a5d91768ba0ab899c16b9d (2014-09-28) and 84189c82995db355e92e37f8cfe8a9274e9a5d157f1f1658067672e707469a09 (2019-07-06)
U2FsdGVkX1/4iSjLxQ5epo8eRSCOQLGgAsn1CucGii27k8ZyC7Jz6wxhYcevVmxi
6Q4ZFN04WDN0UhKqYardgQf26oeBMURupduDd0ZozxlgMrBkFOCaARqU7RABVWDO
/ruPUcOY0VC8p4lrMNqSdqvN7y6OWwOSH3c0duumZfFNZs9+BbtKCxtaqR5+RkUI
base64 -d
leads to starting output bytes Salted__
which as mentioned at security.stackexchange.com/questions/124312/decrypting-binary-code-from-a-base64-string is OpenSSL encrypted data. So hwerever we see the start:U2FsdGVkX1/
The following via cryptograffiti.info get marked by
file
as "openssl enc'd data with salted password, Base64 encoded":- ad3d8a0a5d57114b1780341cb5104284f029bb01b1b3558f7c7b9ce51eb67e18
- 1cd0c631f444d664601468f644b70e0166019a54d8678de51310139b6c8b2bd7
- ccc3fb2c9cb1c640b76645a8658693066fd63433ab17c318691ad5bd62601c0e
- e6eb0cb8268a9b3d012d2957b32d4b28ccc3317593f54f4bfe4b387326588bd2
- c40e322b198b715accc4a67fad244ed131b8cef0785070e06d10d56c4ab389f2
- 37a261ac6dbf59e3c9673a22028bcdbdd08926a9d32134ab8fba0897f6dcd196
- f1aa516fe00ec2156f16fcb9da422f6cbcd141e8e58c895d8bc37b4ad2fd714e
- 7faf29c7dd7d9cc6d099c262f7ec7edd7fc768276482ad66ceefdd814f1d38ab
- 69cac244051661cc0b8b08905af5ab312a1282b68c932e5d1e3c46ad47ff0f7a
- 1773c39f844951b7169dc34aa0c72aa7b43cae6a103ed1223527ef0f4deec2a9
- b1d4bf3fc46e63c995ad4299f3576340077bc810dfa5c502d1c068460d54bc98
- a52625837741902e1dd24de3dbd3b948d6e0907ad3fc957c13cdf53fa2c3b9ac
- 4ca742813eaccef009e24e92150dda06540c2ac81782f1569b1ebb3179a413d2
- 6c3bab5fc6e6352c62a16ab0f47394845aa41a2c0b25e1a1073a4aeac150e03d
- 20b8feef3d293a0dd79e3c169fceb1217465502a523acbab903a7eb0cd183709
- b7863215b99567bc9e71155b13f3c5f26d15eac52493ee2e834129460ffd2aec
- 2c8961a64bb11d5855790085f51007273467f7ef862137215c9f1d958dcb6c57
- bed542957bdd8f644a4fcd671a8c66a5cc5d6168f9fa60d37177703e77558eee
- 3e45af9d828754d5a38c86636a070610f6e828482718c4a597d272d41a3e31fa
- a13af4817e85cacce3cfb445001e2fb2f56cdc30f78348fd2580bf8f4c84dc55
- 87a10f6bc65a08067b2544e46be00d4af62c0cfed3ae0b165d5eedaff09d81da
- ef55826befabbe9dcd44d87fc385d600dd4c4cba3346cde53d8c591960e9b4dc
- 5d30f63131dcf2b4d001b4ab530e18cc6ff8ffd16cade055ff4587a59b84e420
- 8a75514829b6e30b9fea434eef77b1589ff3f4bdfc0056bd087efbfb8314eb59
- e2be1062c9d43cc6ed43de6f7a40c728d2d92ed0325abde24ff3300cf3ae136a
- 8fe5c2679237e36c74fda04bb083f732c4afdd06af81121b1d7b4d5bd677135f
- 7f099f094d8d51105d8655253d45ebddf1c88b9e138c302a65d2878a237e620c
- 0fc4b3a305e2a7faa2e7d9c2f23d23d626e9e75f1f2a37133f283334b314645b
- 933b321e7b7144ed5e4e1750f944be9ed10293633d9b288bf05febdeb9dc40a3
- 6215486bc024dea7991b142e50e111c4063e1db4a867514612b8e794b8ef5635
- fc0613e11269962d97373b10e310f451fb76c7bb477ba1afb45773c44851e9ed
- ab51d2c037b4625394c68706da83c26bad751018d2a3e377a51988bd8ee18647
- 7ca9b337172f4feff67a0ecbfbd76798265e08c6ebe989a319883c695d756247
- 0f0b477e456dcf286d7262497bcd5b3b6a3ce89f81761c2f59ff702539ab6183
- a320152fd59426c8853dd781db9d682f89755953b39a653f9e9c9628a5fce7fb
- e96221da774fb52d24dda1b83b14c99085eb4befac64691722c56eb750562d68
- a7a5ca68dd340dd42bd5c91e0febe68e5fd2fb993da2992661183eaafe8ad89e
- 64e9d95e2333cfd155506199c8d926649e63a98dbc83c1221b8dd1580937b942
blockchain.news/news/mysterious-bitcoin-inscriptions-a-puzzle-in-raw-binary-data mentions a huge 9 MB Ordinal ruleset inscription that no-one managed to decode, and so people suspect is encrypted data. Seems to be split across transactions, starting at fed7de7fb75a3fe3c1acbbd8e19a4c540fb368474c8834e4ddb1d5bab764a767
Starting at tx cbbaa0a64924fe1d6ace3352f23242aa0028d4e0ff6ae8ed615244d66079cfb1 (2011-08-05), Catholic Bitcoin developer Luke Dashjr started to inscribe prayers in the miner messages of his mining pool "Eligius pool", usually one verse per message.
These are some of the earliest inscriptions in the blockchain, and therefore extremelly visible.
Although the prayer verses appear contiguous in ASCII dumps, Eligius was not actually mining every block: it is just that in those early days, miners still hadn't started adding advertisement messages to every block, so only Eligius shows up and appears contiguous.
At some point, opponents noticed these messages, and started adding atheist mockery graffiti replies, which appear interspersed in ASCII dumps with the prayer.
The first prayer is the Latin version of the Divine Praises, a Catholic prayer composed in 1797 in Italian by Luigi Felici for the purpose of making reparation after saying or hearing sacrilege or blasphemy. Luke claims he was referring to anything in particular that came prior in the blockchain: twitter.com/LukeDashjr/status/1749182637569122434. There arent many earlier inscriptions at all to refer to in any case! The prayer and correspondong interrupts (in transaction outputs, not by other miners) ordered by block are:
- 139690 (2011-08-05) prayer: "Eligius/Benedictus Deus. Benedictum Nomen Sanctum eius."
- 139717 prayer: "Eligius/Benedictus Deus. Benedictum Nomen Sanctum eius.'
- 139758 interruption:
***************************************************
. This is not a Coinbase message: www.blockchain.com/explorer/transactions/btc/23befff6eea3dded0e34574af65c266c9398e7d7d9d07022bf1cd526c5cdbc94. This Bitcoin input script appears to spend a standard P2PKH output, but it first adds an extra value to the stack which contains the***
. - 139792 prayer: "Benedictus Iesus Christus, verus Deus et verus homo.'
- 139831 prayer: "Benedictum Nomen Iesu.'
- 139838 (2011-08-06) interruption: "I LIKE TURTLES" (tx 78eb16507b3d3df615e3b474e853db4667f4b11954ec6d918b1ded0fca7ad25a)
- 138898 prayer: "Benedictum Cor eius sacratissimum."
- 139904 prayer: "Benedictus Sanguis eius pretiosissimus."
- 139921 prayer: "Benedictus Iesus in sanctissimo altaris Sacramento."
- 139942 prayer: "Benedictus Sanctus Spiritus, Paraclitus."
- 139954 interrupion: "aC-C-C-COMBO BREAKER" (tx 138c024a76df99ecafd2236d5429cf574b7778a3c6508bd83f116c832f3c6980)
- 139960 prayer: "Benedictus Sanctus Spiritus, Paraclitus."
- 139977 prayer: "Benedicta excelsa Mater Dei, Maria sanctissima."
- 139990 (2011-08-06) prayer: "Benedicta sancta eius et immaculata Conceptio."
Then comes:and various others + output message interruptions.
- 140181 Latin Trinitarian formula
In nomine Patris et Filii et Spiritus Sancti. Amen.
- Act of Contrition
- Act of Hope
Then at last come the first miner message interruptions. Luke explained on Twitter[ref] that they were also made by Eligius pool, as there was a system in which contributors besides Luke could submit their own strings:followed by more prayers and interruptions such as tx ec92d245822fa1ff862f3314b9102f36fe1eb8bc055865674c75323540aedef6:
- 142547: (2011-08-25) tx 8e1e44a48b5e79636675d1476f8e4add075bbeb7f49e00ec743eed56f17feaaa A yandere game is starting in 60 seconds! Please type "]yandere" to join. Yandere Simulator comes to mind, but it can't be because that was pitched 2014.
- 142550: "A yandere game is starting in 60 seconds! Please type "]yandere" to join."
- 142573: (2011-08-25) "Militant atheists, bit.ly/naNhG2 -- happy now?". A Rickrolling link. Perhaps one of the fist.
- 142596: (2011-08-25) "<cjdelisle> ran out of prayers?! That explains the price drop.". Possibly quoting this dude on som twitter.com/cjdelisle Bitcoin IRC channel givesn the
<USERNAME>
format? - 142640: "an de ti go su by ra me ni ko hu vy la po fy ton": Tonal system numerals. Interesting.
The last Luke prayer appears to be on block 143822 (2011-09-03)
... the Lord of the harvest, that he send forth labourers into his harvest.
Then there is a bit of radio silence, until finally Slush Pool started self advertising for the first time on block 163970 (2012-01-26):They had been mining for a long time by then (December 2010 according to en.bitcoin.it/wiki/Slush_Pool), but this is when they decided to add a human readable ASCII message as well.
/P2SH/BIP16/slush/R,
From then on, miner messages would be forever polluted with ads, and Luke's multi-miner message feat would never again be reproduced.
The non-obvious interruptions are all well known memes/anime references:
- "I like turtles": knowyourmeme.com/memes/i-like-turtles
- Combo breaker: knowyourmeme.com/memes/combo-breaker
- "Yukkuri Shiteitte ne": knowyourmeme.com/memes/yukkuri-shiteitte-ne
- "kLhLUKE-JR IS A Pedophile! Oh, and God isn't real, sucka. Stop polluting the blockchain with your nonsense.", tx 9740e7d646f5278603c04706a366716e5e87212c57395e0d24761c0ae784b2c6, block 141460
- "Help me, ERINNNNNN!!": touhou.fandom.com/wiki/Lyrics:_Help_me,_ERINNNNNN!!
- "EASY MODO? How lame!F?": knowyourmeme.com/memes/kimoi-girls
Bibliography:
- 2011-08-19 bitcointalk.org/index.php?topic=38007.0 "Eligius miners aware of prayers in block headers?" from on bitcointalk.org by user "Graet" who quotes prior discussion from a Bitcoin IRC channel:<luke-jr> cosurgi: by design, it contains "random" data-- I've just been setting some of that "random" data to prayers<Graet> mm interesting luke-jr i understand you are strong in your faith but you dont think putting prayers in might alienate some ppl - after all btc is multidenominational<luke-jr> Graet: Catholics do not believe in freedom of religion.<Graet> and you make your non catholic miners aware of this?
- 2011-11-2 bitcointalk.org/index.php?topic=52979.0 "Mysterious transaction spotted in blockchain!"
At twitter.com/togelius/status/1328404390114435072 called out on DeepMind Lab2D for not giving them credit on prior work!As seen from web.archive.org/web/20220331022932/http://gvgai.net/ though, DeepMind sponsored them at some point.
This very much looks like like GVGAI which was first released in 2014, been used in dozens (maybe hundreds) of papers, and for which one of the original developers was Tom Schaul at DeepMind...
From this we see that there is a convention of naming promoters as protein name + p, e.g. the first gene in E. Coli K-12 MG1655 promoter thrLp encodes protein
thrL
.It is also possible to add numbers after the TODO why 6 and 7? There don't appear to be 1, 2, etc.
p
, e.g. at biocyc.org/ECOLI/NEW-IMAGE?type=OPERON&object=PM0-45989 we see that the protein zur
has two promoters:zurp6
zurp7
To modify the nutrients as a function of time, with To select a time series we can use something like:As mentioned in
python runscripts/manual/runSim.py --variant nutrientTimeSeries 25 25
python runscripts/manual/runSim.py --help
, nutrientTimeSeries
is one of the choices from github.com/CovertLab/WholeCellEcoliRelease/blob/7e4cc9e57de76752df0f4e32eca95fb653ea64e4/models/ecoli/sim/variants/__init__.py#L5725 25
means to start from index 25 and also end at 25, so running just one simulation. 25 27
would run 25 then 26 and then 27 for example.The timeseries with index 25 is so we understand that it starts with extra amino acids in the medium, which benefit the cell, and half way through those are removed at time 1200s = 20 minutes. We would therefore expect the cell to start expressing amino acid production genes exactly at that point.
reconstruction/ecoli/flat/condition/timeseries/000025_cut_aa.tsv
and contains"time (units.s)" "nutrients"
0 "minimal_plus_amino_acids"
1200 "minimal"
nutrients
likely means condition
in that file however, see bug report with 1 1
failing: github.com/CovertLab/WholeCellEcoliRelease/issues/24When we do this the simulation ends in:so we see that the doubling time was faster than the one with minimal conditions of
Simulation finished:
- Length: 0:34:23
- Runtime: 0:08:03
0:42:49
, which makes sense, since during the first 20 minutes the cell had extra amino acid nutrients at its disposal.The output directory now contains simulation output data under
out/manual/nutrientTimeSeries_000025/
. Let's run analysis and plots for that:python runscripts/manual/analysisVariant.py &&
python runscripts/manual/analysisCohort.py --variant 25 &&
python runscripts/manual/analysisMultigen.py --variant 25 &&
python runscripts/manual/analysisSingle.py --variant 25
We can now compare the outputs of this run to the default
wildtype_000000
run from Section "Install and first run".out/manual/plotOut/svg_plots/massFractionSummary.svg
: because we now have two variants in the sameout/
folder,wildtype_000000
andnutrientTimeSeries_000025
, we now see a side by side comparision of both on the same graph!The run variant where we started with amino acids initially grows faster as expected, because the cell didn't have to make it's own amino acids, so growth is a bit more efficient.Then, at 20 minutes, which is about 0.3 hours, we see that the cell starts growing a bit less fast as the slope of the curve decreases a bit, because we removed that free amino acid supply.
The following plots from under
out/manual/wildtype_000000/000000/{generation_000000,nutrientTimeSeries_000025}/000000/plotOut/svg_plots
have been manually joined side-by-side with:for f in out/manual/wildtype_000000/000000/generation_000000/000000/plotOut/svg_plots/*; do
echo $f
svg_stack.py \
--direction h \
out/manual/wildtype_000000/000000/generation_000000/000000/plotOut/svg_plots/$(basename $f) \
out/manual/nutrientTimeSeries_000025/000000/generation_000000/000000/plotOut/svg_plots/$(basename $f) \
> tmp/$(basename $f)
done
reconstruction/ecoli/flat/condition/nutrient/minimal.tsv
contains the nutrients in a minimal environment in which the cell survives:If we compare that to"molecule id" "lower bound (units.mmol / units.g / units.h)" "upper bound (units.mmol / units.g / units.h)" "ADP[c]" 3.15 3.15 "PI[c]" 3.15 3.15 "PROTON[c]" 3.15 3.15 "GLC[p]" NaN 20 "OXYGEN-MOLECULE[p]" NaN NaN "AMMONIUM[c]" NaN NaN "PI[p]" NaN NaN "K+[p]" NaN NaN "SULFATE[p]" NaN NaN "FE+2[p]" NaN NaN "CA+2[p]" NaN NaN "CL-[p]" NaN NaN "CO+2[p]" NaN NaN "MG+2[p]" NaN NaN "MN+2[p]" NaN NaN "NI+2[p]" NaN NaN "ZN+2[p]" NaN NaN "WATER[p]" NaN NaN "CARBON-DIOXIDE[p]" NaN NaN "CPD0-1958[p]" NaN NaN "L-SELENOCYSTEINE[c]" NaN NaN "GLC-D-LACTONE[c]" NaN NaN "CYTOSINE[c]" NaN NaN
reconstruction/ecoli/flat/condition/nutrient/minimal_plus_amino_acids.tsv
, we see that it adds the 20 amino acids on top of the minimal condition:so we guess that"L-ALPHA-ALANINE[p]" NaN NaN "ARG[p]" NaN NaN "ASN[p]" NaN NaN "L-ASPARTATE[p]" NaN NaN "CYS[p]" NaN NaN "GLT[p]" NaN NaN "GLN[p]" NaN NaN "GLY[p]" NaN NaN "HIS[p]" NaN NaN "ILE[p]" NaN NaN "LEU[p]" NaN NaN "LYS[p]" NaN NaN "MET[p]" NaN NaN "PHE[p]" NaN NaN "PRO[p]" NaN NaN "SER[p]" NaN NaN "THR[p]" NaN NaN "TRP[p]" NaN NaN "TYR[p]" NaN NaN "L-SELENOCYSTEINE[c]" NaN NaN "VAL[p]" NaN NaN
NaN
in theupper mound
likely means infinite.We can try to understand the less obvious ones:ADP
: TODOPI
: TODOPROTON[c]
: presumably a measure of pHGLC[p]
: glucose, this can be seen by comparingminimal.tsv
withminimal_no_glucose.tsv
AMMONIUM
: ammonium. This appears to be the primary source of nitrogen atoms for producing amino acids.CYTOSINE[c]
: hmmm, why is external cytosine needed? Weird.
- reconstruction/ecoli/flat/reconstruction/ecoli/flat/condition/timeseries/000000_basal.tsv
reconstruction/ecoli/flat/reconstruction/ecoli/flat/condition/timeseries/` contains sequences of conditions for each time. For example: *
contains:
"time (units.s)" "nutrients" 0 "minimal"
which means just using
reconstruction/ecoli/flat/condition/nutrient/minimal.tsvuntil infinity. That is the default one used by
runSim.py, as can be seen from
./out/manual/wildtype_000000/000000/generation_000000/000000/simOut/Environment/attributes/nutrientTimeSeriesLabelwhich contains just
000000_basal. *
reconstruction/ecoli/flat/reconstruction/ecoli/flat/condition/timeseries/000001_cut_glucose.tsv
is more interesting and contains:so we see that this will shift the conditions half-way to a condition that will eventually kill the bacteria because it will run out of glucose and thus energy!"time (units.s)" "nutrients" 0 "minimal" 1200 "minimal_no_glucose"
Timeseries can be selected with--variant nutrientTimeSeries X Y
, see also: run variants.We can use that variant with:VARIANT="condition" FIRST_VARIANT_INDEX=1 LAST_VARIANT_INDEX=1 python runscripts/manual/runSim.py
reconstruction/ecoli/flat/condition/condition_defs.tsv
contains lines of form:"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"]
condition
refers to entries inreconstruction/ecoli/flat/condition/condition_defs.tsv
nutrients
refers to entries underreconstruction/ecoli/flat/condition/nutrient/
, e.g.reconstruction/ecoli/flat/condition/nutrient/minimal.tsv
orreconstruction/ecoli/flat/condition/nutrient/minimal_plus_amino_acids.tsv
genotype perturbations
: there aren't any in the file, but this suggests that genotype modifications can also be incorporated heredoubling time
: TODO experimental data? Because this should be a simulation output, right? Or do they cheat and fix doubling by time?active TFs
: this suggests that they are cheating transcription factors here, as those would ideally be functions of other more basic inputs
In index 0,
SHT_NULL
is mandatory. Are there any other uses for it: stackoverflow.com/questions/26812142/what-is-the-use-of-the-sht-null-section-in-elf ?The heart/main innovation of GitHub!
CLI hello world:
gnuplot -p -e 'p sin(x)'
There are unlisted articles, also show them or only show them.