Mentions légales du service

Skip to content
Snippets Groups Projects
Commit cb0a1fd3 authored by LUISELLI Juliette's avatar LUISELLI Juliette
Browse files

Create the Recombination mutation (to save in the Tree)

parent 25376c39
No related branches found
No related tags found
No related merge requests found
......@@ -94,6 +94,8 @@ set(libaevol_sources
mutation/SmallInsertion.h
mutation/Translocation.cpp
mutation/Translocation.h
mutation/Recombination.h
mutation/Recombination.cpp
# mutation/GeneMutation.cpp
# mutation/GeneMutation.h
legacy/phenotype/fuzzy/Fuzzy.cpp
......
// ****************************************************************************
//
// Aevol - An in silico experimental evolution platform
//
// ****************************************************************************
//
// Copyright: See the AUTHORS file provided with the package or <www.aevol.fr>
// Web: http://www.aevol.fr/
// E-mail: See <http://www.aevol.fr/contact/>
// Original Authors : Guillaume Beslon, Carole Knibbe, David Parsons
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ****************************************************************************
// ============================================================================
// Includes
// ============================================================================
#include "Recombination.h"
#include <sstream>
namespace aevol {
// ============================================================================
// Definition of static attributes
// ============================================================================
// ============================================================================
// Constructors
// ============================================================================
// ============================================================================
// Destructor
// ============================================================================
// ============================================================================
// Methods
// ============================================================================
void Recombination::save(gzFile backup_file) const {
int8_t tmp_mut_type = RECOMB;
gzwrite(backup_file, &tmp_mut_type, sizeof(tmp_mut_type));
gzwrite(backup_file, &posA_, sizeof(posA_));
gzwrite(backup_file, &posB_, sizeof(posB_));
gzwrite(backup_file, &align_score_, sizeof(align_score_));
}
void Recombination::load(gzFile backup_file) {
gzread(backup_file, &posA_, sizeof(posA_));
gzread(backup_file, &posB_, sizeof(posB_));
gzread(backup_file, &align_score_, sizeof(align_score_));
}
std::string Recombination::generic_description_string() const {
std::ostringstream stream;
stream << mut_type() << ' '
<< posA() << ' '
<< posB() << ' '
<< -1 << ' '
<< -1 << ' ' << -1 << ' '
<< align_score() << ' '
<< -1 << ' '
<< -1 << ' '
<< -1;
return stream.str();
}
// ============================================================================
// Non inline accessors
// ============================================================================
} // namespace aevol
// ****************************************************************************
//
// Aevol - An in silico experimental evolution platform
//
// ****************************************************************************
//
// Copyright: See the AUTHORS file provided with the package or <www.aevol.fr>
// Web: http://www.aevol.fr/
// E-mail: See <http://www.aevol.fr/contact/>
// Original Authors : Guillaume Beslon, Carole Knibbe, David Parsons
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ****************************************************************************
#ifndef AEVOL_RECOMBINATION_H_
#define AEVOL_RECOMBINATION_H_
// ============================================================================
// Includes
// ============================================================================
#include "sys/types.h"
#include "Mutation.h"
namespace aevol {
/**
*
*/
class Recombination : public Mutation {
public :
// ==========================================================================
// Constructors
// ==========================================================================
Recombination() = default; //< Default ctor
Recombination(const Recombination&) = default; //< Copy ctor
// The move constructor is implicitly deleted.
Recombination(int32_t posA, int32_t posB, int16_t align_score = -1) :
posA_{posA}, posB_{posB}, align_score_{align_score} {}
virtual Mutation* Clone() const override { return new Recombination(*this); };
// ==========================================================================
// Destructor
// ==========================================================================
virtual ~Recombination() noexcept = default; //< Destructor
// ==========================================================================
// Operators
// ==========================================================================
// The copy and move operators are implicitly deleted.
// ==========================================================================
// Public Methods
// ==========================================================================
virtual void save(gzFile backup_file) const override;
virtual void load(gzFile backup_file) override;
std::string generic_description_string() const override;
// ==========================================================================
// Getters
// ==========================================================================
virtual MutationType mut_type() const override { return RECOMB; };
int32_t posA() const { return posA_; }
int32_t posB() const { return posB_; }
int16_t align_score() const { return align_score_; }
// ==========================================================================
// Setters
// ==========================================================================
protected :
// ==========================================================================
// Protected Methods
// ==========================================================================
// ==========================================================================
// Attributes
// ==========================================================================
int32_t posA_, posB_;
int16_t align_score_ = -1;
};
} // namespace aevol
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment