chrxh / alien

ALIEN is a CUDA-powered artificial life simulation program.

Home Page:https://alien-project.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adding a phylogenetic tree?

Gardene-el opened this issue · comments

This is a feature request/suggestionl in order to better visualize and track the mutations.

I suggest that add a phylogenetic tree to show every mutations and their relationship in simulation on the statistics window. Once a mutation happened, it will be recorded into the phylogenetic tree. For the details of phylogenetic tree and it's naming rule, I suggest:

Presume a speices X, any mutation happened on X's offspring, add a branch on X on the phylogenetic tree. Assum it is the nth time of mutation. Name the subspecies of the nth time of mutation of X X-n. Hence for the mth time of the mutation of X-n, name it X-n-m.
For easier use, I suggest that using Base62 numbering system, also allow user to make custom name instead of X-n-m-z... on display.

If it is excessively consuming resources to store the phylogenetic tree, maybe adding a check to decide if adding a new branch. For example set a standard genome for each branch, if the genetic difference between the offspring and the standard genome of this branch exceeds a certain preset standard deviation, then compare if it exceeds other subspecies preset standard deviation then decide if determine it to be a new species or add it to the compared subspecies.

On query aspect, I suggest that user could find a creature's position on phylogenetic tree by itself in simulation, also could highlight all creatures with specific position on phylogenetic tree.

On display aspect, the phylogenetic tree maybe look like this:

    CustomName-qwert123-asda

    X-CustomName-0
     |     |-1
     |-sada
     |-fafs-0-weq-0
               |-1

I suggest that make it able to expand or collapse some of them, like collapse all extincted, collapse all only one generations.

Thanks for the suggestion!
I agree that it would be a great feature. What you have to consider, however, is the extreme amount of data and how manageable the visualization would be. You can already run simulations with 100K individuals for tens of thousands of generations. This results in a huge phylogenetic tree (with possibly millions of entries).
As a user, I would interested in reverse tracking: For example, I have a certain individual and would like to have all the mutations listed that led from the initial state to it.