- Apr 08, 2024
-
-
LUISELLI Juliette authored
-
LUISELLI Juliette authored
-
- Nov 09, 2020
-
-
Théotime Grohens authored
Throughout the post-treatments, there is a pattern to iterate over all mutations contained in the DnaReplicationReport of individuals. As these are split into 3 std::lists of different types, the body of the loop is usually repeated 3 times (once for each list), which is prone to mistakes and hard to update if we want to add a new mutation type. This commit factors this code by introducing a higher-order template method named DnaReplicationReport::iter_muts(f), which takes a function f and runs f(mut) for all mutations mut in the 3 lists. This replaces the existing code very easily by turning the loop bodies into a single lambda block, and allows us to change the code in one single place (iter_muts()) if we want to introduce more mutation types. Moreover, as the function iter_muts is compiled once for each call with a different function f, and can be inlined, there should be no performance hit compared to the original loops.
-
- Oct 13, 2020
-
-
TURPIN Laurent authored
-
- Sep 08, 2020
-
-
Théotime Grohens authored
This commit re-adds some modifications from the aevol_6 branch that had not been kept by the large merge between the aevol_6 and aevol_7 branches.
-
- Jun 26, 2020
-
-
Théotime Grohens authored
This commit removes the handwritten destructor of the DnaReplicationReport class, since it the same thing as the default destructor would.
-
- Feb 12, 2020
-
-
FOLEY Marco authored
-
- Jun 14, 2019
-
-
ROUZAUD-CORNABAS Jonathan authored
-
- Oct 30, 2015
-
-
Vincent Liard authored
-
- Oct 29, 2015
-
-
Vincent Liard authored
Magic command for reference: find ! -path '*test*' ! -path './libaevol/SFMT-src-1.4/*' \( -name '*.cpp' -o -name '*.h' \) -print0 | xargs -0 sed -i -r 's/\bget_(\w+)\b/\1/g'
-
Vincent Liard authored
-
- Oct 27, 2015
-
-
Vincent Liard authored
* Find member variables that could clash : grep -rEo --no-filename '\w+' --include '*.cpp' --include '*.h' | sort -u | grep '^_' > _litigious_tokens.txt : grep -rEo --no-filename '\w+' --include '*.cpp' --include '*.h' | sort -u | grep '_$' > litigious_tokens_.txt : grep -Fx -f <(sed -e 's/_$//' litigious_tokens_.txt) <(sed -e 's/^_//' _litigious_tokens.txt) : cat clashes.txt : | xargs -n 1 -I% sh -c "echo --- % --- ; grep -rlE --include '*.cpp' --include '*.h' '\W_%' : | xargs grep -l '%_\W'" From the resulting list, files of interest, trimmed: ExpManager.h | t_end GeneticUnit.cpp | dna rna_list False positives removed (needed no action) Dna.cpp | indiv ExpManager_X11.cpp | win GeneticUnit.cpp | non_coding_computed GeneticUnit.cpp | transcribed Individual.cpp | modularity OutputManager.cpp | tree PhenotypicTargetHandler.cpp | var_sigma var_tau Protein.cpp | gen_unit height mean width ReplicationReport.cpp | indiv Rna.cpp | gen_unit StatRecord.cpp Stats.cpp | exp_m * Manual fixes [x] ExpManager.h | t_end [x] GeneticUnit.cpp | dna rna_list (almost false positive, would have caused no harm) * Automatic fix all other symbols : find ! -path '*test*' ! -path './libaevol/SFMT-src-1.4/*' \( -name '*.cpp' -o -name '*.h' \) -print0 : | xargs -0 sed -i -r -e 's/([^a-zA-Z0-9_])_([a-zA-Z0-9][a-zA-Z0-9_]+)/\1\2_/g' * Minor afterhand fixes fix OPENMP_ and changed_ with similar `find | xargs sed`s * Check there are no more _members : grep -rEo --no-filename '[^a-zA-Z0-9_]_[a-zA-Z0-9][a-zA-Z0-9_]+' --include '*.cpp' --include '*.h' --exclude-dir tests : | sed -e 's/^.//' | sort -u
-
- Oct 20, 2015
-
-
Vincent Liard authored
-
Vincent Liard authored
-
- Aug 06, 2015
-
-
ROUZAUD-CORNABAS Jonathan authored
-
- Jul 06, 2015
-
-
David Parsons authored
Instead of a single class with switches everywhere, mutations are now handled through a proper polymorphism. Here is the class hierarchy: Mutation <-- LocalMutation <-- PointMutation <-- SmallInsertion <-- SmallDeletion <-- Rearrangement <-- Duplication <-- Deletion <-- Translocation <-- Inversion <-- HT <-- InsertionHT <-- ReplacementHT
-
- Jun 22, 2015
-
-
David Parsons authored
It used to be done from ReplicationReport, bad !
-
- Jun 19, 2015
-
-
David Parsons authored
The responsability of the creation of the tree was shared between different entities (the tree of course, but also the individuals and their dna). This made it really difficult to deal with. The solution presented here isn't optimal (yet ?). In particular, trees had to be temporarily disabled for experiments with plasmids. The tree now handles itself more independently. It is filled with naive ReplicationReports which will have to be : - initialized at the beginning of a replication - filled in at the end of a replication - finalized at the end of a generation In the future, it would be nice to implement that as an Observer pattern to decouple the involved classes
-
- Jun 17, 2015
-
-
David Parsons authored
-
David Parsons authored
-
David Parsons authored
-
David Parsons authored
-
- Feb 20, 2015
-
-
Vincent Liard authored
-
Vincent Liard authored
And fix #includes and libaevol/Makefile.am.
-
Vincent Liard authored
Renamed ae_dna_replic_report to DnaReplicReport. Renamed member variables with no prefix _ and with a trailing _. Variable names should not start with and underscore as these names are reserved to the compiler implementation. (C++03 standard: §17.4.3.1.2/1). But class member variables can END with a trailing underscore.
-
Vincent Liard authored
-
Vincent Liard authored
-
Vincent Liard authored
-
- Feb 19, 2015
-
-
Vincent Liard authored
In the process, got to add constness to functions in many other files. Could have dropped constness from declarations, but since I was at it... Has to be tested thoroughly, still...
-
- Feb 17, 2015
-
-
Vincent Liard authored
ae_dna_replic_report::get_HT_std ae_dna_replic_report::get_rearrangements_std ae_dna_replic_report::get_mutations_std ae_replication_report::get_dna_replic_reports_std
-
- Feb 12, 2015
-
-
Vincent Liard authored
-
- Dec 08, 2014
-
-
Vincent Liard authored
The name convention ae_* for aevol-related classes and functions comes from C language lacking namespaces. It was meant to prevent name clashes. Since C++ provides namespaces, this commit wraps everything inside an "aevol" namespace. This means that there is no need anylonger to name classes according to ae_*. But any new class needs to be within the aevol namespace if it is part of aevol or to start with a "using" clause if it relies on aevol.
-
- Oct 21, 2014
-
-
Vincent Liard authored
-
- Nov 19, 2013
-
-
Bérénice Batut authored
- They are managed in ae_dna and ae_mutation and no more in ae_selection - They are saved in ae_dna_replic_report with the transferred sequence (to simplify the post-treatments)
-
- Oct 22, 2013
-
-
David Parsons authored
Updated all the file headers
-
- Feb 15, 2013
-
-
David Parsons authored
ae_list and ae_list_node are now template classes. This should not influence execution time as template instanciation occurs as comilation time. Changes for developers: * It is no longer possible to declare a plain ae_list variable, you must declare an ae_list<whatever_you_want> variable. Things are clearer this way since one knows what type of object the list will contain. * It is no longer necessary to cast an object to the correct type: example: before: ae_list_node* rna_node; // ... ((ae_rna*) rna_node->get_obj())->rna_method() now: ae_list_node<ae_rna*>* rna_node; // ... rna_node->get_obj()->rna_method() I'm pretty sure Dule will like that ;)
-
- Jun 07, 2012
-
-
David Parsons authored
Modified compilation chain: --with-regul changed to --with-raevol --without-xlib changed to the (standard) without-x lib-aevol was changed to libaevol for a more intuitive use with -laevol. Libraries generated with different compilation options are no longer differentiated by postfixes (save for the RAEVOL option) => if --with-raevol is used, the generated lib will be called libraevol (whether X and/or DEBUG are used or not). if --without-raevol (default), the generated lib will be called libaevol. make clean is called automatically at the end of ./configure to avoid compatibility issues.
-
- Dec 13, 2010
-
-
David Parsons authored
* Organized the repository to manage branches. * ************************************************ Everything you already know has been moved to "trunk" Added a "branches" directory with 2 subdirectories "releases" and "features" * "releases" will be used for branches related to a given release, e.g. when a change to post-treatments are needed for the analysis of data generated using that release. For example: I am analysing data that I generated using versions 2.1.2 of the code. I hence created the branch "releases/aevol-2.1.2" so that I can code my post-treatments in a properly versionned way. These development may (depending on the level of specificity) be added to the trunk eventually (using svn merge) * "features" is meant to be used when developing a new feature that takes time developing. This will enable us to use svn feature more thouroughly, e.g. commit more often (even "unstable" versions) in a personal branch of the svn. If you don't want to use branches or if you just want to be able to update regularly, you need not change your habits, just add "/trunk" when you check out => "svn checkout svn+ssh://username@svn.gforge.liris.cnrs.fr/svnroot/aevol/trunk" Questions/remarks are welcome! David
-