From ce2cab659a1572b52e636f4e51952d0b6eef44b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20Petrovi=C4=8D?= <mifo.petrovic@gmail.com>
Date: Sat, 8 Feb 2025 19:59:48 +0100
Subject: [PATCH] remove not working palindrome analyser (unfinished)

---
 .../analyse/palindrome/PalindromeAnalyse.java |  72 -------
 .../PalindromeAnalyseController.java          | 144 -------------
 .../PalindromeAnalyseRepository.java          |  27 ---
 .../palindrome/PalindromeAnalyseService.java  | 139 -------------
 .../detector/AtatPalindromeDetector.java      |  91 ---------
 .../detector/CompositePalindromeDetector.java | 189 ------------------
 .../detector/PalindromeDetector.java          |  13 --
 .../detector/PalindromeDetectorBuilder.java   |  13 --
 .../detector/PalindromeMatcher.java           |  16 --
 .../detector/Simple2PalindromeDetector.java   |  86 --------
 .../detector/SimplePalindromeDetector.java    |  83 --------
 .../analyse/palindrome/model/NumberRange.java |  62 ------
 .../palindrome/model/PalindromeModel.java     | 129 ------------
 .../palindrome/model/StabilityModel.java      |  23 ---
 .../stability/NNModelStabilityCalculator.java |  78 --------
 .../stability/StabilityCalculator.java        |  13 --
 .../dnaAnalyser/overlay/OverlayService.java   |   3 -
 17 files changed, 1181 deletions(-)
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyse.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseController.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseRepository.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseService.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/AtatPalindromeDetector.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/CompositePalindromeDetector.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetector.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetectorBuilder.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeMatcher.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/Simple2PalindromeDetector.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/SimplePalindromeDetector.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/NumberRange.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/PalindromeModel.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/StabilityModel.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/NNModelStabilityCalculator.java
 delete mode 100644 src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/StabilityCalculator.java

diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyse.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyse.java
deleted file mode 100644
index 80a9f61..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyse.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.StabilityModel;
-import cz.mendelu.dnaAnalyser.sequence.Sequence;
-import cz.mendelu.dnaAnalyser.user.User;
-import cz.mendelu.dnaAnalyser.utils.analyse.model.Analyse;
-import cz.mendelu.dnaAnalyser.utils.model.Identifiable;
-import lombok.Builder;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import java.util.Date;
-import java.util.Set;
-import java.util.UUID;
-
-@Data
-@Entity
-@ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
-public class PalindromeAnalyse extends Analyse implements Identifiable {
-
-    /*
-    public PalindromeModel() {
-        super(PalindromeModel.class.getPackage().getName());
-    }
-    */
-
-    private String mismatches;
-    @Transient
-    private int size;
-    @Transient
-    private int mismatche;
-    @Transient
-    private int spacer;
-    @Transient
-    private String spacers;
-    @Transient
-    private int position;
-    @Transient
-    private StabilityModel stabilityModel;
-
-    public PalindromeAnalyse() {
-    }
-
-    @Builder
-    private PalindromeAnalyse(UUID id, Date created, Sequence sequence, User owner, Set<String> tags, Date finished, String title, Long resultCount, Integer size, String spacers, Integer spacer, String mismatches, Integer mismatche, int position) {
-        super((id != null) ? id : UUID.randomUUID(), created, sequence, owner, tags, finished, title, resultCount);
-        this.size = size;
-        this.spacers = spacers;
-        this.spacer = spacer;
-        this.mismatches = mismatches;
-        this.mismatche = mismatche;
-        this.position = position;
-    }
-
-    /*
-    public NumberRange sizeAsNumberRange() {
-        return (size == null) ? null : new NumberRange(size);
-    }
-
-    public NumberRange spacerAsNumberRange() {
-        return (spacer == null) ? null : new NumberRange(spacer);
-    }
-
-    public NumberRange mismatchesAsNumberRange() {
-        return (mismatches == null) ? null : new NumberRange(mismatches);
-    }
-    */
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseController.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseController.java
deleted file mode 100644
index d5daa3c..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseController.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.StabilityModel;
-import cz.mendelu.dnaAnalyser.sequence.SequenceService;
-import cz.mendelu.dnaAnalyser.utils.controller.DeleteMapping;
-import cz.mendelu.dnaAnalyser.utils.controller.GetMapping;
-import cz.mendelu.dnaAnalyser.utils.controller.*;
-import cz.mendelu.dnaAnalyser.utils.controller.PostMapping;
-import cz.mendelu.dnaAnalyser.utils.controller.PutMapping;
-import cz.mendelu.dnaAnalyser.utils.swagger.ApiPaginationParams;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.security.core.Authentication;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-@RestController
-@Api(tags = "api/analyse/palindrome")
-@RequestMapping("api/analyse/palindrome")
-public class PalindromeAnalyseController {
-
-    @Data
-    static class PalindromeAnalyseRequest {
-
-        private List<UUID> sequences;
-
-        private Boolean dinucleotide;
-
-        private String size = "6-30";
-
-        private String spacer = "0-10";
-
-        private String mismatches = "0,1";
-
-        private Set<String> tags;
-
-        private StabilityModel stabilityModel;
-
-    }
-
-
-    @Autowired
-    private PalindromeAnalyseService palindromeAnalyseService;
-
-    @Autowired
-    private SequenceService sequenceService;
-
-    @GetMapping
-    @ResponseStatus(HttpStatus.OK)
-    @PreAuthorize("isAutheticated()")
-    @ApiPaginationParams
-    @ApiOperation("Get page with PalindromeModel analysis")
-    public ResponsePage<PalindromeModel> getPageWithPalindromeAnalysis(
-            PaginationParam paginationParam,
-            SortParam sortParam,
-            TagFilterParam tagFilterParam
-    ){
-
-        throw new UnsupportedOperationException("Not implemented yet.");
-    }
-
-    @GetMapping("/tag")
-    @ResponseStatus(HttpStatus.OK)
-    @PreAuthorize("isAuthenticated()")
-    @ApiPaginationParams
-    @ApiOperation("Get all tags defined for sequences")
-    public ResponsePage<String> getPageWithTags(
-            PaginationParam paginationParam,
-            SortParam sortParam
-    ) {
-        throw new UnsupportedOperationException("Not implemented yet.");
-    }
-
-    @GetMapping("/{id}")
-    @ResponseStatus(HttpStatus.OK)
-    @PreAuthorize("isAuthenticated()")
-    @ApiOperation("Get one PalindromeModel analyse by ID.")
-    public Response<PalindromeModel> getOnePalindromeAnalyse(
-            @PathVariable UUID id)
-    {
-        throw new UnsupportedOperationException("Not implemented yet.");
-    }
-
-    @PostMapping()
-    @ResponseStatus(HttpStatus.CREATED)
-    @PreAuthorize("isAuthenticated()")
-    @ApiOperation("Create palindrome analyze.")
-    public ResponseList<PalindromeAnalyse> postPalindromeAnalyse(
-            @ApiIgnore Authentication authentication,
-            @RequestBody @Valid PalindromeAnalyseRequest request
-    ) {
-
-        List<PalindromeAnalyse> analysis = request.getSequences()
-                .stream()
-                .map(uuid ->
-                        palindromeAnalyseService.executePalindromeAnalyse(null /*
-                                PalindromeModel.builder()
-                                        .sequence(sequenceService.findOne(uuid))
-                                        .owner(AuthenticationUtils.toUser(authentication))
-                                        .tags(request.getTags())
-                                        .mismatches(request.getMismatches())
-                                        .size(request.getSize())
-                                        .spacer(request.getSpacer())
-                                        .stabilityModel(request.getStabilityModel())
-                                        .build() */
-                        )
-                ).collect(Collectors.toList());
-
-        return ResponseList.responseList(analysis);
-    }
-
-    @PutMapping("/{id}/tags")
-    @ResponseStatus(HttpStatus.ACCEPTED)
-    @PreAuthorize("isAuthenticated()")
-    @ApiOperation("Modify tags")
-    public Response<PalindromeModel> modifyTags(
-            @PathVariable UUID id,
-            @RequestBody TagModifyRequest request)
-    {
-        throw new UnsupportedOperationException("Not implemented yet.");
-    }
-
-    @DeleteMapping("/{id}")
-    @ResponseStatus(HttpStatus.NO_CONTENT)
-    @PreAuthorize("isAuthenticated()")
-    @ApiOperation("Delete one PalindromeModel analyse by ID")
-    public void deletePalindrome(
-            @PathVariable UUID id)
-    {
-        throw new UnsupportedOperationException("Not implemented yet.");
-    }
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseRepository.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseRepository.java
deleted file mode 100644
index 079d0ec..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseRepository.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome;
-
-import cz.mendelu.dnaAnalyser.utils.repository.BaseRepository;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-import java.util.UUID;
-
-@Repository
-public interface PalindromeAnalyseRepository extends BaseRepository<PalindromeAnalyse, UUID> {
-
-    @Query("select a from PalindromeAnalyse as a join a.owner o where o.id = ?#{principal.id}")
-    Page<PalindromeAnalyse> findAll(Pageable pageable);
-
-    @Query("select a from PalindromeAnalyse as a join a.owner o join a.tags t where t = :tag and o.id = ?#{principal.id}")
-    Page<PalindromeAnalyse> findAll(Pageable pageable, @Param("tag") String tag);
-
-    @Query("select a from PalindromeAnalyse as a join a.owner o where a.id = :id and o.id = ?#{principal.id}")
-    Optional<PalindromeAnalyse> findById(@Param("id") UUID id);
-
-    @Query("select t from PalindromeAnalyse as s join s.owner o join s.tags t where o.id = ?#{principal.id}")
-    Page<String> findAllTags(Pageable pageable);
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseService.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseService.java
deleted file mode 100644
index 0706fda..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/PalindromeAnalyseService.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.detector.AtatPalindromeDetector;
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-import cz.mendelu.dnaAnalyser.batch.BatchService;
-import cz.mendelu.dnaAnalyser.sequence.NucleicBuffer;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceDataRepository;
-import lombok.Data;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-
-@Service
-public class PalindromeAnalyseService {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PalindromeAnalyseService.class);
-
-    private List<PalindromeModel> palindromes = new LinkedList<>();
-
-    private boolean cycleMode = false;
-
-    //@Autowired
-    //private PalindromeDataSessionService palindromDataSessionService;
-
-    @Autowired
-    private PalindromeAnalyseRepository palindromeRepository;
-
-    @Autowired
-    private SequenceDataRepository sequenceDataRepository;
-
-    @Autowired
-    private BatchService batchService;
-
-    public PalindromeAnalyse executePalindromeAnalyse(PalindromeAnalyse palindromeAnalyse) {
-        palindromeAnalyse = palindromeRepository.save(palindromeAnalyse);
-        batchService.createBatch(palindromeAnalyse.getOwner(), palindromeAnalyse);
-   /*             .execute(analyse->{
-
-                    Sequence sequence = analyse.getSequence();
-                    SequenceData sequenceData = sequenceDataRepository.load(sequence);
-
-                    //inicializace proměnných potřebných pro algoritmus
-                    int size = analyse.getSize();
-                    boolean atatFilter = analyse.isAtatFilter();
-                    boolean cycle = analyse.isCycle();
-                    String mismatcheString = analyse.getMismatches();
-                    String spacerString = analyse.getSpacers();
-
-                    NumberRange mm = new NumberRange(mismatcheString); //prevedu mismatche a spacer
-                    NumberRange sp = new NumberRange(spacerString);
-
-                    final SortedSet<Integer> spacers = sp.getValues();
-                    final SortedSet<Integer> mismatches = mm.getValues();
-
-                    SqlSession sqlSession = palindromDataSessionService.openDataSession(analyse);
-
-                    analyse.finishNow();
-                    sqlSession.commit();
-                    analyse = palindromeRepository.save(analyse); //na konci uložím
-                    return analyse;
-                }).start();
-
-*/
-        return palindromeAnalyse;
-    }
-
-    private boolean isSubSequenceToCompare(SequenceData sequence, int nextSequencePosition, int size, boolean cycleMode) {
-        return (cycleMode)
-                ? true
-                : sequence.getLength() > nextSequencePosition + size;
-    }
-
-    private NucleicBuffer getSubSequence(SequenceData sequence, int nextSequencePosition, int size) {
-        return sequence.getBuffer(nextSequencePosition, size);
-    }
-
-    public List<PalindromeModel> findPalindromes(final int size, SortedSet<Integer> spacers, SortedSet<Integer> mismatches, SequenceData sequence, boolean cycleMode, boolean atatFilter) {
-        Integer nextSequencePosition, mismatche;
-        NucleicBuffer testedSequence, oppositSequence, nextSequence;
-
-        int searchToPosition = sequence.getLength();
-        for (int i = 0; i < searchToPosition; i++) { // v cyklu prochazim cely genom
-
-            testedSequence = getSubSequence(sequence, i, size); //vezme se část sekvence z celé sekvence a ta se testuje   
-
-            LOG.debug("tested = {} ", testedSequence);
-            if (atatFilter && AtatPalindromeDetector.isAtat(testedSequence)) continue;
-
-            oppositSequence = testedSequence.revert(); //otočí se testovaná podsekvence
-           // LOG.debug("OppositSeq = {} ", oppositSequence.getLength());
-
-            for (int spacer : spacers) { // Postupne natahuji mezeru a porovnavam shodu
-                nextSequencePosition = i + size + spacer;
-
-                 if (isSubSequenceToCompare(sequence, nextSequencePosition, size, cycleMode)) { //zde je problém, neprochází
-                nextSequence = getSubSequence(sequence, nextSequencePosition, size);
-
-                if (atatFilter && AtatPalindromeDetector.isAtat(testedSequence)) continue;
-                     LOG.debug("opposite = {} ", oppositSequence);
-                     LOG.debug("next = {} ", nextSequence);
-
-                mismatche = oppositSequence.mismatches(nextSequence); // mismatche null.. proč??? ZDE JE HLAVNÍ problém
-                LOG.debug("mismatche = {} ", mismatche);
-                if (mismatche != null && mismatches.contains(mismatche)) { // Pokud jsem nalezl odpovidaji sekvenci pridam ji do vysledku
-
-                PalindromeModel p = (new PalindromeModel(sequence, i, size, spacer, mismatche));
-                palindromes.add(p);
-                break;
-                    }
-                }
-            }
-        }
-        return palindromes;
-    }
-
-
-
-        @Data
-        private static class Palindrome {
-            private SequenceData sequenceData;
-            private int position;
-            private int mismatche;
-            private int spacer;
-            private int size;
-
-            public Palindrome(SequenceData sequenceData, int position, int mismatche, int spacer, int size) {
-                this.sequenceData = sequenceData;
-                this.position = position;
-                this.mismatche = mismatche;
-                this.spacer = spacer;
-                this.size = size;
-            }
-        }
-
-    }
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/AtatPalindromeDetector.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/AtatPalindromeDetector.java
deleted file mode 100644
index 6b03d03..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/AtatPalindromeDetector.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-import cz.mendelu.dnaAnalyser.sequence.NucleicBuffer;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-import cz.mendelu.dnaAnalyser.sequence.nucleotide.Nucleotide;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.SortedSet;
-
-/**
- * Created by xkoloma1 on 03.03.2016.
- */
-public class AtatPalindromeDetector implements PalindromeDetector {
-
-    private static final Logger LOG = LoggerFactory.getLogger(AtatPalindromeDetector.class);
-
-    public static boolean isAtat(NucleicBuffer nucleicBuffer) {
-        if (nucleicBuffer.getLength() == 0) {
-            return false;
-        }
-
-        Nucleotide current, expects = nucleicBuffer.next().supplement(nucleicBuffer.getType());
-        while (nucleicBuffer.hasNext()) {
-            current = nucleicBuffer.next();
-            if (expects != current) {
-                return false;
-            }
-            expects = current.supplement(nucleicBuffer.getType());
-        }
-        return true;
-    }
-
-
-    private final int minSize, maxSize, maxSpacer;
-
-    public AtatPalindromeDetector(SortedSet<Integer> size, SortedSet<Integer> spacers) {
-        this.minSize = size.first();
-        this.maxSize = size.last();
-        this.maxSpacer = spacers.last() - (spacers.last() % 2);
-    }
-
-    @Override
-    public PalindromeMatcher findPalindrome(SequenceData sequence) {
-        SimplePalindromeDetector.SimplePalindromeMatcher result = new SimplePalindromeDetector.SimplePalindromeMatcher();
-        if(sequence.getLength() < minSize * 2) {
-            return result;  //TODO nebo radeji vyvolat vyjimku?
-        }
-
-        Iterator<Nucleotide> i = sequence.iterator();
-        Nucleotide current, expects = i.next().supplement(sequence.getType());
-        int start = 0, length = 0;
-
-        while (i.hasNext()) {
-            current = i.next();
-            length++;
-            if (expects != current) {
-                // Testuji zda sekvence atat je dostatecna na vytvoreni palindromu
-                if (length >= (minSize * 2)) {
-                    result.add(newPalindrome(sequence, start, length));
-                }
-                start += length;
-                length = 0;
-            }
-            expects = current.supplement(sequence.getType());
-        }
-
-        // Pridani palindromu na konci genomu.
-        if (length >= minSize * 2) {
-            result.add(newPalindrome(sequence, start, length));
-        }
-        return result;
-    }
-
-    @Override
-    public void setAtatFilter(boolean atatFilter) {
-        // Ignore
-    }
-
-    private PalindromeModel newPalindrome(SequenceData sequence, int start, int length) {
-        length -= (length % 2); // Délka musí být sudé číslo!
-        int size =      Math.min(length / 2, maxSize);
-        int remainder = Math.max(0, length - (size * 2));
-        int spacer =    Math.min(remainder, maxSpacer);
-        spacer -= (spacer % 2); // Délka spaceru musí být také sudé číslo.
-        return new PalindromeModel(sequence, start, size, spacer, 0);
-    }
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/CompositePalindromeDetector.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/CompositePalindromeDetector.java
deleted file mode 100644
index 52e47ba..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/CompositePalindromeDetector.java
+++ /dev/null
@@ -1,189 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-
-
-import java.util.*;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * Created by xkoloma1 on 06.10.2015.
- */
-public class CompositePalindromeDetector implements PalindromeDetector {
-
-    public static PalindromeDetectorBuilder palindromeDetectorBuilder() {
-            return (size, spacers, mismatches) -> {
-                List<PalindromeDetector> palindromeDetectors = size.stream()
-                        .map(s -> new Simple2PalindromeDetector(s, spacers, mismatches))
-                        .collect(Collectors.toList());
-
-                AtatPalindromeDetector atatPalindromeDetector = new AtatPalindromeDetector(size, spacers);
-
-                return new CompositePalindromeDetector(palindromeDetectors, atatPalindromeDetector);
-            };
-        }
-
-    private List<PalindromeDetector> palindromeDetectors;
-    private AtatPalindromeDetector atatPalindromeDetector;
-    private boolean usadAtatPalindromeDetector = true;
-
-    private PalindromeMergeEvalutor evalutor = (f, s) -> f.getSize() - f.getMismatches() <= s.getSize() - s.getMismatches();
-
-    public CompositePalindromeDetector(List<PalindromeDetector> palindromeDetectors, AtatPalindromeDetector atatPalindromeDetector) {
-        this.palindromeDetectors = palindromeDetectors;
-        this.atatPalindromeDetector = atatPalindromeDetector;
-    }
-
-    @Override
-    public PalindromeMatcher findPalindrome(SequenceData sequence) {
-        PalindromeMatcher result = palindromeDetectors.parallelStream()
-                .map(pd -> pd.findPalindrome(sequence)) /* VYBER JEDEN Z NASLEDUJICH DVOU RADKU */
-                .reduce(null, (a, b) -> merge(a, b));   // Redukce podle stredu palindromu
-                //.reduce(null, (a, b) -> sum(a, b));   // Jednoduche spojeni vsech vysledku do jednoho za ucelem demonstrace na clanek
-        if (usadAtatPalindromeDetector)
-            result = merge(result, atatPalindromeDetector.findPalindrome(sequence));
-
-        Map<Object, PalindromeModel> filter = spaceRiseFilter(result);
-        return new MergePalindromeMatcher(filter);
-    }
-
-    /**
-     * Tento filter odstraní palindromy, které jsou na stejném místě a vnikly nárustem spaceru. Tedy ebě jejich části
-     * (sekvence i oposite) začínají na stejnmém místě.
-     * @param result
-     * @return
-     */
-    private Map<Object, PalindromeModel> spaceRiseFilter(PalindromeMatcher result) {
-        Map<Object, PalindromeModel> filter = new HashMap<>();
-        result.forEach(palindrome ->  {
-            int palindromeStart = palindrome.getPosition();
-            int oppositeStart = palindromeStart + palindrome.getSequence().getLength() + palindrome.getSpacer().getLength();
-            FilterSignature signature = new FilterSignature(palindromeStart, oppositeStart);
-            // Otestuji, jestli mam jiz ulozeny podezdeli palindrom,
-            if (filter.containsKey(signature)) { // Pokud mam, tak vyhodnotim ten lepsi
-                PalindromeModel oldPalindromeModel = filter.get(signature);
-                if (palindrome.getSequence().getLength() > oldPalindromeModel.getSequence().getLength()) {
-                    filter.put(signature, palindrome);
-                }
-            } else { // Jinak pouze pridam do mapy
-                filter.put(signature, palindrome);
-            }
-        });
-        return filter;
-    }
-
-    @Override
-    public void setAtatFilter(boolean atatFilter) {
-        palindromeDetectors.forEach(p -> p.setAtatFilter(atatFilter));
-        usadAtatPalindromeDetector = atatFilter;
-    }
-
-    private MergePalindromeMatcher merge(PalindromeMatcher a, PalindromeMatcher b) {
-        MergePalindromeMatcher result = new MergePalindromeMatcher();
-        if (a != null) {
-            result.merge(a);
-        }
-        if (b != null) {
-            result.merge(b);
-        }
-        return result;
-    }
-
-    private PalindromeMatcher sum(PalindromeMatcher a, PalindromeMatcher b) {
-        return new PalindromeMatcher() {
-            private List<PalindromeModel> sum = new LinkedList<>();
-            {
-                if (a != null) a.forEach(p -> sum.add(p));
-                if (b != null) b.forEach(p -> sum.add(p));
-            }
-
-            @Override
-            public int getCount() {
-                return sum.size();
-            }
-
-            @Override
-            public Stream<PalindromeModel> stream() {
-                return sum.stream();
-            }
-
-            @Override
-            public Iterator<PalindromeModel> iterator() {
-                return sum.iterator();
-            }
-        };
-    }
-
-    class MergePalindromeMatcher implements PalindromeMatcher {
-
-        private Map<Object, PalindromeModel> map = new HashMap<>();
-
-        public MergePalindromeMatcher() {}
-
-        public MergePalindromeMatcher(Map<Object, PalindromeModel> map) {
-            this.map = map;
-        }
-
-        private void merge(PalindromeMatcher matcher) {
-            matcher.forEach(p -> {
-                if (map.containsKey(p.getMidlePosition())) {
-                    PalindromeModel o = map.get(p.getMidlePosition());
-                    if (evalutor.evaluate(o, p)) {
-                        map.put(p.getMidlePosition(), p);
-                    }
-                } else {
-                    map.put(p.getMidlePosition(), p);
-                }
-            });
-        }
-
-
-        @Override
-        public int getCount() {
-            return map.size();
-        }
-
-        @Override
-        public Stream<PalindromeModel> stream() {
-            return map.values().stream();
-        }
-
-        @Override
-        public Iterator<PalindromeModel> iterator() {
-            return map.values().iterator();
-        }
-    }
-
-    public interface PalindromeMergeEvalutor {
-
-        boolean evaluate(PalindromeModel first, PalindromeModel second);
-
-    }
-
-    private static final class FilterSignature {
-
-        public final int palindromeStart;
-        public final int oppositeStart;
-
-        public FilterSignature(int palindromeStart, int oppositeStart) {
-            this.palindromeStart = palindromeStart;
-            this.oppositeStart = oppositeStart;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) return true;
-            if (o == null || getClass() != o.getClass()) return false;
-            FilterSignature that = (FilterSignature) o;
-            return palindromeStart == that.palindromeStart &&
-                    oppositeStart == that.oppositeStart;
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(palindromeStart, oppositeStart);
-        }
-    }
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetector.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetector.java
deleted file mode 100644
index 116218d..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetector.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-
-/**
- * Created by Honza on 24. 7. 2015.
- */
-public interface PalindromeDetector {
-
-    PalindromeMatcher findPalindrome(SequenceData sequence);
-
-    void setAtatFilter(boolean atatFilter);
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetectorBuilder.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetectorBuilder.java
deleted file mode 100644
index 68a691e..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeDetectorBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import java.util.SortedSet;
-
-/**
- * Created by xkoloma1 on 06.10.2015.
- */
-public interface PalindromeDetectorBuilder {
-
-    PalindromeDetector getPalindromeDetector(SortedSet<Integer> size, SortedSet<Integer> spacers, SortedSet<Integer> mismatches);
-
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeMatcher.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeMatcher.java
deleted file mode 100644
index 4fe6bdb..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/PalindromeMatcher.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-
-import java.util.stream.Stream;
-
-/**
- * Created by Honza on 29. 7. 2015.
- */
-public interface PalindromeMatcher extends Iterable<PalindromeModel> {
-
-    int getCount();
-
-    Stream<PalindromeModel> stream();
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/Simple2PalindromeDetector.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/Simple2PalindromeDetector.java
deleted file mode 100644
index 34b0a61..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/Simple2PalindromeDetector.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-import cz.mendelu.dnaAnalyser.sequence.NucleicBuffer;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.SortedSet;
-
-/**
- * Created by xkoloma1 on 27. 7. 2015.
- */
-public class Simple2PalindromeDetector implements PalindromeDetector {
-
-    private static final Logger LOG = LoggerFactory.getLogger(Simple2PalindromeDetector.class);
-
-    private final int size;
-
-    private final SortedSet<Integer> spacers;
-
-    private final SortedSet<Integer> mismatches;
-
-    private boolean cycleMode = false;
-
-    private boolean atatFilter = true;
-
-    public Simple2PalindromeDetector(int size, SortedSet<Integer> spacers, SortedSet<Integer> mismatches) {
-        LOG.debug("Create: size = {}, spacer = {}, mismatches = {}", size, spacers, mismatches);
-        this.size = size;
-        this.spacers = spacers;
-        this.mismatches = mismatches;
-    }
-
-    @Override
-    public void setAtatFilter(boolean atatFilter) {
-        this.atatFilter = atatFilter;
-    }
-
-    @Override
-    public PalindromeMatcher findPalindrome(SequenceData sequence) {
-        SimplePalindromeDetector.SimplePalindromeMatcher palindromeMatcher = new SimplePalindromeDetector.SimplePalindromeMatcher();
-        Integer nextSequencePosition, mismatche;
-        NucleicBuffer testedSequence, oppositSequence, nextSequence;
-        int searchToPosition = sequence.getLength(); /* Pokud je povoleno cyklicke
-            hledání, je sekvence prohledana az nakonec, jinak se prohledani zastavi pred tak, aby nebyli nalezeny
-            palindromy mimo delku sekvence. */
-
-        for (int i = 0; i < searchToPosition; i++) { // Cyklu prochazim cely genom
-            testedSequence = getSubSeqvence(sequence, i);
-
-            // pokud se maji filtrovat atat sekvence, jsou atomaticky vyrazeny z vysledku.
-            if (atatFilter && AtatPalindromeDetector.isAtat(testedSequence)) continue;
-
-            oppositSequence = testedSequence.revert();
-
-            for (int spacer : spacers) { // Postupne natahuji mezeru a porovnavam shodu
-                nextSequencePosition = i + size + spacer;
-                if (isSubSeqvenceToComapere(sequence, nextSequencePosition)) {
-                    nextSequence = getSubSeqvence(sequence, nextSequencePosition);
-
-                    // pokud je další sekvence, jsou atomaticky vyrazeny z vysledku.
-                    if (atatFilter && AtatPalindromeDetector.isAtat(testedSequence)) continue;
-                    mismatche = oppositSequence.mismatches(nextSequence);
-                    if (mismatche != null && mismatches.contains(mismatche)) { // Pokud jsem nalezl odpovidaji sekvenci pridam ji do vysledku
-                        palindromeMatcher.add(new PalindromeModel(sequence, i, size, spacer, mismatche));
-                        break; // Ukonceni cyklu zvytsujiho mezeru
-                    }
-                }
-            }
-        }
-        LOG.debug("AnalysePalindrome for size {} done, found {}", size, palindromeMatcher.getCount());
-        return palindromeMatcher;
-    }
-
-    private boolean isSubSeqvenceToComapere(SequenceData sequence, int nextSequencePosition) {
-        return (cycleMode)
-                ? true
-                : sequence.getLength() < nextSequencePosition + size;
-    }
-
-    private NucleicBuffer getSubSeqvence(SequenceData sequence, int nextSequencePosition) {
-        return sequence.getBuffer(nextSequencePosition, size);
-    }
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/SimplePalindromeDetector.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/SimplePalindromeDetector.java
deleted file mode 100644
index e7b5693..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/detector/SimplePalindromeDetector.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.detector;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-
-import cz.mendelu.dnaAnalyser.sequence.NucleicBuffer;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Stream;
-
-/**
- * Created by xkoloma1 on 27. 7. 2015.
- */
-public class SimplePalindromeDetector implements PalindromeDetector {
-
-    private static final Logger LOG = LoggerFactory.getLogger(SimplePalindromeDetector.class);
-
-    private final int size;
-
-    private final int spacer;
-
-    private final int mismatches;
-
-    public SimplePalindromeDetector(int size, int spacer, int mismatches) {
-        LOG.debug("Create: size = {}, spacer = {}, mismatches = {}", size, spacer, mismatches);
-        this.size = size;
-        this.spacer = spacer;
-        this.mismatches = mismatches;
-    }
-
-    @Override
-    public PalindromeMatcher findPalindrome(SequenceData sequence) {
-        SimplePalindromeMatcher palindromeMatcher = new SimplePalindromeMatcher();
-        Integer mismatche;
-        NucleicBuffer testedSequence, oppositeSequence, nextSequence;
-        if(sequence.getLength() >= (size + spacer + size)) {
-            for (int i = 0; i < sequence.getLength() - (size + spacer + size - 1); i++) {
-                testedSequence = sequence.getBuffer(i, size);
-                oppositeSequence = testedSequence.revert();
-                nextSequence = sequence.getBuffer(i + size + spacer, size);
-                mismatche = oppositeSequence.mismatches(nextSequence);
-                if (mismatche != null && mismatche == mismatches) {
-                    palindromeMatcher.add(new PalindromeModel(sequence, i, size, spacer, mismatches));
-                }
-            }
-        }
-        LOG.info("AnalysePalindrome done, found: {}", palindromeMatcher.getCount());
-        return palindromeMatcher;
-    }
-
-    @Override
-    public void setAtatFilter(boolean atatFilter) {
-        // Ignore
-    }
-
-    public static class SimplePalindromeMatcher implements PalindromeMatcher {
-
-        private List<PalindromeModel> palindromeModels = new LinkedList<>();
-
-        void add(PalindromeModel palindromeModel) {
-            palindromeModels.add(palindromeModel);
-        }
-
-        @Override
-        public int getCount() {
-            return palindromeModels.size();
-        }
-
-        @Override
-        public Stream<PalindromeModel> stream() {
-            return palindromeModels.stream();
-        }
-
-        @Override
-        public Iterator<PalindromeModel> iterator() {
-            return palindromeModels.iterator();
-        }
-    }
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/NumberRange.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/NumberRange.java
deleted file mode 100644
index 42829f7..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/NumberRange.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.model;
-
-import java.util.Collections;
-import java.util.NavigableSet;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Created by xkoloma1 on 28. 7. 2015.
- */
-public class NumberRange {
-
-    private static final Pattern RE_NUMBER = Pattern.compile("^\\d+$");
-    private static final Pattern RE_RANGE = Pattern.compile("^(\\d+)-(\\d+)$");
-
-    private final String input;
-
-    private final NavigableSet<Integer> values;
-
-    public NumberRange(int min, int max) {
-        this.input = min + "-" + max;
-        this.values = new TreeSet<>();
-
-        for (int i = min; i <= max; i++) {
-            values.add(i);
-        }
-    }
-
-    public NumberRange(String input) {
-        this.input = input.trim();
-        this.values = new TreeSet<>();
-
-        String[] parts = input.trim().split("\\s*,\\s*");
-        Matcher matcher;
-        for (String part : parts) {
-            matcher = RE_NUMBER.matcher(part);
-            if (matcher.find()) {
-                values.add(Integer.parseInt(part));
-                continue;
-            }
-
-            matcher = RE_RANGE.matcher(part);
-            if (matcher.find()) {
-                int min = Integer.parseInt(matcher.group(1));
-                int max = Integer.parseInt(matcher.group(2));
-                for (int i = min; i <= max; i++) {
-                    values.add(i);
-                }
-                continue;
-            }
-        }
-    }
-
-    public NavigableSet<Integer> getValues() {
-        return Collections.unmodifiableNavigableSet(values);
-    }
-
-    public String toString() {
-        return input;
-    }
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/PalindromeModel.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/PalindromeModel.java
deleted file mode 100644
index 7ff0755..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/PalindromeModel.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.model;
-
-
-import cz.mendelu.dnaAnalyser.sequence.NucleicBuffer;
-import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
-import cz.mendelu.dnaAnalyser.sequence.nucleotide.Nucleotide;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created by Honza on 24. 7. 2015.
- */
-public class PalindromeModel implements Iterable<PalindromeModel.Entry>/*, SubSequence*/ {
-
-    public static final int SIZE_MARGIN = 5;
-
-    private final SequenceData sequenceData;
-
-    private final int position;
-    private final int size;
-    private final int spacer;
-    private final int mismatches;
-
-    public PalindromeModel(SequenceData sequenceData, int positions, int size, int spacer, int mismatches) {
-        this.sequenceData = sequenceData;
-        this.position = positions;
-        this.size = size;
-        this.spacer = spacer;
-        this.mismatches = mismatches;
-    }
-
-    /*
-        public Sequence getBefore() {
-            int beforePosition = (position < SIZE_MARGIN) ? 0 : position - SIZE_MARGIN;
-            int beforeSize = (position < SIZE_MARGIN) ? position : SIZE_MARGIN;
-            return genom.getSequence(beforePosition, beforeSize);
-        }
-
-    */
-    public NucleicBuffer getSequence() {
-        return sequenceData.getBuffer(position, size);
-    }
-
-
-    public NucleicBuffer getSpacer() {
-        return sequenceData.getBuffer(position + size, spacer);
-    }
-
-
-    public NucleicBuffer getOpposite() {
-        return sequenceData.getBuffer(position + size + spacer, size);
-    }
-    /*
-    public Sequence getAfter() {
-        int afterPosition = position + size + spacer + size;
-        int afterSize = (afterPosition > genom.getLength()) // Otestuji, zda pozice konce nalezeneho palindromu nekonci na zacatku genomu, jinymy slovy zda se nejedna o cyklu
-                ? SIZE_MARGIN // Jde o cyklicky genom -> plna delka
-                : (genom.getLength() > afterPosition + SIZE_MARGIN) // Nejde, pak vyberu zbytek do konce
-                        ? SIZE_MARGIN // Tady nezasahu je do konce
-                        : genom.getLength() - afterPosition; // Tady zasahuje a beru jen cast
-        return genom.getSequence(afterPosition, afterSize);
-    }
-    */
-
-    public float getMidlePosition() {
-        return position + size + (spacer / 2f);
-    }
-
-
-    @Override
-    public Iterator<Entry> iterator() {
-        List<Entry> entries = new ArrayList<>();
-        Iterator<Nucleotide> seq = getSequence();
-        Iterator<Nucleotide> ops =  getOpposite().revert();
-        // Nejprve vytvorim dvojice z sekvence a jejiho protejsku
-        while (seq.hasNext() && ops.hasNext()) {
-            entries.add(new Entry(seq.next(), ops.next()));
-        }
-        // Pote pridam spacer, ale bez protejsku
-        getSpacer().forEachRemaining(nuclid -> entries.add(new Entry(nuclid, Nucleotide.NONE)));
-
-        // Z vytvorene sekvence vradim iterator
-        // + obalim zamcenym listem, abych zabranil odsranovani polozek
-        return Collections.unmodifiableList(entries).iterator();
-    }
-
-    public Iterator<Entry> linearFormIterator() {
-        List<Entry> entries = new ArrayList<>();
-        getSequence().forEachRemaining(b -> entries.add(new Entry(b, b.supplement(sequenceData.getType()))));
-        getSpacer().forEachRemaining(b -> entries.add(new Entry(b, b.supplement(sequenceData.getType()))));
-        getOpposite().forEachRemaining(b -> entries.add(new Entry(b, b.supplement(sequenceData.getType()))));
-        // Z vytvorene sekvence vradim iterator
-        // + obalim zamcenym listem, abych zabranil odsranovani polozek
-        return Collections.unmodifiableList(entries).iterator();
-    }
-
-
-    public long getMismatches() {
-        return mismatches;
-    }
-
-    public int getPosition() {
-        return position;
-    }
-
-    public int getDirection() {
-        return 0;
-    }
-
-    public int getSize() {
-        return size;
-    }
-
-    public int getLength() {
-        return 2 * size + spacer;
-    }
-
-    @Data
-    public static class Entry {
-
-        private final Nucleotide nuclid;
-
-        private final Nucleotide oposite;
-    }
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/StabilityModel.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/StabilityModel.java
deleted file mode 100644
index 69a61b8..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/model/StabilityModel.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.model;
-
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.stability.NNModelStabilityCalculator;
-import cz.mendelu.dnaAnalyser.analyse.palindrome.stability.StabilityCalculator;
-
-import java.util.function.Supplier;
-
-public enum StabilityModel {
-
-    NN_MODEL_STABILITY(NNModelStabilityCalculator::new);
-
-    private Supplier<StabilityCalculator> supplier;
-
-    StabilityModel(Supplier<StabilityCalculator> supplier) {
-        this.supplier = supplier;
-    }
-
-    public StabilityCalculator stabilityCalculator() {
-        return supplier.get();
-    }
-
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/NNModelStabilityCalculator.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/NNModelStabilityCalculator.java
deleted file mode 100644
index 5506d78..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/NNModelStabilityCalculator.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.stability;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-public class NNModelStabilityCalculator implements StabilityCalculator {
-
-    private static final Map<String, Double> table = new HashMap<>();
-    static {
-        table.put("AA/TT", -1.00);
-        table.put("AT/TA", -0.88);
-        table.put("AC/TG", -1.45);
-        table.put("AG/TC", -1.00);
-
-        table.put("TA/AT", -0.58);
-        table.put("TT/AA", -1.00);
-        table.put("TC/AG", -1.00);
-        table.put("TG/AC", -1.45);
-
-        table.put("CA/GT", -1.45);
-        table.put("CT/GA", -1.28);
-        table.put("CC/GG", -1.84);
-        table.put("CG/GC", -2.17);
-
-        table.put("GA/CT", -1.30);
-        table.put("GT/CA", -1.44);
-        table.put("GC/CG", -2.24);
-        table.put("GG/CC", -1.84);
-
-        table.put("G-C", 0.98);
-        table.put("C-G", 0.98);
-        table.put("A-T", 1.03);
-        table.put("T-A", 1.03);
-    }
-
-    @Override
-    public double calculateCruciForm(PalindromeModel palindromeModel) {
-        return calculate(palindromeModel.iterator());
-    }
-
-    @Override
-    public double calculateLinearForm(PalindromeModel palindromeModel) {
-        return calculate(palindromeModel.linearFormIterator());
-    }
-
-    private double calculate(Iterator<PalindromeModel.Entry> i) {
-        PalindromeModel.Entry first = i.next();
-        PalindromeModel.Entry second;
-
-        double sum = table.getOrDefault(makeKey(first), 0.0);
-        while (i.hasNext()) {
-            second = i.next();
-            String key = makeKey(first, second);
-            double value = table.getOrDefault(key, 0.0);
-            sum += value;
-            first = second;
-        }
-        sum += table.getOrDefault(makeKey(first), 0.0);
-        return sum;
-    }
-
-    private String makeKey(PalindromeModel.Entry first, PalindromeModel.Entry second) {
-        return first.getNuclid().name()
-                + second.getNuclid().name()
-                + "/"
-                + first.getOposite().name()
-                + second.getOposite().name();
-    }
-
-    private String makeKey(PalindromeModel.Entry entry) {
-        return entry.getNuclid().name()
-                + "-"
-                + entry.getOposite().name();
-    }
-}
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/StabilityCalculator.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/StabilityCalculator.java
deleted file mode 100644
index c39b02f..0000000
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/palindrome/stability/StabilityCalculator.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.mendelu.dnaAnalyser.analyse.palindrome.stability;
-
-import cz.mendelu.dnaAnalyser.analyse.palindrome.model.PalindromeModel;
-
-/**
- * Created by xkoloma1 on 19.11.2015.
- */
-public interface StabilityCalculator {
-
-    double calculateCruciForm(PalindromeModel palindromeModel);
-
-    double calculateLinearForm(PalindromeModel palindromeModel);
-}
\ No newline at end of file
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/overlay/OverlayService.java b/src/main/java/cz/mendelu/dnaAnalyser/overlay/OverlayService.java
index 4877410..521c8a0 100644
--- a/src/main/java/cz/mendelu/dnaAnalyser/overlay/OverlayService.java
+++ b/src/main/java/cz/mendelu/dnaAnalyser/overlay/OverlayService.java
@@ -3,7 +3,6 @@ package cz.mendelu.dnaAnalyser.overlay;
 import cz.mendelu.dnaAnalyser.analyse.g4hunter.G4Hunter;
 import cz.mendelu.dnaAnalyser.analyse.g4hunter.G4HunterService;
 import cz.mendelu.dnaAnalyser.analyse.g4hunter.quadruplex.*;
-import cz.mendelu.dnaAnalyser.analyse.palindrome.PalindromeAnalyse;
 import cz.mendelu.dnaAnalyser.analyse.rloopr.*;
 import cz.mendelu.dnaAnalyser.sequence.annotation.Annotation;
 import cz.mendelu.dnaAnalyser.sequence.annotation.AnnotationService;
@@ -163,8 +162,6 @@ public class OverlayService {
             }
         }else if (analyse instanceof Rloop){
             result = rloopDataSessionService.annotationOverlay(RloopMapper.class, annotation, session, result, groupBy, labelGroupBy, intervals, groupIntervals, from, to);
-        }else if (analyse instanceof PalindromeAnalyse){
-            //TODO PalindromeDataSessionService?
         }
 
         return result;
-- 
GitLab