Code center > Bugs and fixes
2.43u delgene defect? RESOLVED 2.43w
Numsgil:
To put it more succinctly: a gene is all the stuff between a cond statement and the next cond statement (with the beginning of the genome having an implicit cond statement)? Ie: junk included?
Consider this alternative:
A gene is anything between a start or else and another flow command. If there's a cond block before the gene, the gene's boundaries are increased to include that cond block.
Thus the DNA:
cond
start
start
stop
is two genes:
cond
start
(implicit stop)
and:
start
stop
The benefit here is that it neatly transitions into a time when cond blocks don't exist while maintaining backwards compatibility. Remember that the DNA block:
cond
start
start
stop
cond
start
stop
May have the boolean stack entirely modified by the first start statement or the second. Meaning that the cond block is just a redundant aspect of the first gene, but does not necessarily have anything more to do with the second gene than the second gene does with the third gene.
EricL:
--- Quote from: Numsgil ---Thus the DNA:
cond
start
start
stop
is two genes:
cond
start
(implicit stop)
and:
start
stop
--- End quote ---
I think it should be one gene. I disagree with you because it violates my rule that boolean logic (which I think of as the gene promoter) should not carry over from one gene to the next. I.e. that is, by definition, a gene boundary (be it explicit via a stop or implicit via a cond encounterred in an already coding region) implies clearing of the boolean stack. By defining genes in this way, it makes them more self-contained, more able to be transported in tact with their promoters.
A start does not clear the boolean stack (like an implicit stop-cond or an explicit stop does) nor should it IMHO imply a break in a coding sequence if encounterred within a coding sequence. It's a start, not a stop-start. A start should imply the beginning of a new gene only in the case where the DNA preceeding it is non-coding and the boolean stack is clear, having been previously terminated by a stop. If the DNA preceeding it is coding, be it a cond section or a gene body, it means "and up the boolean stack". So, an embedded start does having meaning. It operates on the boolena stack for the gene. If we don't do it this way, then we will need to invent a new operator "andupstack"
I beleive this methodology of not treating embdedded starts as implicit gene terminators is in keeping with the way biological gene sequences are defined in genbank. Embedded start codons are generally ignored by DNA transcription biology and as such, sequneces in genback with embedded start codons are generally considerred single genes. In short, it takes a stop codon to terminate a gene.
--- Quote from: Numsgil ---The benefit here is that it neatly transitions into a time when cond blocks don't exist while maintaining backwards compatibility.
--- End quote ---
So does my way. If we allow stores in cond regions, then cond and start become equivalent except for a cond's implicit stop. If anything, we should do away with all implicit stops and change it so that a cond encounterred in an already coding sequence does not imply a stop. But doing so would imply that conds would not clear the boolean stack and prior boolean logic would thus implact the evalutation of the boolean statements in the cond section, which would break backward compatability.
--- Quote from: Numsgil ---Remember that the DNA block:
cond
start
start
stop
cond
start
stop
May have the boolean stack entirely modified by the first start statement or the second. Meaning that the cond block is just a redundant aspect of the first gene, but does not necessarily have anything more to do with the second gene than the second gene does with the third gene.
--- End quote ---
So, the way it currently works and the way I have it codedup currently, that sequnce is two genes and boolean logic from the first gene does not influence the second.
cond
start
start
stop
cond
start
stop
Numsgil:
In the Darwinbots universe, gene boundaries are artificial abstractions that matter only for deleting genes, creating viruses, and human debugging. Human debugging is trivial because we can always modify those sorts of controls anyway we want. Deleting genes is trivial because all it has to do is mirror the way viruses are made, since that's delgene's primary reason for existance.
So it all boils down to viruses. What makes the most sense from a virus's perspective? Consider this genome:
cond
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
start
It's a bot with a single cond and 20 start blocks. A virus gets inserted in to this genome that came from a bot with this DNA:
start
*.thisgene .mkvirus store
1000 .vshoot store
With your system, this virus could only get inserted at the beginning or the end of that first genome. Let's say it gets inserted at the end. Then the virus fires again and tries to make itself in to a virus. What does the resulting virus look like?
cond
start start start start
start start start start
start start start start
start start start start
start start start start
start
*.thisgene .mkvirus store
1000 .vshoot store
If you don't look at that and feel that something's wrong, I think there's a problem That virus should be able to get inserted anywhere between two start blocks, otherwise suddenly cond is a super antivirus magic command. And that virus should be able to replicate itself, and only itself, barring mutations.
EricL:
Okay, I'll yield. A start or an else will always indicate the beginning of a new gene with the execption of the first one following a cond. Thus:
cond
start
stop
is one gene.
cond
else
stop
is also one gene.
cond
start
else
stop
is two genes
start
start
start
is three genes.
It will be this way in 2.43w.
Peter:
Is gues there has something gone wrong with the change, after reproduction bots seem to have no genes.
Atleast that is what I see after ''number of genes. And the sysvar genes also gives zero.
In the sim posted with this you can see it. If you manually reproduce a bot you can see the newborn gives a *.genes of zero.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version