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

📄 standardtmhmmcreator.java

📁 马尔科夫模型的c语言实现
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import java.io.*;import java.util.*;class StandardTMHMMCreator{        BufferedReader reader;    ModelMaker modelmaker;    String hmmrow;        /* first input parameter is a file with rows consisting of: <hmmname> <hmmsize> [priorfile]     * second input parameter is a name of outputdir */    public StandardTMHMMCreator(String hmmfile, String outdir)    {	try {	    BufferedReader br = new BufferedReader(new FileReader(hmmfile));	    hmmrow = br.readLine();	    StringTokenizer st = new StringTokenizer(hmmrow, "\t ");	    if(st.countTokens() < 1) {		printerr("Could not create hmm");		System.exit(0);	    }	    modelmaker = new ModelMaker();	    	    /* read name */	    String hmmName = st.nextToken();	    	    /* read priorfiles */	    LinkedList priorfiles = new LinkedList();	    LinkedList priorScalers = new LinkedList();	    for(int i = 0; i < 7; i++) {		hmmrow = br.readLine();		st = new StringTokenizer(hmmrow, " \t");		st.nextToken();		priorfiles.add(st.nextToken());		priorScalers.add(st.nextToken());	    }	    /* read init distributions */	    double[][] emissionProbs = new double[7][20];	    for(int i = 0; i < 7; i++) {		hmmrow = br.readLine();		st = new StringTokenizer(hmmrow, "\t ");		if(st.countTokens() != 21) {		    printerr("Could not create hmm");		    System.exit(0);		}		st.nextToken();		for(int j = 0; j < 20; j++) {		    emissionProbs[i][j] = Double.parseDouble(st.nextToken());		}	    }	    /* read expected looplengths */	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    int lengthOL = Integer.parseInt(st.nextToken());	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    int lengthOS = Integer.parseInt(st.nextToken());	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    int lengthI = Integer.parseInt(st.nextToken());	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    double Po = Double.parseDouble(st.nextToken());	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    int f_i = Integer.parseInt(st.nextToken());	    int q_i = Integer.parseInt(st.nextToken());	    hmmrow = br.readLine();	    st = new StringTokenizer(hmmrow, " \t");	    st.nextToken();	    int f_o = Integer.parseInt(st.nextToken());	    int q_o = Integer.parseInt(st.nextToken());	    	    createHMM(hmmName, priorfiles, priorScalers, emissionProbs, lengthOL, lengthOS, lengthI, Po, f_i, q_i, f_o, q_o);	    saveHMM(outdir);	}	catch(IOException e) {	    printerr("Could not read from hmmfile");	    System.exit(0);	}    }    /****************input/output handling**********************************/    private void println(String s)    {	System.out.println(s);    }    private void newln(){	System.out.println("");    }    private void printerr(String s)    {	System.out.println("Error: " + s);    }    private void print(String s)    {	System.out.print(s);	System.out.flush();    }    private String readln()    {	try {	String s = reader.readLine();	if(s == "" || s == null) {	    return null;	}	s = s.trim();	return s;	}	catch(IOException e) {	    P.INTERNAL_ERROR("DataReader.readLine: IOException");	    return null;	}    }            /*******************************HMM methods****************************/    private void createHMM(String name, LinkedList priorfiles, LinkedList priorScalers, double[][] emissionProbs, int lengthOL, int lengthOS, int lengthI,			   double Po, int f_i, int q_i, int f_o, int q_o)    {	modelmaker.createHMM(name);	modelmaker.setAlphabet(HMM.AMINO);	int res = modelmaker.createModule("s", HMM.STARTNODE, HMM.ZERO, 1, "0");	res = modelmaker.createModule("in10", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in11", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in12", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in13", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in14", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in15", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in16", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in17", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in18", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in19", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in20", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in21", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in22", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in23", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in24", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in25", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in26", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in27", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in28", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("in29", HMM.SINGLENODE, HMM.EVEN, 1, "i");	res = modelmaker.createModule("inglob1", HMM.SINGLELOOP, HMM.EVEN, 1, "i");		res = modelmaker.createModule("outglob10", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob11", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob12", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob13", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob14", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob15", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob16", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob17", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob18", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob19", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob20", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob21", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob22", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob23", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob24", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob25", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob26", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob27", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob28", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglob29", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglobLong", HMM.SINGLELOOP, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out10", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out11", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out12", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out13", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out14", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out15", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out16", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out17", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out18", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out19", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out20", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out21", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out22", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out23", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out24", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out25", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out26", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out27", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out28", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("out29", HMM.SINGLENODE, HMM.EVEN, 1, "o");	res = modelmaker.createModule("outglobShort", HMM.SINGLELOOP, HMM.EVEN, 1, "o");	res = modelmaker.createModule("ohelixi1", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi2", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi3", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi4", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi5", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi6", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixi7", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelix", HMM.FORWARD_STD, HMM.EVEN, 2, 22, "M");	res = modelmaker.createModule("ohelixo2", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixo3", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixo4", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixo5", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixo6", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ohelixo7", HMM.SINGLENODE, HMM.EVEN, 1, "M");		res = modelmaker.createModule("ihelixi2", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixi3", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixi4", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixi5", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixi6", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixi7", HMM.SINGLENODE, HMM.EVEN, 1, "M");		res = modelmaker.createModule("ihelix", HMM.FORWARD_STD, HMM.EVEN, 2, 22, "M");	res = modelmaker.createModule("ihelixo1", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo2", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo3", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo4", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo5", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo6", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("ihelixo7", HMM.SINGLENODE, HMM.EVEN, 1, "M");	res = modelmaker.createModule("e", HMM.ENDNODE, HMM.ZERO, 1, "0");			modelmaker.setTransition("s", "in10");	modelmaker.setTransition("s", "out10");	modelmaker.setTransition("s", "outglob10");	modelmaker.initializeTransitionProbabilities("s");		double distribSum = 0.0;	for(int i = 1; i <= 20; i++) {	    distribSum += Math.pow(i, (f_i/2 - 1)) * Math.exp((0-i)/q_i);	}	double tot = 1.0;	modelmaker.setTransition("in10", "in11");	modelmaker.setTransition("in10", "in29");	modelmaker.setTransition("in10", "ohelixi1");	modelmaker.setTransition("in10", "e");	tot = setChiSquareDistrib("in10", 1, 2, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in10");	modelmaker.setTransition("in11", "in12");	modelmaker.setTransition("in11", "in28");	modelmaker.setTransition("in11", "in29");	modelmaker.setTransition("in11", "e");	tot = setChiSquareDistrib("in11", 3, 4, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in11");	modelmaker.setTransition("in12", "in13");	modelmaker.setTransition("in12", "in27");	modelmaker.setTransition("in12", "in28");	modelmaker.setTransition("in12", "e");	tot = setChiSquareDistrib("in12", 5, 6, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in12");	modelmaker.setTransition("in13", "in14");	modelmaker.setTransition("in13", "in26");	modelmaker.setTransition("in13", "in27");	modelmaker.setTransition("in13", "e");	tot = setChiSquareDistrib("in13", 7, 8, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in13");	modelmaker.setTransition("in14", "in15");	modelmaker.setTransition("in14", "in25");	modelmaker.setTransition("in14", "in26");	modelmaker.setTransition("in14", "e");	tot = setChiSquareDistrib("in14", 9, 10, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in14");			modelmaker.setTransition("in15", "in16");	modelmaker.setTransition("in15", "in24");	modelmaker.setTransition("in15", "in25");	modelmaker.setTransition("in15", "e");	tot = setChiSquareDistrib("in15", 11, 12, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in15");		modelmaker.setTransition("in16", "in17");	modelmaker.setTransition("in16", "in23");	modelmaker.setTransition("in16", "in24");	modelmaker.setTransition("in16", "e");	tot = setChiSquareDistrib("in16", 13, 14, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in16");	modelmaker.setTransition("in17", "in18");	modelmaker.setTransition("in17", "in22");	modelmaker.setTransition("in17", "in23");	modelmaker.setTransition("in17", "e");	tot = setChiSquareDistrib("in17", 15, 16, f_i, q_i, distribSum, tot);	modelmaker.initializeTransitionProbabilities("in17");	modelmaker.setTransition("in18", "in19");	modelmaker.setTransition("in18", "in21");	modelmaker.setTransition("in18", "in22");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -