-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDNA.java
More file actions
76 lines (57 loc) · 2.23 KB
/
DNA.java
File metadata and controls
76 lines (57 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.util.Scanner;
public class DNA {
private int CODON_LENGTH = 3;
public DNA() {
}
public static void main(String[] args) {
System.out.println("--Enter template DNA strand--");
Scanner scanner = new Scanner(System.in);
String template = scanner.nextLine();
scanner.close();
DNA dna = new DNA();
template = dna.process(template);
String newDNA = dna.newStrand(template, true);
String mRNA = dna.newStrand(template, false);
String tRNA = dna.newStrand(mRNA, false);
System.out.println("Template DNA strand: " + template);
System.out.println("Coding DNA strand: " + newDNA);
System.out.println("Processed mRNA strand: " + dna.separateCodons(mRNA));
System.out.println("tRNA anticodons: " + dna.separateCodons(tRNA));
}
public String newStrand(String sequence, boolean isDNA) {
String base;
String strand = "";
for (int i = 0; i < sequence.length(); i++) {
base = sequence.substring(i, i + 1);
strand += complementaryBase(base, isDNA);
}
return strand;
}
public String process(String sequence) {
String[] sequenceArr = sequence.split("");
String base;
for (int i = 0; i < sequence.length(); i++) {
base = sequenceArr[i];
if (complementaryBase(base, true).equals("")) {
sequenceArr[i] = "";
}
}
return String.join("", sequenceArr);
}
public String complementaryBase(String base, boolean isDNA) {
if (base.equals("A") && isDNA) return "T";
else if (base.equals("A") && !isDNA) return "U";
else if (base.equals("T") || base.equals("U")) return "A";
else if (base.equals("C")) return "G";
else if (base.equals("G")) return "C";
return "";
}
public String separateCodons(String sequence) {
String separatedStrand = "";
for (int i = 0; i < sequence.length(); i++) {
separatedStrand += sequence.substring(i, i + 1);
if ((i + 1) % CODON_LENGTH == 0 && i < sequence.length() - 1) separatedStrand += "-";
}
return separatedStrand;
}
}