String[] labels = new String[13];
PImage[] pics = new PImage[13];
int idx = 0;

// Global μεταβλητές
int inputNo = 21;    // πλήθος input nodes
int hidden1No = 64;  // πλήθος hidden 1 nodes
int hidden2No = 32;  // πλήθος hidden 2 nodes
int hidden3No = 16;  // πλήθος hidden 3 nodes
int outputNo = 3;    // πλήθος output nodes

int testDataNo = 13;      // πλήθος δεδομένων (data rows) για αξιολόγηση

// Επιλογή λειτουργίας του προγράμματος
boolean picSelected = true;
float offset;

void setup()
{
  //size(900, 600);
  fullScreen();

  pics[0] = loadImage("galaxy4.jpg");
  labels[0] = "Galaxy";
  pics[1] = loadImage("galaxy10.jpg");
  labels[1] = "Galaxy";
  pics[2] = loadImage("qso25.jpg");
  labels[2] = "Qso";
  pics[3] = loadImage("qso71.jpg");
  labels[3] = "Qso";
  pics[4] = loadImage("qso264.jpg");
  labels[4] = "Qso";
  pics[5] = loadImage("star33.jpg");
  labels[5] = "Star";
  pics[6] = loadImage("star65.jpg");
  labels[6] = "Star";
  pics[7] = loadImage("galaxy82.jpg");
  labels[7] = "Galaxy";
  pics[8] = loadImage("star146.jpg");
  labels[8] = "Star";
  pics[9] = loadImage("star162.jpg");
  labels[9] = "Star";
  pics[10] = loadImage("star173.jpg");
  labels[10] = "Star";
  pics[11] = loadImage("star678.jpg");
  labels[11] = "Star";
  pics[12] = loadImage("star961.jpg");
  labels[12] = "Star";
  println("pics loaded");

  loadWeights("weights1.txt");
  println("weights loaded");

  loadSDSS3a("SDSS_DR18T.csv");
  println("test data loaded");

  normalize2(testData);
  println("test data normalized");

  println("Ready!");

  background(0);

  textSize(30);
  offset = width/3;

}


void draw()
{
  if (picSelected)
  {
    background(0);
 
    if (idx>=0 && idx<=12)
    {
      textSize(30);
      image(pics[idx], offset, 50);

      if (labels[idx] == "Star")
        fill(#46FA23);
      else if (labels[idx] == "Galaxy")
        fill(#F483F5);
      else
        fill(#FAF023);
      text(labels[idx], offset+pics[idx].width+50, 70);

      forwardPass(testData[idx]);
      println("PREDICTION: ", outputs[0], " ", outputs[1], " ", outputs[2]);

      fill(255);   
      text("STAR: ", width/4, 450);
      fill(#46FA23);
      text(str(outputs[0]), width/4 + 80, 450);
      
      fill(255);
      text("GALAXY: ", width/4+280, 450);
      fill(#F483F5);
      text(str(outputs[1]), width/4+400, 450);

      fill(255);
      text("QSO: ", width/4+600, 450);
      fill(#FAF023);
      text(str(outputs[2]), width/4+680, 450);
      
      printInputs(idx);
    }
    else
      idx = 0;
    picSelected = false;
  }
}


void mousePressed()
{
  idx++;
  if (idx == 13)
    idx = 0;
    
  picSelected = true;
}
