Difference between revisions of "Automated Evaluation of Homoloy Models"
Line 1: | Line 1: | ||
=Source code for Eval.java= |
=Source code for Eval.java= |
||
<code> |
<code> |
||
+ | import java.io.BufferedReader;<br> |
||
− | <nowiki> |
||
− | import java.io. |
+ | import java.io.BufferedWriter;<br> |
− | import java.io. |
+ | import java.io.File;<br> |
− | import java.io. |
+ | import java.io.FileNotFoundException;<br> |
− | import java.io. |
+ | import java.io.FileReader;<br> |
− | import java.io. |
+ | import java.io.FileWriter;<br> |
− | import java.io. |
+ | import java.io.IOException;<br> |
− | import java.io. |
+ | import java.io.InputStreamReader;<br> |
− | import java. |
+ | import java.util.ArrayList;<br> |
+ | <br> |
||
− | import java.util.ArrayList; |
||
+ | public class Eval <br> |
||
− | |||
+ | {<br> |
||
− | public class Eval |
||
+ | public static String USAGE = "java -jar Eval.jar <modelContainer> <modelDir> <refContainer> <refDir>" +<br> |
||
− | { |
||
+ | "\n\t <modelContainer> contains in each line one id of the used models (the filename before the .pdb)" +<br> |
||
− | public static String USAGE = "java -jar Eval.jar <modelContainer> <modelDir> <refContainer> <refDir>" + |
||
− | "\n\t < |
+ | "\n\t <modelDir> the directory where the model-files lie" +<br> |
+ | "\n\t <refContainer> contains in each line one id of the used reference structures (the filename before the .pdb)" +<br> |
||
− | "\n\t <modelDir> the directory where the model-files lie" + |
||
+ | "\n\t <refDir> the directory where the model-files lie";<br> |
||
− | "\n\t <refContainer> contains in each line one id of the used reference structures (the filename before the .pdb)" + |
||
+ | <br> |
||
− | "\n\t <refDir> the directory where the model-files lie"; |
||
+ | public static void main(String[] args)<br> |
||
− | |||
+ | {<br> |
||
− | public static void main(String[] args) |
||
+ | if(args.length != 4)<br> |
||
− | { |
||
+ | {<br> |
||
− | if(args.length != 4) |
||
+ | System.out.println(Eval.USAGE);<br> |
||
− | { |
||
− | System. |
+ | System.exit(1);<br> |
+ | }<br> |
||
− | System.exit(1); |
||
− | + | <br> |
|
+ | File modelContainer = new File(args[0]);<br> |
||
− | |||
− | File |
+ | File modelDir = new File(args[1]);<br> |
− | File |
+ | File refContainer = new File(args[2]);<br> |
− | File |
+ | File refDir = new File(args[3]);<br> |
+ | <br> |
||
− | File refDir = new File(args[3]); |
||
+ | ArrayList <String> modelIds = Eval.readContainer(modelContainer);<br> |
||
− | |||
− | ArrayList <String> |
+ | ArrayList <String> refIds = Eval.readContainer(refContainer);<br> |
+ | <br> |
||
− | ArrayList <String> refIds = Eval.readContainer(refContainer); |
||
+ | for(String modelId : modelIds)<br> |
||
− | |||
+ | {<br> |
||
− | for(String modelId : modelIds) |
||
+ | File model = Eval.getPDB(modelDir, modelId);<br> |
||
− | { |
||
+ | for(String refId : refIds)<br> |
||
− | File model = Eval.getPDB(modelDir, modelId); |
||
+ | {<br> |
||
− | for(String refId : refIds) |
||
+ | System.out.println(modelId+" vs. " +refId);<br> |
||
− | { |
||
− | + | File reference = Eval.getPDB(refDir, refId);<br> |
|
− | + | System.out.println("RMSD: "+Eval.calcRMSD(reference, model));<br> |
|
− | System.out.println(" |
+ | System.out.println("TM: "+Eval.calcTM(reference, model));<br> |
− | System.out.println(" |
+ | System.out.println("ALL RMSD: "+Eval.calcFeRMSD(reference, model));<br> |
+ | }<br> |
||
− | System.out.println("ALL RMSD: "+Eval.calcFeRMSD(reference, model)); |
||
− | + | }<br> |
|
+ | }<br> |
||
− | } |
||
+ | <br> |
||
− | } |
||
+ | public static String calcRMSD(File reference, File model)<br> |
||
− | |||
+ | {<br> |
||
− | public static String calcRMSD(File reference, File model) |
||
+ | String res = "";<br> |
||
− | { |
||
+ | <br> |
||
− | String res = ""; |
||
+ | try <br> |
||
− | |||
− | + | {<br> |
|
+ | Process p = Runtime.getRuntime().exec("sap "+reference.getAbsolutePath()+" "+model.getAbsolutePath());<br> |
||
− | { |
||
+ | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br> |
||
− | Process p = Runtime.getRuntime().exec("sap "+reference.getAbsolutePath()+" "+model.getAbsolutePath()); |
||
+ | String line;<br> |
||
− | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); |
||
+ | while((line = in.readLine()) != null)<br> |
||
− | String line; |
||
+ | {<br> |
||
− | while((line = in.readLine()) != null) |
||
+ | if(line.startsWith("Un-weighted RMSd ="))<br> |
||
− | { |
||
+ | {<br> |
||
− | if(line.startsWith("Un-weighted RMSd =")) |
||
+ | int off = line.indexOf("over all matched atoms"); <br> |
||
− | { |
||
− | + | if(off != -1)<br> |
|
− | + | {<br> |
|
+ | res = line.substring(18, off);<br> |
||
− | { |
||
− | res |
+ | res.replaceAll(" ", "");<br> |
+ | }<br> |
||
− | res.replaceAll(" ", ""); |
||
− | + | }<br> |
|
− | + | }<br> |
|
− | + | } <br> |
|
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return res;<br> |
||
− | |||
+ | }<br> |
||
− | return res; |
||
+ | <br> |
||
− | } |
||
+ | public static String calcAllRMSD(File reference, File model)<br> |
||
− | |||
+ | {<br> |
||
− | public static String calcAllRMSD(File reference, File model) |
||
+ | String res = "";<br> |
||
− | { |
||
+ | <br> |
||
− | String res = ""; |
||
+ | try <br> |
||
− | |||
− | + | {<br> |
|
+ | Process p = Runtime.getRuntime().exec("rms.pl -out all "+reference.getAbsolutePath()+" "+model.getAbsolutePath());<br> |
||
− | { |
||
+ | p.waitFor();<br> |
||
− | Process p = Runtime.getRuntime().exec("rms.pl -out all "+reference.getAbsolutePath()+" "+model.getAbsolutePath()); |
||
+ | <br> |
||
− | p.waitFor(); |
||
+ | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br> |
||
− | |||
+ | <br> |
||
− | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); |
||
+ | String line;<br> |
||
− | |||
+ | while((line = in.readLine()) != null)<br> |
||
− | String line; |
||
+ | {<br> |
||
− | while((line = in.readLine()) != null) |
||
+ | res = line.replaceAll(" all", "");<br> |
||
− | { |
||
− | res = |
+ | res = res.replaceAll(" ", "");<br> |
+ | }<br> |
||
− | res = res.replaceAll(" ", ""); |
||
− | + | <br> |
|
+ | in.close();<br> |
||
− | |||
+ | } <br> |
||
− | in.close(); |
||
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | } <br> |
||
− | e.printStackTrace(); |
||
+ | catch (InterruptedException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (InterruptedException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return res;<br> |
||
− | |||
+ | }<br> |
||
− | return res; |
||
+ | <br> |
||
− | } |
||
+ | public static String calcTM(File reference, File model)<br> |
||
− | |||
+ | {<br> |
||
− | public static String calcTM(File reference, File model) |
||
+ | String res = "";<br> |
||
− | { |
||
+ | <br> |
||
− | String res = ""; |
||
+ | try <br> |
||
− | |||
− | + | {<br> |
|
+ | Process p = Runtime.getRuntime().exec("TMS "+reference.getAbsolutePath()+" "+model.getAbsolutePath());<br> |
||
− | { |
||
+ | <br> |
||
− | Process p = Runtime.getRuntime().exec("TMS "+reference.getAbsolutePath()+" "+model.getAbsolutePath()); |
||
+ | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br> |
||
− | |||
+ | String line;<br> |
||
− | BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); |
||
+ | while((line = in.readLine()) != null)<br> |
||
− | String line; |
||
+ | {<br> |
||
− | while((line = in.readLine()) != null) |
||
+ | res = line.substring(5);<br> |
||
− | { |
||
+ | }<br> |
||
− | res = line.substring(5); |
||
− | + | } <br> |
|
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return res;<br> |
||
− | |||
+ | }<br> |
||
− | return res; |
||
+ | <br> |
||
− | } |
||
+ | public static String calcFeRMSD(File reference, File model)<br> |
||
− | |||
+ | {<br> |
||
− | public static String calcFeRMSD(File reference, File model) |
||
+ | String res = "";<br> |
||
− | { |
||
+ | <br> |
||
− | String res = ""; |
||
+ | try <br> |
||
− | |||
− | + | {<br> |
|
+ | File reftemp = File.createTempFile("reftemp", ".pdb");<br> |
||
− | { |
||
− | + | reftemp.deleteOnExit();<br> |
|
+ | File modtemp = File.createTempFile("modtemp", ".pdb");<br> |
||
− | reftemp.deleteOnExit(); |
||
− | + | modtemp.deleteOnExit();<br> |
|
+ | <br> |
||
− | modtemp.deleteOnExit(); |
||
+ | File script = Eval.writePythonScript(reference, model, reftemp, modtemp);<br> |
||
− | |||
+ | <br> |
||
− | File script = Eval.writePythonScript(reference, model, reftemp, modtemp); |
||
+ | Process p = Runtime.getRuntime().exec("pymol "+script.getAbsolutePath());<br> |
||
− | |||
+ | p.waitFor();<br> |
||
− | Process p = Runtime.getRuntime().exec("pymol "+script.getAbsolutePath()); |
||
+ | <br> |
||
− | p.waitFor(); |
||
+ | res = Eval.calcAllRMSD(reftemp, modtemp);<br> |
||
− | |||
+ | }<br> |
||
− | res = Eval.calcAllRMSD(reftemp, modtemp); |
||
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | } <br> |
||
− | e.printStackTrace(); |
||
+ | catch (InterruptedException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (InterruptedException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return res;<br> |
||
− | |||
+ | }<br> |
||
− | return res; |
||
+ | <br> |
||
− | } |
||
+ | public static File writePythonScript(File reference, File model, File reftemp, File modtemp)<br> |
||
− | |||
+ | {<br> |
||
− | public static File writePythonScript(File reference, File model, File reftemp, File modtemp) |
||
+ | File script = null;<br> |
||
− | { |
||
+ | try <br> |
||
− | File script = null; |
||
− | + | {<br> |
|
+ | script = File.createTempFile("fesel", ".pml");<br> |
||
− | { |
||
− | script |
+ | script.deleteOnExit();<br> |
+ | <br> |
||
− | script.deleteOnExit(); |
||
+ | BufferedWriter out = new BufferedWriter(new FileWriter(script));<br> |
||
− | |||
+ | <br> |
||
− | BufferedWriter out = new BufferedWriter(new FileWriter(script)); |
||
+ | out.write("load "+reference.getAbsolutePath()+", reference\n");<br> |
||
− | |||
− | out.write("load "+ |
+ | out.write("load "+model.getAbsolutePath()+", mod\n");<br> |
− | out.write(" |
+ | out.write("select fe, name fe\n");<br> |
− | out.write(" |
+ | out.write("align mod, reference\n");<br> |
− | out.write(" |
+ | out.write("select near_7, fe around 7\n");<br> |
− | out.write("select |
+ | out.write("select ref_near_7, (fe around 7) and reference\n");<br> |
− | out.write(" |
+ | out.write("save "+reftemp.getAbsolutePath()+", ref_near_7\n");<br> |
− | out.write(" |
+ | out.write("select mod_near_7, (fe around 7) and mod\n");<br> |
− | out.write(" |
+ | out.write("save "+modtemp.getAbsolutePath()+", mod_near_7\n");<br> |
− | out.write(" |
+ | out.write("quit\n");<br> |
+ | <br> |
||
− | out.write("quit\n"); |
||
+ | out.close();<br> |
||
− | |||
+ | <br> |
||
− | out.close(); |
||
− | + | } <br> |
|
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return script;<br> |
||
− | |||
+ | }<br> |
||
− | return script; |
||
+ | <br> |
||
− | } |
||
+ | public static File getPDB(File dir, String name)<br> |
||
− | |||
+ | {<br> |
||
− | public static File getPDB(File dir, String name) |
||
+ | return new File(dir, name+".pdb");<br> |
||
− | { |
||
+ | }<br> |
||
− | return new File(dir, name+".pdb"); |
||
+ | <br> |
||
− | } |
||
+ | public static ArrayList<String> readContainer(File f)<br> |
||
− | |||
+ | {<br> |
||
− | public static ArrayList<String> readContainer(File f) |
||
+ | ArrayList <String> ids = new ArrayList<String>();<br> |
||
− | { |
||
+ | <br> |
||
− | ArrayList <String> ids = new ArrayList<String>(); |
||
+ | try <br> |
||
− | |||
− | + | {<br> |
|
+ | BufferedReader in = new BufferedReader(new FileReader(f));<br> |
||
− | { |
||
+ | String line;<br> |
||
− | BufferedReader in = new BufferedReader(new FileReader(f)); |
||
+ | <br> |
||
− | String line; |
||
+ | while((line = in.readLine()) != null)<br> |
||
− | |||
+ | {<br> |
||
− | while((line = in.readLine()) != null) |
||
+ | ids.add(line);<br> |
||
− | { |
||
+ | }<br> |
||
− | ids.add(line); |
||
− | + | <br> |
|
+ | in.close();<br> |
||
− | |||
+ | } <br> |
||
− | in.close(); |
||
+ | catch (FileNotFoundException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (FileNotFoundException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | } <br> |
||
− | e.printStackTrace(); |
||
+ | catch (IOException e) <br> |
||
− | } |
||
+ | {<br> |
||
− | catch (IOException e) |
||
+ | e.printStackTrace();<br> |
||
− | { |
||
+ | }<br> |
||
− | e.printStackTrace(); |
||
− | + | <br> |
|
+ | return ids;<br> |
||
− | |||
+ | }<br> |
||
− | return ids; |
||
+ | }<br> |
||
− | } |
||
− | } |
||
− | </nowiki> |
||
</code> |
</code> |
Revision as of 14:25, 10 June 2011
Source code for Eval.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Eval
{
public static String USAGE = "java -jar Eval.jar <modelContainer> <modelDir> <refContainer> <refDir>" +
"\n\t <modelContainer> contains in each line one id of the used models (the filename before the .pdb)" +
"\n\t <modelDir> the directory where the model-files lie" +
"\n\t <refContainer> contains in each line one id of the used reference structures (the filename before the .pdb)" +
"\n\t <refDir> the directory where the model-files lie";
public static void main(String[] args)
{
if(args.length != 4)
{
System.out.println(Eval.USAGE);
System.exit(1);
}
File modelContainer = new File(args[0]);
File modelDir = new File(args[1]);
File refContainer = new File(args[2]);
File refDir = new File(args[3]);
ArrayList <String> modelIds = Eval.readContainer(modelContainer);
ArrayList <String> refIds = Eval.readContainer(refContainer);
for(String modelId : modelIds)
{
File model = Eval.getPDB(modelDir, modelId);
for(String refId : refIds)
{
System.out.println(modelId+" vs. " +refId);
File reference = Eval.getPDB(refDir, refId);
System.out.println("RMSD: "+Eval.calcRMSD(reference, model));
System.out.println("TM: "+Eval.calcTM(reference, model));
System.out.println("ALL RMSD: "+Eval.calcFeRMSD(reference, model));
}
}
}
public static String calcRMSD(File reference, File model)
{
String res = "";
try
{
Process p = Runtime.getRuntime().exec("sap "+reference.getAbsolutePath()+" "+model.getAbsolutePath());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = in.readLine()) != null)
{
if(line.startsWith("Un-weighted RMSd ="))
{
int off = line.indexOf("over all matched atoms");
if(off != -1)
{
res = line.substring(18, off);
res.replaceAll(" ", "");
}
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
return res;
}
public static String calcAllRMSD(File reference, File model)
{
String res = "";
try
{
Process p = Runtime.getRuntime().exec("rms.pl -out all "+reference.getAbsolutePath()+" "+model.getAbsolutePath());
p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = in.readLine()) != null)
{
res = line.replaceAll(" all", "");
res = res.replaceAll(" ", "");
}
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return res;
}
public static String calcTM(File reference, File model)
{
String res = "";
try
{
Process p = Runtime.getRuntime().exec("TMS "+reference.getAbsolutePath()+" "+model.getAbsolutePath());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = in.readLine()) != null)
{
res = line.substring(5);
}
}
catch (IOException e)
{
e.printStackTrace();
}
return res;
}
public static String calcFeRMSD(File reference, File model)
{
String res = "";
try
{
File reftemp = File.createTempFile("reftemp", ".pdb");
reftemp.deleteOnExit();
File modtemp = File.createTempFile("modtemp", ".pdb");
modtemp.deleteOnExit();
File script = Eval.writePythonScript(reference, model, reftemp, modtemp);
Process p = Runtime.getRuntime().exec("pymol "+script.getAbsolutePath());
p.waitFor();
res = Eval.calcAllRMSD(reftemp, modtemp);
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return res;
}
public static File writePythonScript(File reference, File model, File reftemp, File modtemp)
{
File script = null;
try
{
script = File.createTempFile("fesel", ".pml");
script.deleteOnExit();
BufferedWriter out = new BufferedWriter(new FileWriter(script));
out.write("load "+reference.getAbsolutePath()+", reference\n");
out.write("load "+model.getAbsolutePath()+", mod\n");
out.write("select fe, name fe\n");
out.write("align mod, reference\n");
out.write("select near_7, fe around 7\n");
out.write("select ref_near_7, (fe around 7) and reference\n");
out.write("save "+reftemp.getAbsolutePath()+", ref_near_7\n");
out.write("select mod_near_7, (fe around 7) and mod\n");
out.write("save "+modtemp.getAbsolutePath()+", mod_near_7\n");
out.write("quit\n");
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return script;
}
public static File getPDB(File dir, String name)
{
return new File(dir, name+".pdb");
}
public static ArrayList<String> readContainer(File f)
{
ArrayList <String> ids = new ArrayList<String>();
try
{
BufferedReader in = new BufferedReader(new FileReader(f));
String line;
while((line = in.readLine()) != null)
{
ids.add(line);
}
in.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return ids;
}
}