1 public class Genome extends Thread {
9 // add segments, random, etc to member variables
10 // include in constructor
11 // allows for passing in thread run function
15 Sequencer sequencerPtr;
23 randomPtr = new Random();
24 randomPtr.random_alloc();
25 randomPtr.random_seed(0);
27 genePtr = new Gene(geneLength);
28 genePtr.create(randomPtr);
30 segmentsPtr = new Segments(segmentLength, minNumSegment);
31 segmentsPtr.create(genePtr, randomPtr);
33 sequencerPtr = new Sequencer(geneLength, segmentLength, segmentsPtr);
36 Genome(int myThreadid, int myGeneLength, int mySegLength, int myMinNumSegs, int myNumThread, Random myRandomPtr, Gene myGenePtr, Segments mySegmentsPtr, Sequencer mySequencerPtr) {
37 threadid = myThreadid;
38 geneLength = myGeneLength;
39 segmentLength = mySegLength;
40 minNumSegment = myMinNumSegs;
41 numThread = myNumThread;
43 randomPtr = myRandomPtr;
45 segmentsPtr = mySegmentsPtr;
46 sequencerPtr = mySequencerPtr;
49 public void parseCmdLine(String args[]) {
52 while (i < args.length && args[i].startsWith("-")) {
55 if(arg.equals("-g")) {
57 this.geneLength = new Integer(args[i++]).intValue();
59 } else if(arg.equals("-s")) {
61 this.segmentLength = new Integer(args[i++]).intValue();
63 } else if(arg.equals("-n")) {
65 this.minNumSegment = new Integer(args[i++]).intValue();
67 } else if(arg.equals("-t")) {
69 this.numThread = new Integer(args[i++]).intValue();
77 Barrier.enterBarrier();
78 Sequencer.run(threadid, numThread, randomPtr, sequencerPtr);
79 Barrier.enterBarrier();
82 public static void main(String x[]){
84 System.out.print("Creating gene and segments... ");
85 Genome g = new Genome(x);
87 System.out.println("done.");
88 System.out.println("Gene length = " + g.genePtr.length);
89 System.out.println("Segment length = " + g.segmentsPtr.length);
90 System.out.println("Number segments = " + g.segmentsPtr.contentsPtr.size());
91 System.out.println("Number threads = " + g.numThread);
94 Barrier.setBarrier(g.numThread);
96 /* Create and Start Threads */
98 String gene = g.genePtr.contents;
99 Genome[] gn = new Genome[g.numThread];
101 for(int i = 1; i<g.numThread; i++) {
102 gn[i] = new Genome(i, g.geneLength, g.segmentLength, g.minNumSegment, g.numThread, g.randomPtr, g.genePtr, g.segmentsPtr, g.sequencerPtr);
105 System.out.print("Sequencing gene... ");
107 for(int i = 1; i<g.numThread; i++) {
111 Barrier.enterBarrier();
112 Sequencer.run(0, g.numThread, g.randomPtr, g.sequencerPtr);
113 Barrier.enterBarrier();
116 System.out.println("done.");
120 String sequence = g.sequencerPtr.sequence;
121 boolean result = (gene.compareTo(sequence) == 0) ? true:false;
122 System.out.println("Sequence matches gene: " + (result ? "yes" : "no"));
125 // System.out.println("gene = " + gene);
126 // System.out.println("sequence = " + sequence);