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].
- 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
For this Project or others :
-
Python language and usual librairies for data analysis (Pandas, NumPy, Scikit Learn...)
-
BioJava, BioPerl, BioPython... (BioC++ ?) ; EMBOSS ?
-
Some Inspirationnal Video Games and associated topics :
- Creatures Game Serie
- Memetic AI (use in "NeverWinter" Video Game) : https://sourceforge.net/projects/memeticai/ ; https://github.com/squattingmonk/memeticai ; ...
- World Of WarCraft "Corrupted Blood Incident" : https://en.wikipedia.org/wiki/Corrupted_Blood_incident
- Procedural Generation : https://en.wikipedia.org/wiki/Procedural_generation ; https://linuxfr.org/tags/gamedev/public ; https://linuxfr.org/news/je-cree-mon-jeu-video-e10-generation-procedurale-de-carte-partie-1 ; https://linuxfr.org/news/je-cree-mon-jeu-video-e11-generation-procedurale-de-carte-partie-2 ; ...
- BioInspiration https://en.wikipedia.org/wiki/Bioinspiration
- Deliverable D2.2.3 - Overview on Bio-inspired operation strategies : https://irriis.org/index6bf2.html?lang=en&nav=344 ; https://irriis.org/File6836.pdf?lang=2&oiid=9139&pid=572 ; ...
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).
GNU General Public Licence V3 (GPL3)
Specific maven module for some example and frameworks and tools used in BioInformartics
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.
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
- ...
- ...
- ...
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
- Generate full family (bacta, viridita, anima) with builders with genetic algorithm to select correct and valid genomes ;
- Make Builder(s) of pathways (as indicated above ! => selection of genes to make a specific behavior, not only metabolic) : to permit to tests them exhaustively ;
- Graphical view of evolution of populations, elements and chemicals... With charts and plots ! See JFreeChart (?!) :
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 ? ;
- ...
...
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 :
- Biopython
- Tutorial Biopython in PDF
- Tutorial Biopython in HTML
- Biopython SeqUtils
- Cours BioInfo Université Paris Descartes
- Scheme ou Python ? Pour des biologistes... / Python Scheme ou Python ? Pour des biologistes... (Laurent Bloch)
- Python et Biopython
- "GNU/Linux Magazine Hors-série N° Numéro 73 Python : niveau avancé à expert " (Juillet / Août 2014)
- Biopython - Sequence Alignments
- Biopython - Alignements de séquence
- ...
- BioJava
- BioPerl
- BioC++
- BioC++ Offical HomePage
- BioC++ - solving daily bioinformatic tasks with C++ efficiently - BIOSTEC 2020
- SeqAn
- TODO BioC++ example(s)
- ...
- EMBOSS (tools suite).
- Pipelining / Pipelines :
- Introduction aux pipelines
- SnakeMake on Bioinfo-fr.net
- GitHub - snakemake / snakemake
- snakemake : a framework for reproductible data analysis
- snakemake stable documentation
- ...
- Nextflow, pour votre prochain pipeline ?
- Galaxy: Bien plus qu'un gestionnaire de workflows
- Bioinformatics and Next Generation Sequencing Extensions
- ...
- FAIR :
- "FAIR" à l'UFB / Institut Français de BioInformatique
- Présentation "Bonnes pratiques en bioinformatique : (essayer) d’aller vers plus de reproductibilité"
- Formation IFB science ouverte & PGD -- Comment gérer des jeux de données haut-débit en sciences de la vie et de la santé
- Les principes FAIR : Findable, Accessible, Interoperable, Reusable
- ...
- Some More Courses / Training / 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 !
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.
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...
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...
...
Some utils. Data (File, Directory, Filter), Structures, View...
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.
Some tests on neural networks.
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 ?".
...
Bug, error, idea, evolution, ...
See just below and write to the author ! Thanks !
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 !
- biosilico-biosilico : gabywald.biosilico.model.reproduction <= to be reviewed !
- biosilico-biosilico : gabywald.biosilico.model.decisions <= some review would be great too !
NOTE / TODO : ajout d'autres outils (et algorithmes associés) ici, au moins en référence, ressources... :
- GROOLS "GROOLS: reactive graph reasoning for genome annotation through biological processes"
- TFold "Tfold: efficient in silico prediction of non-coding RNA secondary structures" -- https://evryrna.ibisc.univ-evry.fr/evryrna/tfold
- "In vivo, in vitro... in silico !" Posté le : Lundi 5 Janvier 2009 par : X. Muller Expert : P. Cournède, M. Kern, O. Faugeras
- ...
- ...