Skip to content
Snippets Groups Projects
Commit e2ef2cd3 authored by tcarver's avatar tcarver
Browse files

add rfam sequence searching

parent 9fb7b137
Branches
Tags
No related merge requests found
......@@ -74,6 +74,7 @@ public class RunMenu extends SelectionMenu
addPfamSearches(selection);
if(Options.isUnixHost())
{
addSeparator();
final ExternalProgramVector external_programs = Options.getOptions()
.getExternalPrograms();
......@@ -126,6 +127,30 @@ public class RunMenu extends SelectionMenu
pfamSearch.start();
}
});
final JMenuItem rfam = new JMenuItem("Rfam Search");
add(rfam);
rfam.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
final FeatureVector features = selection.getAllFeatures();
if(features.size() != 1)
{
JOptionPane.showMessageDialog(RunMenu.this,
"Selected a single feature to send to Rfam for searching.",
"Rfam Search", JOptionPane.INFORMATION_MESSAGE);
return;
}
final String residues = features.elementAt(0).getTranslationBases();
RunPfamSearchThread pfamSearch = new RunPfamSearchThread(
residues, RunPfamSearchThread.rfamUrl);
pfamSearch.start();
}
});
}
/**
......
......@@ -36,9 +36,14 @@ import javax.swing.JOptionPane;
import uk.ac.sanger.artemis.editor.BrowserControl;
/**
* Pfam and Rfam sequence search
*/
public class RunPfamSearchThread extends Thread
{
private static String pfamUrl = "http://pfam.sanger.ac.uk/search/sequence";
protected static String pfamUrl = "http://pfam.sanger.ac.uk/search/sequence";
protected static String rfamUrl = "http://rfam.sanger.ac.uk/search/sequence";
private String searchURL = pfamUrl;
private String residues;
......@@ -47,8 +52,16 @@ public class RunPfamSearchThread extends Thread
this.residues = residues;
}
public RunPfamSearchThread(final String residues, final String searchURL)
{
this.residues = residues;
this.searchURL = searchURL;
}
public void run()
{
boolean isPfam = searchURL.equals(pfamUrl);
try
{
// Construct data
......@@ -58,10 +71,14 @@ public class RunPfamSearchThread extends Thread
+ URLEncoder.encode("xml", "UTF-8");
// Send data
URL url = new URL(pfamUrl);
URL url = new URL(searchURL);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
if(!isPfam)
conn.addRequestProperty("Accept", "text/xml");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
......@@ -69,7 +86,8 @@ public class RunPfamSearchThread extends Thread
// Get the response
BufferedReader rd = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String urlResults = pfamUrl+"/results?";
String urlResults = searchURL + (isPfam ? "/results?" : "/");
String line;
String eta = "5";
while ((line = rd.readLine()) != null)
......@@ -78,7 +96,10 @@ public class RunPfamSearchThread extends Thread
if((index = line.indexOf("job_id=")) > -1)
{
line = line.substring(index+8, line.length()-2);
if(isPfam)
urlResults = urlResults.concat("jobId="+line);
else
urlResults = urlResults.concat(line);
}
else if((index = line.indexOf("<estimated_time>")) > -1)
{
......@@ -102,7 +123,7 @@ public class RunPfamSearchThread extends Thread
rd.close();
int waitTime = Integer.parseInt(eta);
ProgressBarFrame progress = new ProgressBarFrame(waitTime, "Pfam");
ProgressBarFrame progress = new ProgressBarFrame(waitTime, (isPfam ? "Pfam" : "Rfam"));
URL result = new URL(urlResults);
Thread.sleep(waitTime*1000);
......@@ -117,6 +138,6 @@ public class RunPfamSearchThread extends Thread
BrowserControl.displayURL(urlResults);
progress.dispose();
}
catch (Exception e){}
catch (Exception e){ e.printStackTrace(); }
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment