public class Nucleotide { String name; color fillcolor; int opacity = 255; float fade; int numAtoms; PdbRecord[] AdenineRecords; String AdenineRecords_url = "dAMP_strip.pdb"; PdbRecord[] CytosineRecords; String CytosineRecords_url = "dCMP_strip.pdb"; PdbRecord[] GuanineRecords; String GuanineRecords_url = "dGMP_strip.pdb"; PdbRecord[] ThymineRecords; String ThymineRecords_url = "TMP_strip.pdb"; int recordcount; int NumCols=7; Atom a = new Atom("A"); Nucleotide (String s){ name = s; } void loadAdenine() { //a.loadCoords(); String[] lines = loadStrings(AdenineRecords_url); AdenineRecords = new PdbRecord[lines.length]; recordcount = 0; // println("there are " + lines.length + "ATOMS"); for (int i = 0; i < lines.length; i++) { String[] peices = splitTokens(lines[i]); if (peices.length == NumCols) { AdenineRecords[recordcount] = new PdbRecord(peices); recordcount++; } } } void loadCytosine() { //a.loadCoords(); String[] lines = loadStrings(CytosineRecords_url); CytosineRecords = new PdbRecord[lines.length]; recordcount = 0; // println("there are " + lines.length + "ATOMS"); for (int i = 0; i < lines.length; i++) { String[] peices = splitTokens(lines[i]); if (peices.length == NumCols) { CytosineRecords[recordcount] = new PdbRecord(peices); recordcount++; } } // println(recordcount); } void loadGuanine() { //a.loadCoords(); String[] lines = loadStrings(GuanineRecords_url); GuanineRecords = new PdbRecord[lines.length]; recordcount = 0; // println("there are " + lines.length + "ATOMS"); for (int i = 0; i < lines.length; i++) { String[] peices = splitTokens(lines[i]); if (peices.length == NumCols) { GuanineRecords[recordcount] = new PdbRecord(peices); recordcount++; } } //println(recordcount); } void loadThymine() { //a.loadCoords(); String[] lines = loadStrings(ThymineRecords_url); ThymineRecords = new PdbRecord[lines.length]; recordcount = 0; //println("there are " + lines.length + "ATOMS"); for (int i = 0; i < lines.length; i++) { String[] peices = splitTokens(lines[i]); if (peices.length == NumCols) { ThymineRecords[recordcount] = new PdbRecord(peices); recordcount++; } } //println(recordcount); } void AdenineDisplay(int x, int y, int z, float br, float br2, float yr, int g) { for (int n = 0; n < recordcount; n++) { pushMatrix(); translate(x, y, z); rotateX(br); rotateZ(br2); rotateY(yr); translate((AdenineRecords[n].x_coord*10+g), AdenineRecords[n].y_coord*10, AdenineRecords[n].z_coord*10); noStroke(); assignOpacity((AdenineRecords[n].x_coord*10+g), AdenineRecords[n].y_coord*10, AdenineRecords[n].z_coord*10); AssignColor(AdenineRecords[n].Chem_Formula, opacity); a.renderAtom(fillcolor, 'A'); a.spinAtom(); //a.moveAtom(); popMatrix(); } } void CytosineDisplay(int x, int y, int z, float br, float br2, float yr, int g) { for (int n = 0; n < recordcount; n++) { pushMatrix(); translate(x, y, z); rotateX(br); rotateZ(br2); rotateY(yr); translate((CytosineRecords[n].x_coord*10+g), CytosineRecords[n].y_coord*10, CytosineRecords[n].z_coord*10); noStroke(); assignOpacity((CytosineRecords[n].x_coord*10+g), CytosineRecords[n].y_coord*10, CytosineRecords[n].z_coord*10); AssignColor(CytosineRecords[n].Chem_Formula, opacity); a.renderAtom(fillcolor, 'C'); a.spinAtom(); //a.moveAtom(); popMatrix(); } } void GuanineDisplay(int x, int y, int z, float br, float br2, float yr, int g) { for (int n = 0; n < recordcount; n++) { pushMatrix(); translate(x, y, z); rotateX(br); rotateZ(br2); rotateY(yr); translate((GuanineRecords[n].x_coord*10+g), GuanineRecords[n].y_coord*10, GuanineRecords[n].z_coord*10); noStroke(); assignOpacity((GuanineRecords[n].x_coord*10+g), GuanineRecords[n].y_coord*10, GuanineRecords[n].z_coord*10); AssignColor(GuanineRecords[n].Chem_Formula, opacity); a.renderAtom(fillcolor, 'G'); a.spinAtom(); //a.moveAtom(); popMatrix(); } } void ThymineDisplay(int x, int y, int z, float br, float br2, int g) { for (int n = 0; n < recordcount; n++) { pushMatrix(); translate(x, y, z); rotateX(br); rotateZ(br2); translate((ThymineRecords[n].x_coord*10+g), ThymineRecords[n].y_coord*10, ThymineRecords[n].z_coord*10); noStroke(); assignOpacity((ThymineRecords[n].x_coord*10+g), ThymineRecords[n].y_coord*10, ThymineRecords[n].z_coord*10); opacity = int(fade); AssignColor(ThymineRecords[n].Chem_Formula, opacity); a.renderAtom(fillcolor, 'T'); a.spinAtom(); //a.moveAtom(); popMatrix(); } } void AssignColor(String x, int o){ if(x.equals("H")){ fillcolor = color(75, 75, 75, o); //Hydrogen } else if (x.equals("O")){ fillcolor = color(125,125,125, o); //Oxygen } else if (x.equals("C")){ fillcolor = color(155,155,155, o); //Carbon } else if (x.equals("N")){ fillcolor = color(100,100,100, o); //Nitrogen } else if (x.equals("P")){ fillcolor = color(200,200,200, o); //Phosphorous } } void assignOpacity(float x, float y, float z){ fade = screenZ(x, y, z); fade = 1-fade; fade = map(fade, 0.0, .1, 0, 255); opacity = int(fade); } }