Skip to content

Some ideas about Artificial Life, Creatures (game series) and Neural Networks. (Java, Latex, Perl...)

License

Notifications You must be signed in to change notification settings

gabywald/BioSilico

Repository files navigation

BioSilico

Some ideas about Artificial Life, Creatures (game series) and Neural Networks. Rare review to make this working with Maven / Java 8 / in a GitHub Repository ! (i.e. some file reading in relative path, readability, organisation of ideas).

Probably out-of-date for some reasons (but many ideas inside), codes from 2008-2012 (and before then) ; ideas I didn't continue for times spent reasons and I wish to continue (year 2020).

Tests and learning on coding / programming (Java, Perl, I did some HyperTalk / HyperCard before that long ago) ; some studies on biochemistry and video games (Sim City, Sim Earth, Sim Life, Myst, Marathon, and the first Creature game) then bioinformatics. Find some old code here, and reviewed so far.

Some parts where done in Java 1.4 (before the Generics of Java 1.5) ! Some reviews for generics and some other for stream (Java 8 !). Adding some unit tests and more review ! (these were done in June and July 2020, and some after that).

More review were also done to get an "AntHill Example" (Ants and Plant in a small environment) in July to September 2020. [note at September 1st, 2020] On this part and topic, more developments and tests done from September 2021 to [February 2022].

NOTE For Dev Configuration

  • Eclipse 2020
  • Java 8
  • Maven 3

OS used : Ubuntu 20.04 For elements in python, version used is 3.8 For elements in Perl, version used is 5.30.0

Things to Explore

For this Project or others :

Indication for internal readings

See document present in "/biosilico-biosilico/src/main/resources/biosilico/docs/redaction/", there are some notes (mostly in french, some documentation about Creatures in english).

Licence : "Libre" / Free

GNU General Public Licence V3 (GPL3)

To review for BioInformatics

See also 'biosilico-bioframeworks'

Specific maven module for some example and frameworks and tools used in BioInformartics

FAIR Principles "Findable, Accessible, Interoperable, Reusable"

This part in French, corresponding to Les principes FAIR : Findable, Accessible, Interoperable, Reusable, linked to "The FAIR Guiding Principles for scientific data management and stewardship".

On vous explique Les principes FAIR : Findable, Accessible, Interoperable, Reusable 5 octobre 2020 CeRIS - Institut Pasteur

Les principes FAIR (Findable, Accessible, Interoperable, Reusable) correspondent à des lignes directrices dont l’objectif premier est d’améliorer la réutilisation des données de la recherche. Ils ont été publiés en 2016 dans l’article The FAIR Guiding Principles for scientific data management and stewardship.

À bien garder en tête : des données peuvent être « FAIR » sans être librement accessibles. Suivre les principes FAIR permet de s’assurer que ses données sont réutilisables, qu’elles soient partagées ou non.

À chaque lettre du mot FAIR sont liées des bonnes pratiques de gestion des données :

Findable / Facile à trouver :

  • Déposer les données dans un entrepôt
  • Attribuer un identifiant unique et pérenne aux données
  • Décrire les données par des métadonnées riches

Accessible :

  • Définir les conditions d’accès aux données
  • Si possible, rendre les données accessibles librement
  • Si les données doivent rester en accès restreint, rendre accessibles les métadonnées pour signaler l’existence des données

Interopérable :

  • Privilégier des formats ouverts ou largement utilisés
  • Mettre à disposition le code source du logiciel nécessaire pour lire, traiter, analyser les données s’il a été développé en interne
  • Privilégier les standards de métadonnées et les vocabulaires standards
  • Si possible, indiquer des liens vers d’autres ressources (autres données, publication…)

Reusable / Réutilisable :

  • Associer une licence de diffusion aux jeux de données
  • Associer de la documentation pour décrire les données de façon détaillée, les contextualiser, les rendre compréhensibles…

Les principes FAIR peuvent également s’appliquer aux logiciels de recherche, en les reformulant et en les adaptant. C’est ce que proposent les auteurs de l’article Towards FAIR principles for research software.

Adding and notes about evolutions of this project :

Units Tests ; review ; ...

For dev on BioSilico :

  • genetic execution / genes use (ageMin and ageMax) and cycle (to avoid multiple instantiation of Brain / BrainLobe ++ execution of InitialConcentration Gene) : make good usage of ageMin and ageMax (0, 0) for initiation at start / 'birth'.
  • Design Patterns 'Builder' to make better implements ; IChemicals permits different implementations ; Chemicals Half-lives apply separatly (optional) ; ...
  • Some ideas "on the way to be done" (20200828+) :
    • AntHill / Ant example (some genetics and pathway to be precised)
    • Kind of reproduction according to Agent / Organism Types (DONE, to previse for virions...)
    • Abstraction for Chemicals / IChemicals
    • Decisions and Instincts to be precisely tested (with some examples)
    • Ideas about "Automatic Pathway construction" (GUI / Human Interface, Graphical or not)
    • ...
  • Review for some genetics model / Type of genes :
    • BiochemicalReaction
    • Instinct
    • EmitterReceptor
    • StimulusDecision
    • InitialConcentration
    • Brain
    • BrainLobe
    • ...
  • ...
  • ...

Maven modules

'biosilico-anthill' : Ant Hill Example

First Aim was to do / retake an example with Ants, and some plants and fruits. Not totally from scratch / from nothing : it gives some ideas about how the engine could works.

Based on 'biosilico-biosilico' module !

Work on July, August and September 2020 to get an example of Ant working basically (nervous system / Brain / Brain Lobes, Instincts, EmitterReceptor, StimulusDecisions to GET/DROP FOOD, MOVE_AWAY, MOVE... Seems to be a good example to build a genome and tools to build genomes.

Idea of a Tool to build "meta-genes" / Pathways :

  • StimulusDecision in Input => EmitterReceptor (receptor) => InputNeuron => Instinct's [=> Concept Neuron's => Instincts =>]* => OutPutNeuron => EmitterReceptor ( ! receptor) => StimulusDecision (decision)
  • At Least 6 Genes for a given "meta-gene" !

Some biochemistry to get deeper on this Ant !

=> Exploration with Plant (without any Brain / BrainLobe / Instinct / EmitterReceptor genes) !

And a Bacteria too ?!

TODO better testing "for real"

Notes 20210707

Notes 20210903

  • What make an organism 'valid' / alive exactly ? And what change to 'death' (programmatically) ?
    • Some specific active metabolic pathways ? TODO precise analysis here about dynamic of pathways
    • Death genes
    • ...
  • "Genetic Algorithm" to generate Ant valid examples of genomes (optimisation) ?!
    • test around "optimal genome" from "hand-made genome"
    • automatisation of tests
    • ...
  • ...

Notes 20211116

  • Genetic Algorithm and selection upon it :
    • Design Pattern : Visitor (or similar : Strategy / Command) to filter on some criteria
    • Criteria to be defined : what is exactly attempted ?
    • ...
  • Ideas of Criterias :
    • Number of cycles for "life" ;
    • Significant (?) metabolic changes (from step to step or among a defined number of steps) ;
    • ...
  • Ranking / notations :
    • Criteria give an amount of score / notation ;
    • Eliminatory Criteria ? (very bad note ?! Annotation ?!)
    • ...
  • Processing Criteria
    • Group / All / Some Random ? ;
    • Double Processing (or more ?) ;
    • ...
  • TEST WITH : 'Witness Indicators' (hard-coded features which correspond to the attempted behaviour)

Notes 20220307

  • To go further : use Graphical Interface done in Java Swing ;
  • Preparing indicators ;
  • Preparing other examples (Procedural Generation and Computer Ecosystem) ;
  • Others Agent Modelling Systems ? ;
  • ...

...

'biosilico-bioframeworks' : BioInformatics frameworks and similar tools

Aim of these Part is to put some example of BioFrameWork use and other tools !

  • BioJava / Biopython / BioPerl / BioC++
  • EMBOSS (tool suite)
  • Pipelining / Pipeline tools : SnakeMake, ...
  • FAIR principles in bioinformatics (reproductibility, open data, ...)
  • ...
  • ...

And some other examples and ideas ?!

Some notes and tutorials :

TODO SnakeMake example(s)

TODO KNIME example(s)

TODO NextFlow example(s)

TODO Galaxy example(s)

TODO other pipeline tools example(s) (...)

NOTE 20211214 : starting some parts of Pipeline / Workflow tool to be used here for some purposes !

'biosilico-biosilico' : Core representation for "In Silico" biological modelisation

A complete (?) dev framework to build a computer modelization / simulation for 'biological' agents.

Mostly inspired from game Creatures and publications around it, with some personnal ideas and read ideas.

Implemented as a discrete "World" composed of WorldCase, which can contains Agents. Some Agents are Organisms, which genomes are haploïd (reflexion about diploïd / polyploïd ... ?!).

Some generalisation about Chemicals (IChemicals) and Environment (IEnvironment, IEnvironmentItem, IPosition...) have been done to permit other implementations and different global uses ! (2D, 3D...)

NOTE : See also module biosilico-anthill for further evolution, tests and extension of modelisation and exemple use of BioSilico (Core) and examples of simulation.

'biosilico-cellmodel' : a previous sample Cell Model

A project made in 2009, in the same idea than the rest : modelisation of a cell in Java. Aim is to visualize tranfert of some elements between part of the cell (RNA, Protein...) and could be used as a basic to teach the CDB (Central Dogma of Biology). Transcription, traduction, treatment, transportation excretion of proteins / RNA / DNA...

'biosilico-creatures' : Creatures (Game Series) ressources

Some (original) ideas comes from here, some articles, documentations, ressources...

Some exploration of Creatures Game series

  • documentations, articles, pictures...
  • some reverse engineering to 'decypher' their "digital DNA" and reconstitue some internal concepts
  • some notes...

...

'biosilico-commons' : Common resources.

Some utils. Data (File, Directory, Filter), Structures, View...

'biosilico-crypto' : Ciphering ideas and some ressources.

Some cryptographic ideas, based on biological translation and use of a 'genetic code' to translate a nucleic sequence (DNA / RNA) to protein sequence. Main idea is to translate / reverse-translate 'computer source code' to 'biological sequences' and provides a basis to compare them with bioinformatic tools (phylogeny for example).

Main idea is is to translate / reverse-translate from a defined alphabet to 'dna' sequence (corresponding defined mapping as 'genetic code', with triplet / quadruplet / ...). This idea make a bigger text sequence but could be transmitted easily as mime / base64 / ASCII text ; one way to compress it is to convert the limited characters of translation (4 ideally, example are {a,c,g,t}) to a binary transcript (in example : {00,01,10,11}) and convert it to ASCII or equivalent (limited alphabet), as in base64 for transmission of complex data.

'biosilico-neuralnetworks' : Some tests on neural networks.

Some tests on neural networks.

'biosilico-graphicalview' : Visualisation of Modelisation / simulation

Graphical views for modelisation and simulation using BioSilico (Core) using Java Swing.

Specialisation and re-use for AntHill example : centralisation of graphical views.

TODO regroup ideas for "what do we want exactly to see ?".

'biosilico-tests' :

...

Ideas, notes, evolutions

What if if want to report something ?

Bug, error, idea, evolution, ...

See just below and write to the author ! Thanks !

Where to begin to participate ?

If you want to participate : first step warn the author (search on the InterWeb, "Gabriel Chandesris" or "Gaby Wald"). Then you will probably be added on project.

Then copy / clone the repository and source code, study some and indicate on what you want to work (if no further indications). Just work with usual habits (i.e. on GitHub, Use Git uses : create a branch from master, then when you finished (units tests included !), make a pull request to merge !

Have Fun !

Ideas incoming for some devs and / or documentations

  • biosilico-biosilico : gabywald.biosilico.model.reproduction <= to be reviewed !
  • biosilico-biosilico : gabywald.biosilico.model.decisions <= some review would be great too !

Other resources and readings

NOTE / TODO : ajout d'autres outils (et algorithmes associés) ici, au moins en référence, ressources... :