📄 vertex.java
字号:
emissions[i] = initDistrib[i]; } break; case 2: for(int i = 0; i < emissions_2.length;i++) { emissions_2[i] = initDistrib[i]; } break; case 3: for(int i = 0; i < emissions_3.length;i++) { emissions_3[i] = initDistrib[i]; } break; case 4: for(int i = 0; i < emissions_4.length;i++) { emissions_4[i] = initDistrib[i]; } break; } } public void lock() { if(vertexType == HMM.STANDARD) { vertexType = HMM.LOCKED; } } public void normalizeEmissProbs(int alphabet) { double[] emiss = null; switch(alphabet) { case 1: emiss = emissions; break; case 2: emiss = emissions_2; break; case 3: emiss = emissions_3; break; case 4: emiss = emissions_4; break; } double sum = 0.0; for(int i = 0; i < emiss.length; i++) { sum += emiss[i]; } if(sum != 0.0) { for(int i = 0; i < emiss.length; i++) { emiss[i] = emiss[i] / sum; } } } public void normalizeTransProbs() { double sum = 0.0; for(int i = 0; i < transitionList.size(); i++) { sum += ((Transition)transitionList.get(i)).probability; } if(sum != 0.0) { for(int i = 0; i < transitionList.size(); i++) { ((Transition)transitionList.get(i)).probability = ((Transition)transitionList.get(i)).probability / sum; } } } public void setInitialEmissionProbs(int distribType) { /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions.length; i++) { emissions[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions.length; i++) { emissions[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double sum = 0; for(int i = 0; i < emissions.length; i++) { double initProb = Math.random(); emissions[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions.length; i++) { emissions[i] = emissions[i] / sum; } } } public void setInitialEmissionProbs(int nr, int distribType) { switch(nr) { case 1: /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions.length; i++) { emissions[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions.length; i++) { emissions[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double sum = 0; for(int i = 0; i < emissions.length; i++) { double initProb = Math.random(); emissions[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions.length; i++) { emissions[i] = emissions[i] / sum; } } break; case 2: /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions_2.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions_2.length; double sum = 0; for(int i = 0; i < emissions_2.length; i++) { double initProb = Math.random(); emissions_2[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = emissions_2[i] / sum; } } break; case 3: /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions_3.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions_3.length; double sum = 0; for(int i = 0; i < emissions_3.length; i++) { double initProb = Math.random(); emissions_3[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = emissions_3[i] / sum; } } break; case 4: /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions_4.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions_4.length; double sum = 0; for(int i = 0; i < emissions_4.length; i++) { double initProb = Math.random(); emissions_4[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = emissions_4[i] / sum; } } break; } } public void setPreliminaryInitialEmissionProbs(int distribType) { /* Initialize emission probabilities to zero for all possible emissions */ if(distribType == HMM.ZERO) { if(vertexType != HMM.START && vertexType != HMM.END) { vertexType = HMM.SILENT; } for(int i = 0; i < emissions.length; i++) { emissions[i] = 0.0; } for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = 0.0; } for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = 0.0; } for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = 0.0; } } /* Initialize emission probabilities evenly for all possible emissions */ else if (distribType == HMM.EVEN) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double initProb = (double)1/nrEmissions; for(int i = 0; i < emissions.length; i++) { emissions[i] = initProb; } nrEmissions = emissions_2.length; if(nrEmissions != 0) { initProb = (double)1/nrEmissions; } else { initProb = 0.0; } for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = initProb; } nrEmissions = emissions_3.length; if(nrEmissions != 0) { initProb = (double)1/nrEmissions; } else { initProb = 0.0; } for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = initProb; } nrEmissions = emissions_4.length; if(nrEmissions != 0) { initProb = (double)1/nrEmissions; } else { initProb = 0.0; } for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = initProb; } } /* Initialize emission probabilities randomly */ else if (distribType == HMM.RANDOM) { vertexType = HMM.STANDARD; int nrEmissions = emissions.length; double sum = 0; for(int i = 0; i < emissions.length; i++) { double initProb = Math.random(); emissions[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions.length; i++) { emissions[i] = emissions[i] / sum; } nrEmissions = emissions_2.length; sum = 0; for(int i = 0; i < emissions_2.length; i++) { double initProb = Math.random(); emissions_2[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_2.length; i++) { emissions_2[i] = emissions_2[i] / sum; } nrEmissions = emissions_3.length; sum = 0; for(int i = 0; i < emissions_3.length; i++) { double initProb = Math.random(); emissions_3[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_3.length; i++) { emissions_3[i] = emissions_3[i] / sum; } nrEmissions = emissions_4.length; sum = 0; for(int i = 0; i < emissions_4.length; i++) { double initProb = Math.random(); emissions_4[i] = initProb; sum = sum + initProb; } for(int i = 0; i < emissions_4.length; i++) { emissions_4[i] = emissions_4[i] / sum; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -