⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forward_std.java

📁 马尔科夫模型的c语言实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	    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 + -