Newer
Older
package Visualization.Visualizers;
import Enums.State;
import Interfaces.Visualizer;
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;
public BestFoldingToConsole(int[] isHydrophobic, Config config) {
this.isHydrophobic = isHydrophobic;
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);
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.getConsoleHydrophobic();
return config.getConsoleHydrophilic();
return config.getConsoleHydrophobicMulti();
return config.getConsoleHydrophilicMulti();
return config.getConsoleConnectionVertical();
return config.getConsoleConnectionHorizontal();