Hi all,
I started using the 'results_to_netscape' function that enables web
browsing of results from the external artemis tools (from the run menu),
but couldn't get it to work fully. The URLs to the SRS server had to be
updated and manipulated further in a way the made the
'results_to_netscape' quite complicated. Instead I chose to use Entrez
retrieval system at NCBI. For those interested I attach the changed
'results_to_netscape' code here:
#!/bin/sh -
# This script will send a file to netscape with database IDs linked to
ENTREZ
# To enable this in Artemis, sanger_options must be set to true in the
options file.
NETSCAPE=/usr/local/bin/netscape
if [ -f "$DIANA_ENVIRONMENT_FILE" ]
then
. $DIANA_ENVIRONMENT_FILE
fi
if [ $# = 0 ]
then
echo no argument given 1>&2
exit 1
fi
file_arg=$1
unique_bit=$$.`hostname`
if [ -f ./$file_arg ]
then
# the file is in the current directory - we need the full path so
netscape
# can find the file
new_file=$PWD/$file_arg.$unique_bit.html
else
new_file=$file_arg.$unique_bit.html
fi
cat <<EOF > $new_file
<HTML>
<HEAD>
<TITLE>
Results for $file_arg
</TITLE>
</HEAD>
<BODY>
<PRE>
EOF
perl -e '
BEGIN {
$BLAST_START_LINE = "Sequences producing High-scoring Segment Pairs|"
.
"Sequences producing significant alignments:";
$FASTA_START_LINE = "The best scores are";
# the list of IDs we have seen so far
@ids = ();
# the list of IDs we have made anchors for so far
@anchored_ids = ();
}
sub hyperlink_to_anchor
{
$id = shift;
qq(<a href="#$id">$id</a>);
}
sub hyperlink_id
{
$id = shift;
$r = qq#<A TARGET=_blank
HREF=\"http:\/\/www.ncbi.nlm.nih.gov\/entrez\/viewer.fcgi?val=$id\">$id<\/A>#;
return $r
}
$file_name = $ARGV[0];
if ($file_name =~ /\.gz$/) {
open IN_FILE, "gzip -d < $file_name |" or die "failed to open
$file_name\n";
} else {
open IN_FILE, "$file_name" or die "failed to open $file_name\n";
}
while (<IN_FILE>) {
s/(http\:\/\/([\S.\/]+))/<a href=\"$1\">$1<\/a>/gi;
# ignore header lines
if (1..m/$BLAST_START_LINE|$FASTA_START_LINE/) {
print;
next;
}
if (@ids && /^\s*$/) {
$summary_finished = 1;
}
if (/\w+\|([^|]+)\|/) {
$id = $1;
}
if ($summary_finished) {
if ((grep {$_ eq $id} @ids) && (!grep {$_ eq $id} @anchored_ids))
{
# not anchored yet so make it an anchor
if (s/\b$id\b/"<a name=\"$id\">" . (hyperlink_id($id)) .
"<\/a>"/e) {
push @anchored_ids, $id;
}
}
} else {
if (!grep {$_ eq $id} @ids) {
push @ids, $id;
}
s/$id/hyperlink_to_anchor($id)/ei;
if (!s/ $id/" " . hyperlink_id($id)/ei) {
# if the id occurs once in the line put a link at end of line
s/$/" NCBI:" . hyperlink_id($id)/e;
}
}
print;
}
' $file_arg >> $new_file
cat <<EOF >> $new_file;
</PRE>
</BODY>
</HTML>
EOF
# delete it at some point
echo "rm -f $new_file " | at now + 36 hours
if $NETSCAPE -remote "openURL($new_file)"
then
exit 0
else
echo starting new netscape
# netscape isn't running - so start it
($NETSCAPE &)&
# now send the URL. we do things this way so that the script
doesn't exit
# until netscape has successfully shown the URL
sleep 1
# don't exit the script until the file is successfully displayed or
until
# 40 seconds is up
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
if $NETSCAPE -remote "openURL($new_file)"
then
exit 0
else
sleep 2
fi
done
exit 1
fi