Bioinformatics OK Components

We provide here a collection of examples of OK components taken from our test cases.

MODBASESourceOKC.java
package org.openk.okc.bioinfo.okc;

import java.io.IOException;

import javax.swing.JOptionPane;

import org.openk.core.module.interpreter.Argument;

public class MODBASESourceOKC extends YeastDataSourceOKC {
	private final String datadir = "/bio-info-kernel/yeast/modbase/";
	
	@Override
	public boolean lookup(Argument Yid, Argument Fnames, Argument Ds){
		// filename
		// Q0045.randomnumber[].pdb
		String homedir = System.getProperty("user.home");
		String[] filenames = filesStartingWith(homedir+datadir, (String)Yid.getValue());
		JOptionPane.showMessageDialog(null, "MODBASEOKC:"+filenames[0]+"("+filenames.length+")");
		StringBuffer lstFiles = new StringBuffer();
		StringBuffer lstFilenames = new StringBuffer();
		for (String filename: filenames){
			try {
				readFile(homedir+datadir+filename,lstFiles);
				lstFilenames.append(fileNameOnly(filename)+"\n");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		Ds.setValue(lstFiles.toString());
		JOptionPane.showMessageDialog(null, lstFiles.substring(0,80));
		Fnames.setValue(lstFilenames.toString());
		return true;
	}
	

}
SWISSSourceOKC.java
package org.openk.okc.bioinfo.okc;

import java.io.IOException;

import javax.swing.JOptionPane;

import org.openk.core.module.interpreter.Argument;

public class SWISSSourceOKC extends YeastDataSourceOKC {
	
	private final String datadir = "/bio-info-kernel/yeast/swiss/";
	
	@Override
	public boolean lookup(Argument Yid, Argument Fnames, Argument Ds){
		// filename
		// Q0045_SOMECODE_SOMEOTHERCODE.pdb
		String homedir = System.getProperty("user.home");
		String[] filenames = filesStartingWith(homedir+datadir, (String)Yid.getValue());
		JOptionPane.showMessageDialog(null, "SWISSOKC: "+filenames[0]+" ("+filenames.length+")");
		StringBuffer lstFiles = new StringBuffer();
		StringBuffer lstFilenames = new StringBuffer();
		for (String filename: filenames){
			try {
				readFile(homedir+datadir+filename,lstFiles);
				lstFilenames.append(fileNameOnly(filename)+"\n");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		JOptionPane.showMessageDialog(null, lstFiles.substring(0, 80)+"\n...\n"+lstFiles.length());
		Ds.setValue(lstFiles.toString());
		Fnames.setValue(lstFilenames.toString());
		return true;
	}
}
YeastDataSourceOKC.java

YeastDataSourceOKC is the parent class of data providers, namely, ModBase, SAM and SWISS. The implementation of each data provider must implement the method for look-up.


package org.openk.okc.bioinfo.okc;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;

import org.openk.core.OKC.impl.OKCFacadeImpl;
import org.openk.core.module.interpreter.Argument;


public abstract class YeastDataSourceOKC extends OKCFacadeImpl {
	
	class YeastFileFilter implements FilenameFilter {
		
		private String yeastID;
		
		public YeastFileFilter(String yeastid){
			yeastID = yeastid;
		}
	    
		public boolean accept(File dir, String name) {
	        return (name.startsWith(yeastID));
	    }
	}
	
	//@MethodSemantic(
	//	language="tag",
	//		args={"yeast_gene_ORF","protein_3D_structure_model"}
	//)
	public abstract boolean lookup(Argument Yid, Argument Fnames, Argument Ds);
	
	protected String[] filesStartingWith(String dir, String prefix){
		File basedir = new File(dir);
		return basedir.list(new YeastFileFilter(prefix));

	}
	
	protected String fileNameOnly(String filename){
		File f = new File(filename);
		return f.getName();	
	}
	
	protected void readFile(String filename, StringBuffer filecontent) throws IOException{
        BufferedReader in = new BufferedReader(new FileReader(filename));
        String str;
        while ((str = in.readLine()) != null) {
        	filecontent.append(str+"\n");
        }
        filecontent.append("@#@#@#@\n"); // file separator
        in.close();
	}
}
Egglue Powered