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

add rfam sequence searching

parent 9fb7b137
No related branches found
No related tags found
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