📄 forward_std.java
字号:
v.setInitialEmissionProbs(distribution); } } public void setDistribType(int nr, int distribType, double[] distribution) { switch(nr) { case 1: this.distribType = distribType; break; case 2: this.distribType_2 = distribType; break; case 3: this.distribType_3 = distribType; break; case 4: this.distribType_4 = distribType; break; } for(ListIterator i = (ListIterator)theVertices.iterator();i.hasNext();) { Vertex v = (Vertex)i.next(); v.setInitialEmissionProbs(nr,distribution); } } public void setDistribType(int distribType) { this.distribType = distribType; for(ListIterator i = (ListIterator)theVertices.iterator();i.hasNext();) { Vertex v = (Vertex)i.next(); v.setInitialEmissionProbs(distribType); } } public void setDistribType(int nr, int distribType) { switch(nr) { case 1: this.distribType = distribType; break; case 2: this.distribType_2 = distribType; break; case 3: this.distribType_3 = distribType; break; case 4: this.distribType_4 = distribType; break; } for(ListIterator i = (ListIterator)theVertices.iterator();i.hasNext();) { Vertex v = (Vertex)i.next(); v.setInitialEmissionProbs(nr,distribType); } } public void setPoisson(double m) { int v_nr = 1; Vertex cur = null; ListIterator i = theVertices.listIterator(); while(i.hasNext()) { cur = (Vertex)i.next(); int vNr = cur.getNumber(); if(v_nr == intervalStart - 1) { long k; double prob; double sum = 0.0; for(k = 0; k < intervalEnd - intervalStart; k++) { prob = Math.exp(0.0 - m) * Math.pow(m,(double)k) / ((double)fac(k)); sum += prob; cur.setAndLockTransitionProbability(vNr + ((int)k) + 1, prob); } prob = 1.0 - sum; cur.setAndLockTransitionProbability(vNr + ((int)k) + 1, prob); break; } v_nr++; } transDistribType = PO; } public void setPoisson(double m, int rev) { int v_nr = 1; Vertex cur = null; ListIterator i = theVertices.listIterator(); while(i.hasNext()) { cur = (Vertex)i.next(); int vNr = cur.getNumber(); if(v_nr == intervalStart - 1) { long k; long kRev = ((long)intervalEnd - intervalStart) - 1; double prob; double sum = 0.0; for(k = 0; k < intervalEnd - intervalStart; k++) { kRev = ((long)intervalEnd - intervalStart) - k - 1; prob = Math.exp(0.0 - m) * Math.pow(m,((double)kRev)) / ((double)fac(kRev)); sum += prob; cur.setAndLockTransitionProbability(vNr + ((int)k) + 1, prob); } prob = 1.0 - sum; cur.setAndLockTransitionProbability(vNr + ((int)k) + 1, prob); break; } v_nr++; } transDistribType = PO; } public void setBinomial(int p) { /* not implemented yet */ } public void setPriorfile(String priorfile) { this.priorfile = priorfile; } public void setPriorfile(int nr, String priorfile) { switch(nr) { case 1: this.priorfile = priorfile; break; case 2: this.priorfile_2 = priorfile; break; case 3: this.priorfile_3 = priorfile; break; case 4: this.priorfile_4 = priorfile; } } public void setTransPriorfile(String priorfile) { this.transPriorfile = priorfile; } public void setInternalInitDistrib(InternalInitDistrib iid) { if(iid.getDistrib().equals("U")) { } else if(iid.getDistrib().equals("P")) { if(iid.getPar2() < 0.0) { setPoisson(iid.getPar1(), 1); } else { setPoisson(iid.getPar1()); } } else if(iid.getDistrib().equals("B")) { setBinomial(((int)iid.getPar1())); } } public boolean write(BufferedWriter writer) { try { String s = "Module: " + name + "\n"; s = s + "Type: Forward_std\n"; s = s + "NrVertices: " + nrVertices + "\n"; s = s + "Emission prior file: " + priorfile + "\n"; s = s + "Transition prior file: " + transPriorfile + "\n\n"; writer.write(s); for(ListIterator li = (ListIterator)theVertices.iterator(); li.hasNext();) { Vertex v = (Vertex)li.next(); s = "Vertex " + v.getNumber() + ":\n"; s = s + "Vertex type: " + v.typeAsString() + "\n"; s = s + "Vertex label: " + label + "\n"; s = s + "Transition prior scaler: " + v.getTransPriorScaler() + "\n"; s = s + "Emission prior scaler: " + v.getEmissPriorScaler() + "\n"; s = s + "Nr transitions = " + v.getNrOfTransitions() + "\n"; s = s + "Nr end transitions = " + v.getNrOfEndTransitions() + "\n"; s = s + "Nr emissions = " + HMM.alphabet.length + "\n"; s = s + "Transition probabilities\n"; writer.write(s); for(ListIterator i = v.getTransitions(); i.hasNext();) { Transition t = (Transition)i.next(); s = "\tVertex " + t.toVertex + ": " + t.probability + "\n"; writer.write(s); } s = "End transition probabilities\n"; writer.write(s); for(ListIterator i = v.getEndTransitions(); i.hasNext();) { Transition t = (Transition)i.next(); s = "\tVertex " + t.toVertex + ": " + t.probability + "\n"; writer.write(s); } s = "Emission probabilities\n"; writer.write(s); for(int i = 0; i < HMM.alphabet.length; i++) { s = "\t" + HMM.alphabet[i] + ": " + v.getEmissionProb(i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); } s = "-------------------------------------------------------\n"; writer.write(s); return true; } catch (IOException e) { return false; } } private long fac(long k) { if(k == 1 || k == 0) { return 1; } else { return fac(k-1) * k; } } public boolean write(int nrOfAlphabets, BufferedWriter writer) { try { String s = "Module: " + name + "\n"; s = s + "Type: Forward_std\n"; s = s + "NrVertices: " + nrVertices + "\n"; if(nrOfAlphabets == 1) { s = s + "Emission prior file: " + priorfile + "\n"; } else { s = s + "Emission prior file 1: " + priorfile + "\n"; s = s + "Emission prior file 2: " + priorfile_2 + "\n"; if(nrOfAlphabets > 2) { s = s + "Emission prior file 3: " + priorfile_3 + "\n"; } if(nrOfAlphabets > 3) { s = s + "Emission prior file 4: " + priorfile_4 + "\n"; } } s = s + "Transition prior file: " + transPriorfile + "\n\n"; writer.write(s); for(ListIterator li = (ListIterator)theVertices.iterator(); li.hasNext();) { Vertex v = (Vertex)li.next(); s = "Vertex " + v.getNumber() + ":\n"; s = s + "Vertex type: " + v.typeAsString() + "\n"; s = s + "Vertex label: " + label + "\n"; s = s + "Transition prior scaler: " + v.getTransPriorScaler() + "\n"; if(nrOfAlphabets == 1) { s = s + "Emission prior scaler: " + v.getEmissPriorScaler() + "\n"; } else { s = s + "Emission prior scaler 1: " + v.getEmissPriorScaler(1) + "\n"; s = s + "Emission prior scaler 2: " + v.getEmissPriorScaler(2) + "\n"; if(nrOfAlphabets > 2) { s = s + "Emission prior scaler 3: " + v.getEmissPriorScaler(3) + "\n"; } if(nrOfAlphabets > 3) { s = s + "Emission prior scaler 4: " + v.getEmissPriorScaler(4) + "\n"; } } s = s + "Nr transitions = " + v.getNrOfTransitions() + "\n"; s = s + "Nr end transitions = " + v.getNrOfEndTransitions() + "\n"; if(nrOfAlphabets == 1) { s = s + "Nr emissions = " + HMM.alphabet.length + "\n"; } else { s = s + "Nr emissions 1 = " + HMM.alphabet.length + "\n"; s = s + "Nr emissions 2 = " + HMM.alphabet_2.length + "\n"; if(nrOfAlphabets > 2) { s = s + "Nr emissions 3 = " + HMM.alphabet_3.length + "\n"; } if(nrOfAlphabets > 3) { s = s + "Nr emissions 4 = " + HMM.alphabet_4.length + "\n"; } } s = s + "Transition probabilities\n"; writer.write(s); for(ListIterator i = v.getTransitions(); i.hasNext();) { Transition t = (Transition)i.next(); s = "\tVertex " + t.toVertex + ": " + t.probability + "\n"; writer.write(s); } s = "End transition probabilities\n"; writer.write(s); for(ListIterator i = v.getEndTransitions(); i.hasNext();) { Transition t = (Transition)i.next(); s = "\tVertex " + t.toVertex + ": " + t.probability + "\n"; writer.write(s); } if(nrOfAlphabets == 1) { s = "Emission probabilities\n"; writer.write(s); for(int i = 0; i < HMM.alphabet.length; i++) { s = "\t" + HMM.alphabet[i] + ": " + v.getEmissionProb(i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); } else { s = "Emission probabilities 1\n"; writer.write(s); for(int i = 0; i < HMM.alphabet.length; i++) { s = "\t" + HMM.alphabet[i] + ": " + v.getEmissionProb(1,i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); s = "Emission probabilities 2\n"; writer.write(s); for(int i = 0; i < HMM.alphabet_2.length; i++) { s = "\t" + HMM.alphabet_2[i] + ": " + v.getEmissionProb(2,i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); if(nrOfAlphabets > 2) { s = "Emission probabilities 3\n"; writer.write(s); for(int i = 0; i < HMM.alphabet_3.length; i++) { s = "\t" + HMM.alphabet_3[i] + ": " + v.getEmissionProb(3,i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); } if(nrOfAlphabets > 3) { s = "Emission probabilities 4\n"; writer.write(s); for(int i = 0; i < HMM.alphabet_4.length; i++) { s = "\t" + HMM.alphabet_4[i] + ": " + v.getEmissionProb(4,i) + "\n"; writer.write(s); } s = "\n"; writer.write(s); } } } s = "-------------------------------------------------------\n"; writer.write(s); return true; } catch (IOException e) { return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -