Author Topic: Virus, DNA hack instead of append  (Read 3419 times)

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Virus, DNA hack instead of append
« on: September 26, 2007, 02:25:06 PM »
Saying in the other thread about slime deprecated by antivirus genes as virus defense, I thought about dropping this idea:

Virus could be inserted anywhere before a cond statement, where they would execute as a normal cond and they would make the next "cond-stop" block to be ignored -as real viruses fool the protein production to produce their own proteins instead. The virus would insert the picked gene with its "cond" turned into "hack". Like:

hack
etc etc =
start
etc etc store
stop

When referring to gene x, hacks and ignored genes would count as one. Using .delgene would both delete the virus and the gene. .mkvirus would pick only the hack, if any. Also, the .delgenes sysvar would be locked to 0 during the hack execution -I actually find that virus "eating" DNA is rather cheap and uninteresting.

To get rid of viruses that went through the slime defense, a bot would run:

x .repair store

which would delete one hack at once from gene x.

Bots could use a sumcheck to detect the hacked genes and repair them, but that means that the virus would be run at least once. Or forever if the virus happened to hack the repair gene.  

Also, hand made bots could come with hacks and repairs to modify its own DNA on special events, or to undo mutations. To make this mutation repair last long, I would add a .duplicate sysvar, that would place a copy of the gene above it, as a hack. If the mutation harms somehow the sumcheck, the bot can peel off the mutated hack, then duplicate again the copy of the gene that was inactive.
« Last Edit: September 26, 2007, 02:26:55 PM by MacadamiaNuts »
Sometimes you win, and sometimes you lose...

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Virus, DNA hack instead of append
« Reply #1 on: September 26, 2007, 11:22:57 PM »
You want to be careful about giving DNA the tools to police itself.  Inevitably they're either overpowered for a virus to take control of, or you have to treat viruses differently from the rest of the code (like you're proposing).

My ideal would be for a bot to spend nrg on slime to prevent viral infections.  Once infected, the DNA would have no way of "cleaning" itself, because inevitably if DNA can clean a virus, then a virus should be able to "clean" the DNA (ie: erase it).  I think the best way to look at DNA is as several independent genes that all influence the behavior of the bot.  When a bot is infected, the virus acts like any other gene, and has no more or less influence on the bot than any other gene.

I think it's the cleanest conceptual way to treat viruses.  The problem when DNA has to clean itself is that the DNA becomes part of the phenotype of the bot.  For hand authored DNA, it means obfuscation.  Things like the current one-gene monsters.  (I have nothing against one gene bots, but the program shouldn't encourage such madness!)  For evolving DNA, it means even more headache trying to figure out what a bot's DNA does.

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Virus, DNA hack instead of append
« Reply #2 on: September 27, 2007, 09:37:53 AM »
Ok. good points, although real life virus are actually RNA instead of DNA so they don't work the same way.

I still would tweak them. Because virus are placed at the end of the code, .delgene gives virtual virus inmunity for bots that check for any appended genes. That's neat if it emerges on an evosim, but not so fun for hand made bots. If the virus was inserted randomly after any 'stop' it would be more expensive to provide full virus inmunity through code.
Sometimes you win, and sometimes you lose...

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Virus, DNA hack instead of append
« Reply #3 on: September 27, 2007, 12:10:08 PM »
I suggest providing a means for a virus to specify a BP sequence to look for in the target bot after which it gets inserted if a matching sequence is found.  The program would choose a single random insertion point from all such sequence segments in the infected genome.  This way, you can get viruses that target specific species or genes only, may not themselves be whole genes, only segments and which are capable of infecting single gene bots without adding new genes.  Such a model may mor eclosely simualte RNA viruses, allowing for the hijack of soem of the functionality of an existing gene.  Bots can mutate their own sequences to defend against such recognizers, like evolving a different protein coat.  Nature is full of such battles and arms races at the genome level.

I shoudl point out that the seperation between geneotype and phenotype is not a crisp one, in DB or in nature.  An organism's genotype has physical representation, is accessable, manipulatable, corruptable, etc.   I personally have no philosophical objection to providing the means for organisms to interact, attack and defend on the DNA sequence battlefront.

I think I also favor the addition of commands which allow for sequence policing and correcting e.g. computing checksums and BP sequence copy and deletion primitives.  One can imagine this leading to bots taking reproduction into their own hands (so to speak) by evolving genome copying machinery with error correction.
Many beers....

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Virus, DNA hack instead of append
« Reply #4 on: September 27, 2007, 02:57:00 PM »
Quote from: MacadamiaNuts
Ok. good points, although real life virus are actually RNA instead of DNA so they don't work the same way.

I am pretty sure there are RNA and DNA types of virus, and RNA often using a smart mechanisim that is copying the RNA in the real DNA. The HIV-virus for example uses it.
RNA and DNA virus have alot of things together in the way they actually work, there are just some subtle different's between them.

Quote
When referring to gene x, hacks and ignored genes would count as one. Using .delgene would both delete the virus and the gene. .mkvirus would pick only the hack, if any. Also, the .delgenes sysvar would be locked to 0 during the hack execution -I actually find that virus "eating" DNA is rather cheap and uninteresting.
This sounds all together rather complicated, for the fact of there are more difficult defence posibilities needed if I understand it right.
So what's wrong with the virus there exist as of this moment.

Yeah, eating a bot's DNA is cheap. Altrough I am having a bot doing it. Just make the bot an empty hulse shooting virus . It's maybe just a bit too easy destroying a bot with it, also I have'nt seen any bot using DNA-deletion genes that was top of F1, so is it really overpowered.
Oh my god, who the hell cares.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Virus, DNA hack instead of append
« Reply #5 on: September 27, 2007, 07:02:07 PM »
Real viruses come in all sorts of flavours.  Some are RNA based, and just inject themselves into the cytoplasm.  Some are DNA based, and infect the host's actual DNA, injecting itself into the strand.  Most of the repetitive, non coding portions of our own genome are probably ancient viruses that got deactivated through some means.

We need to carefully balance the competing needs of viruses-as-evolutionary-partners and viruses-as-weapons for the program itself.  Viruses are very useful in zerobot sims.  Some of the most impressive developments have been from propogating viruses.  Likewise some of the most interesting weapons are viruses, since generally you want a virus to gimp an enemy instead of outright kill them.

As I see it, it's imperitive for viruses to become part of the bot's primary DNA in some way.  It's also important for viruses to have access to everything that regular DNA has access to.  Both of these are important for horizontal gene transfer.  Don't think of viruses as some short of one-shot-kill weapon that DNA needs to protect itself againt.  Viruses are bits of cousin DNA without a host to propogate it.  They're like uninvited relatives.  No more or less legitimate than you are, just annoying to you.

Quote
I still would tweak them. Because virus are placed at the end of the code,

Viruses are placed after a random gene.

Quote
.delgene gives virtual virus inmunity for bots that check for any appended genes. That's neat if it emerges on an evosim, but not so fun for hand made bots.

delgene only gives immunity to bots who can immediately determine where the virus was placed, ie: one gene bots.  And even then, only for a single cycle, with some caveats.

Quote
If the virus was inserted randomly after any 'stop' it would be more expensive to provide full virus inmunity through code.

It's possible to code a normal bot (not one gened or anything) without any stops.  Modern DB DNA is extremely flexible in format.  A single cond statement can control many different start/else blocks.  This has problems in other places too.  Most of the time, parts of the program can't agree on where one gene starts or another ends.

This also has issues with viruses and their cond statements (or lack thereof).

Quote
...Such a model may mor eclosely simualte RNA viruses, allowing for the hijack of soem of the functionality of an existing gene. Bots can mutate their own sequences to defend against such recognizers, like evolving a different protein coat. Nature is full of such battles and arms races at the genome level.

Same as my other post, I don't like making the genome part of the phenotype.  This is one of the few things I have strong negative feelings toward.

Quote
I shoudl point out that the seperation between geneotype and phenotype is not a crisp one, in DB or in nature. An organism's genotype has physical representation, is accessable, manipulatable, corruptable, etc.

In nature, there's a strong disconnect between the blueprint and the protein it creates.  DNA->RNA->Protein.  Why does such a mechanism exist except to seperate the core "logic" an organism uses from the implementation of that logic.

For Alife sims, I think this seperation is important because if it's not there, a genome will tend to become extremely brittle and resistant to change, and simplify and streamline itself at the expense of complex behavior (so called retrograde-evolution)

Quote
I think I also favor the addition of commands which allow for sequence policing and correcting e.g. computing checksums and BP sequence copy and deletion primitives. One can imagine this leading to bots taking reproduction into their own hands (so to speak) by evolving genome copying machinery with error correction.

I'm not against exploring analogues for DNA repair mechanisms, but I'm strongly against giving bots a clear cut hash test of its DNA.  Real DNA is billions of base pairs.  It's impossible for the whole genome to know when part of it has been changed.

Take, for example, diploidness and sex.  One possible origin is DNA repair.  Maybe two cells will join briefly to check the differences in their DNA for errors, and this practice eventually gave rise to what sex is (think sex on the fungal or microscopic level, not mammalian sex).

DNA repair is wonderfully, beautifully, hacked together and error prone.  The cell has no way to magically detect foreign DNA and eject it.  Even relatively routine repairs cause mutations and other changes to the DNA.  Excising a virus that's inserted itself into the genome is flatly improbable.

DNA is the one place where I want to stick as closely to nature as at all possible.  The form of life is so varied, but the form of DNA is not.  DNA must be doing something right, carefully balancing the competing needs of evolution and conservatism.

This is why my work on the next generational DNA language is so important.  Viruses-as-codules or viruses-as-chromosomes allow viruses to infect a cell, alter its workings on par with the rest of the genome, yet without causing interuption to the regular work of the rest of the genome.  Viruses can be seen as weapons or horizontal gene transfer depending only on your point of view.

In the short term, the most "fair" way to insert DNA would be randomly at any point.  Let viruses easily overpower whatever local DNA they get inserted inside.  Let there be no way for a virus to excise this virus.  Strengthen the primary viral defense: slime.  Get rid of delgene, which can have no useful purpose in such a system, and is grossly overpowered as a weapon.  You free DNA from the constrictions of making itself virus proof without overpowering viruses.

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Virus, DNA hack instead of append
« Reply #6 on: September 28, 2007, 11:29:25 AM »
Could we make it so that some viruses can exist on a phenotype level only? They'd basically work and act the same, but wouldn't be coppied when the bot reproduces.  These could be faster to spread, but bots offspring would have some guarante of a virus free geneome. The Retroviruses would be slower at spreading, but be guaranteed to continue if their host reproduces.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Virus, DNA hack instead of append
« Reply #7 on: September 28, 2007, 11:54:46 PM »
Quote from: Endy
Could we make it so that some viruses can exist on a phenotype level only? They'd basically work and act the same, but wouldn't be coppied when the bot reproduces.  These could be faster to spread, but bots offspring would have some guarante of a virus free geneome. The Retroviruses would be slower at spreading, but be guaranteed to continue if their host reproduces.

That seems reasonable.  I would have the virus randomly get put into the parent or child, though, depending on the fractional reproduction amount.  Ie: 99 .repro store gives you 99% chance to pass the virus to your kid.  That way bots can't reproduce as an antiviral method.