Skip to content
Snippets Groups Projects
BestFoldingToConsole.java 2.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • istkabra's avatar
    istkabra committed
    package Visualization.Visualizers;
    
    import Enums.State;
    import Interfaces.Visualizer;
    
    import MainClasses.Candidate;
    
    istkabra's avatar
    istkabra committed
    import MainClasses.Config;
    
    import MainClasses.GeneticAlgorithm;
    
    istkabra's avatar
    istkabra committed
    import MainClasses.Vertex;
    import Visualization.Cell;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    
    public class BestFoldingToConsole implements Visualizer {
    
        final int[] isHydrophobic;
    
        Config config;
    
        public BestFoldingToConsole(int[] isHydrophobic, Config config) {
    
            this.isHydrophobic = isHydrophobic;
    
            this.config = config;
    
        public void drawProtein(Candidate[] generation, GeneticAlgorithm geneticAlgorithm) {
            Candidate bestCandidateOfGeneration = generation[0];
            for (Candidate evaluatedCandidate : generation) {
                if(bestCandidateOfGeneration.getFitness() < evaluatedCandidate.getFitness()){
                    bestCandidateOfGeneration=evaluatedCandidate;
                }
            }
    
            ArrayList<Vertex> vertexList = bestCandidateOfGeneration.getVertices();
    
            Cell[][] cellArray = Visualizer.convertProteinTo2DArray(vertexList, isHydrophobic);
    
    istkabra's avatar
    istkabra committed
    
            for (int yIndex = cellArray.length-1; yIndex >= 0; yIndex--) {
                for (int xIndex = 0; xIndex < cellArray[0].length; xIndex++) {
                    System.out.print(convertCellToString(cellArray[yIndex][xIndex]));
                }
                System.out.println();
            }
            System.out.println();
        }
    
        private String convertCellToString(Cell cell) {
    
            State cellState = cell.getRelevantDrawState ();
    
            switch (cellState) {
                case Empty:
    
                    return config.getConsoleEmpty();
    
    istkabra's avatar
    istkabra committed
    
                case Hydrophobic:
    
                    return config.getConsoleHydrophobic();
    
    istkabra's avatar
    istkabra committed
    
                case Hydrophilic:
    
                    return config.getConsoleHydrophilic();
    
    istkabra's avatar
    istkabra committed
    
                case HydrophobicMulti:
    
                    return config.getConsoleHydrophobicMulti();
    
    istkabra's avatar
    istkabra committed
    
                case HydrophilicMulti:
    
                    return config.getConsoleHydrophilicMulti();
    
    istkabra's avatar
    istkabra committed
    
                case Mixed:
    
                    return config.getConsoleMixed();
    
    istkabra's avatar
    istkabra committed
    
                case ConnectionVertical:
    
                    return config.getConsoleConnectionVertical();
    
    istkabra's avatar
    istkabra committed
    
                case ConnectionHorizontal:
    
                    return config.getConsoleConnectionHorizontal();
    
    istkabra's avatar
    istkabra committed
    
            }
            // Fallback
    
            return config.getConsoleEmpty();