import charite.christo.interfaces.SequenceBlaster; import charite.christo.interfaces.HasControlPanel; import charite.christo.strap.extensions.Blaster_ebi_ac_uk; import charite.christo.strap.extensions.Blaster_local_Wu; import charite.christo.strap.extensions.Blaster_local_NCBI; import charite.christo.ByteArray; import charite.christo.blast.BlastResult; import java.util.*; import javax.swing.*; import java.io.*; import static java.lang.System.*; import charite.christo.CacheResult; /** java DemoSequenceBlaster This demo shows how Blast is used to find sequences that are similar to a given Sequence. For performing large numbers of Blast runs please use the locally installed Blast rather than a web service. */ public class DemoSequenceBlaster { public static void main(String[] argv) throws Exception { /* The cache is located in ~/.StrapAlign/cached/ */ CacheResult.setEnabled(true); /* Initialize a SequenceBlaster one of the following: Blaster_ebi_ac_uk, Blaster_local_Wu, Blaster_local_NCBI */ final SequenceBlaster blaster=new Blaster_ebi_ac_uk(); /*For a local blast installation an environment variable is pointing to the directory with databases. */ if (blaster instanceof Blaster_local_NCBI) out.println(" Variable BLASTDB="+System.getenv("BLASTDB")); if (blaster instanceof Blaster_local_Wu) out.println(" Variable WUBLASTDB="+System.getenv("WUBLASTDB")); blaster.setAAQuerySequence("KVFFKAGLLGLLEEMRDDKLAEIITATQARCRGFLM"); out.print("The following databases are available: "+Arrays.asList(blaster.getAvailableDatabases())); /* Show A control panel to watch log messages */ if (blaster instanceof HasControlPanel) { final JFrame f=new JFrame(); f.setSize(300,300); f.getContentPane().add(((HasControlPanel)blaster).getControlPanel()); f.show(); } blaster.setDatabase("pdb"); /* If this was already computed, then it might be in the cache. */ final ByteArray xmlFromCache=blaster.getResultXml(); final ByteArray xml; if (xmlFromCache==null) { /* computation takes a lot of time */ blaster.compute(); xml=blaster.getResultXml(); } else xml=xmlFromCache; try { xml.write(new FileOutputStream(new File("output.xml"))); out.println("The xml result is found in the file output.xml"); } catch(IOException ioex) { out.println("Writing blast result: "+ioex); } /* BlastResult is an object oriented model of the Blast Result */ final BlastResult result=new BlastResult(xml); try { final int charactersPerLine=60; result.writeFile(new File("output.txt"), charactersPerLine); out.println("The result is found in the file output.txt"); } catch(IOException ioex) { out.println("Writing blast result: "+ioex); } /* The cache is saved to disk and the Java Virtual Machine terminated */ /* Save the Cache containing computed results */ CacheResult.save(); System.exit(0); } }