Mentions légales du service

Skip to content
Snippets Groups Projects
  1. Apr 08, 2024
  2. Nov 09, 2020
    • Théotime Grohens's avatar
      [DnaReplicationReport] Factor the loops over the 3 mutation types · 804b602a
      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.
      804b602a
  3. Oct 13, 2020
  4. Sep 08, 2020
  5. Jun 26, 2020
  6. Feb 12, 2020
  7. Jun 14, 2019
  8. Oct 30, 2015
  9. Oct 29, 2015
  10. Oct 27, 2015
    • Vincent Liard's avatar
      fix _member_variables to member_variables_ [epic] · 286881e3
      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
      286881e3
  11. Oct 20, 2015
  12. Aug 06, 2015
  13. Jul 06, 2015
    • David Parsons's avatar
      aevol-2 Create mutation class hierarchy · 6615dbb4
      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
      6615dbb4
  14. Jun 22, 2015
  15. Jun 19, 2015
    • David Parsons's avatar
      Refactor tree management · b85cae02
      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
      b85cae02
  16. Jun 17, 2015
  17. Feb 20, 2015
  18. Feb 19, 2015
    • Vincent Liard's avatar
      convert ae_dna_replic_report to STL · 8f359b01
      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...
      8f359b01
  19. Feb 17, 2015
  20. Feb 12, 2015
  21. Dec 08, 2014
    • Vincent Liard's avatar
      wrap ae_* in namespace aevol · c7e0790b
      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.
      c7e0790b
  22. Oct 21, 2014
  23. Nov 19, 2013
  24. Oct 22, 2013
  25. Feb 15, 2013
    • David Parsons's avatar
      ===================== aevol-4 ===================== · f60503b1
      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 ;)
      
      f60503b1
  26. Jun 07, 2012
    • David Parsons's avatar
      ========== In release branch 4.0.0.0 ========== · fe726883
      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.
      
      fe726883
  27. Dec 13, 2010
    • David Parsons's avatar
      ************************************************ · 60e1f9fb
      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
      
      
      60e1f9fb
Loading