changeset 0:a3b26189fee3 draft

planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/smart_domains commit 266d7c45a443e893f15eab4b1485ca7c1c406a14
author earlhaminst
date Thu, 15 Jun 2017 07:52:09 -0400
parents
children 8c24cc7431aa
files smart-domain.pl smart_domains.xml test-data/ENSCAFP00000021307_SMART_results.json test-data/ENSCAFP00000021307_SMART_results.txt test-data/ENSCAFP00000021330_SMART_results.json test-data/ENSCAFP00000021330_SMART_results.txt test-data/ENSMUSP00000026013_SMART_results.json test-data/ENSMUSP00000026013_SMART_results.txt test-data/ENSMUSP00000040550_SMART_results.json test-data/ENSMUSP00000040550_SMART_results.txt test-data/ENSP00000340684_SMART_results.json test-data/ENSP00000340684_SMART_results.txt test-data/ENSP00000367309_SMART_results.json test-data/ENSP00000367309_SMART_results.txt test-data/ENSPTRP00000037440_SMART_results.json test-data/ENSPTRP00000037440_SMART_results.txt test-data/ENSPTRP00000037441_SMART_results.json test-data/ENSPTRP00000037441_SMART_results.txt test-data/ENSRNOP00000043466_SMART_results.json test-data/ENSRNOP00000043466_SMART_results.txt test-data/ENSRNOP00000063784_SMART_results.json test-data/ENSRNOP00000063784_SMART_results.txt test-data/ENSSSCP00000013044_SMART_results.json test-data/ENSSSCP00000013044_SMART_results.txt test-data/ENSSSCP00000028353_SMART_results.json test-data/ENSSSCP00000028353_SMART_results.txt test-data/seq.fa
diffstat 27 files changed, 1059 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smart-domain.pl	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,302 @@
+#!/usr/bin/env perl
+use strict;
+use HTTP::Request::Common;
+use LWP::UserAgent;
+use Pod::Usage;
+use Getopt::Long;
+use Bio::SeqIO;
+use JSON;
+
+my $json = JSON->new->allow_nonref;
+#run this script with --help to see the options
+
+=pod
+
+=head1 NAME
+
+SMART_batch  -  submit sequences from a FASTA file to SMART
+
+=head1 SYNOPSIS
+
+B<SMART_batch.pl> I<options>
+
+=head1 DESCRIPTION
+
+Use B<SMART_batch.pl> to submit multiple protein sequences from a FASTA file into the SMART analysis queue. Results are saved into plain text files.
+
+=head1 GENERAL OPTIONS
+
+
+=over 4
+
+=item B<--help>
+
+display this message
+
+=item B<--inputFile>
+
+FASTA file with sequences to submit
+
+=item B<--outputDirectory>
+
+Directory which will be used to store the results. Will be created if it doesn't exist. Defaults to 'SMART_results'.
+
+=item B<--outputFormat>
+
+Choose prefered output format from txt, json or tabular.
+Default is txt.
+
+=back
+
+=head1 ANALYSIS OPTIONS
+
+=over 4
+
+=item B<--includePfam>
+
+Include Pfam domains in the search. (http://pfam.sanger.ac.uk/)
+
+=item B<--includeSignalP>
+
+Include signal peptide predictions. (http://www.cbs.dtu.dk/services/SignalP/)
+
+=item B<--includeRepeats>
+
+Include internal repeat predictions. (http://www.well.ox.ac.uk/rmott/ARIADNE/)
+
+=item B<--includeDISEMBL>
+
+Include predictions of internal protein disorder. (http://dis.embl.de/)
+
+=item B<--includeSchnipsel>
+
+Include predictions of outlier homologues and homologues of known structures. (http://smart.embl.de/help/smart_glossary.shtml#outlier)
+
+=back
+
+
+=head1 SEE ALSO
+
+ SMART Home page : http://smart.embl.de
+ SMART FAQ       : http://smart.embl.de/help/FAQ.shtml
+
+=head1 AUTHORS
+
+ Written by Ivica Letunic <ivica@letunic.com>
+
+ Modified by Anil Thanki <Anil.Thanki@earlham.ac.uk> to parse output in JSON and tabular format to adapt in Galaxy
+
+=cut
+
+my $submit_url = "http://smart.embl.de/smart/show_motifs.pl";
+my $job_status_url = "http://smart.embl.de/smart/job_status.pl";
+my $output_format = "txt";
+my ($show_help, $input_file, $output_directory, $do_pfam, $do_signalp, $do_rep, $do_disembl, $do_schnipsel);
+my $op_r = GetOptions (
+                       "help" => \$show_help,
+                       "inputFile=s"   => \$input_file,
+                       "outputDirectory=s"   => \$output_directory,
+                       "includePfam" => \$do_pfam,
+                       "includeSignalP" => \$do_signalp,
+                       "includeRepeats" => \$do_rep,
+                       "includeDISEMBL" => \$do_disembl,
+                       "includeSchnipsel" => \$do_schnipsel,
+                       "outputFormat=s" => \$output_format,
+                      );
+
+unless ($input_file) { $show_help = 1; }
+
+pod2usage(VERBOSE => 2) if ( $show_help );
+
+my $ua  = LWP::UserAgent->new();
+my $result = "";
+$ua->agent("SMARTbatch1.0");
+
+
+print "\nSMART batch analysis\n======================\n";
+
+unless (defined $output_directory) { $output_directory = 'SMART_results'; }
+unless (-d $output_directory) { mkdir $output_directory; }
+unless (-e $input_file) { print STDERR "Input file does not exist."; exit;}
+
+my $io = new Bio::SeqIO(-format=> 'fasta', -file=> $input_file);
+
+#process sequences one by one. ALWAYS wait for the results before submitting the next sequence.
+
+while (my $seq = $io->next_seq) {
+  my $seq_id = $seq->display_id;
+  my $output_file;
+  if ($output_format eq "txt")
+  {
+    $output_file = $output_directory . "/" . $seq_id . "_SMART_results.txt";
+  } elsif ($output_format eq "tabular")
+  {
+    $output_file = $output_directory . "/" . $seq_id . "_SMART_results.tabular";
+  } elsif ($output_format eq "json"){
+    $output_file = $output_directory . "/" . $seq_id . "_SMART_results.json";
+  }
+  if (-e $output_file) {
+    my @s = stat($output_file);
+    if ($s[7] == 0) {
+      print "Removing empty results file $output_file.\n";
+      unlink $output_file;
+    } else {
+      print "Skipping sequence $seq_id because the results file already exists.\n";
+      next;
+    }
+  }
+  print "Submitting sequence $seq_id...\n";
+  #prepare the basic POST data
+  my %post_content;
+  $post_content{'SEQUENCE'} = $seq->seq;
+  $post_content{'TEXTONLY'} = 1;
+  if ($do_pfam) { $post_content{'DO_PFAM'} = 'DO_PFAM'; }
+  if ($do_signalp) { $post_content{'INCLUDE_SIGNALP'} = 'INCLUDE_SIGNALP'; }
+  if ($do_rep) { $post_content{'DO_PROSPERO'} = 'DO_PROSPERO'; }
+  if ($do_disembl) { $post_content{'DO_DISEMBL'} = 'DO_DISEMBL'; }
+  if ($do_schnipsel) { $post_content{'INCLUDE_BLAST'} = 'INCLUDE_BLAST'; }
+  my $req = POST $submit_url, Content_Type => 'form-data', Content => [ %post_content ];
+  my $response = $ua->request($req);
+  if ($response->is_success()) {
+    my @res = split(/\n/, $response->content);
+    #check if we got the results directly (precomputed results)
+    shift @res if ($res[1] =~ /^--\ SMART\ RESULT/);
+    if ($res[0] =~ /^--\ SMART\ RESULT/) {
+      response_parser($output_file, $response, $output_format);
+    } else {
+      #we're in the queue, or there was an error
+      my $job_id;
+      for (my $i = 0; $i <= $#res; $i++) {
+        if ($res[$i] =~ /job_status\.pl\?jobid=(\d+.+?)'/) {
+          $job_id = $1;
+          last;
+        }
+      }
+      unless (length $job_id) {
+        #there is no job ID, so an error occured
+        my $error_file = "$output_directory/$seq_id\_SMART_error.html";
+        open (ERR, ">$error_file") or die "Cannot write to $error_file";
+        print ERR $response->content;
+        close ERR;
+        print "SMART returned an error page, which was saved into '$error_file'.\nPlease check the file for details. Aborting further submissions.\n";
+        exit;
+      } else {
+        #we have a jobID, check every 10 seconds until we get the results
+        print "Job entered the queue with ID $job_id. Waiting for results.\n";
+        my $job_status_req = GET "$job_status_url?jobid=$job_id";
+        sleep 5;
+        while (1) {
+          my $job_status_response = $ua->request($job_status_req);
+          if ($job_status_response->is_success) {
+            #check if we got the results
+            my @job_status_res = split(/\n/, $job_status_response->content);
+       shift @job_status_res if ($job_status_res[1] =~ /^--\ SMART\ RESULT/);
+            if ($job_status_res[0] =~ /^--\ SMART\ RESULT/) {
+              response_parser($output_file, $job_status_response, $output_format);
+              last;
+            } else {
+              #still in queue
+              sleep 10;
+            }
+          } else {
+            print "SMART returned a web server error. Full message follows:\n\n";
+            print $response->as_string;
+            die;
+          }
+        }
+      }
+    }
+
+  } else {
+    print "SMART returned a web server error. Full message follows:\n\n";
+    print $response->as_string;
+    die;
+  }
+  #be nice to other users
+  sleep 5;
+}
+
+sub toJSON{
+  my ($text) = @_;
+
+  my @result = split("\n", $text);
+  my $line;
+  my %hash;
+  my @hashes;
+  my $json;
+
+  foreach $line (@result)
+  {
+    if(index($line, "=") > 0){
+      my $key = (split(/=/, $line))[0];
+      my $value = (split(/=/, $line))[1];
+      $hash{$key} = $value;
+    } elsif(length($line) == 0){
+      if (exists $hash{"DOMAIN"})
+      {
+        $json = encode_json \%hash;
+        push @hashes, $json;
+      }
+      %hash = ();
+    }
+  }
+
+  return @hashes;
+}
+
+sub response_parser{
+  my $output_file = $_[0];
+  my $job_status_response = $_[1];
+  my $output_format = $_[2];
+
+
+    open (OUT, ">$output_file") or die "Cannot write to $output_file";
+      $result = $job_status_response->content;
+      if ($output_format eq "txt")
+        {
+          print OUT $result;
+        } elsif ($output_format eq "tabular")
+        {
+          my @result = toJSON($result);
+
+          my $first_row = decode_json $result[0];
+          my @keys;
+          my $counter;
+
+          foreach my $key(sort keys %$first_row) {
+              print OUT "$key";
+              print OUT "\t"    if ++$counter < scalar keys %$first_row;
+              push @keys, $key;
+          }
+          print OUT "\n";
+
+          my $counter;
+
+          foreach my $line (@result)
+          {
+            my $first_row = decode_json $line;
+            my $counter;
+            foreach my $key (@keys)
+            {
+              print OUT $first_row->{$key};
+              print OUT "\t"    if ++$counter < scalar(@keys);
+            }
+            print OUT "\n";
+          }
+
+        } elsif ($output_format eq "json"){
+          my @result = toJSON($result);
+
+          print OUT "[";
+          my $counter;
+          foreach my $line (@result)
+          {
+            print OUT $line;
+            print OUT ","    if ++$counter < scalar(@result);
+          }
+          print OUT "]";
+
+        }
+      close OUT;
+      print "Results saved to '$output_file'\n";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smart_domains.xml	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,96 @@
+<tool id="smart_domains" name="SMART domains" version="0.1.0">
+    <description>Search domains in protein sequences using SMART</description>
+    <requirements>
+        <requirement type="package" version="1.6.924">perl-bioperl</requirement>
+        <requirement type="package" version="2.90">perl-json</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+perl '$__tool_directory__/smart-domain.pl'
+--inputFile='$inputFile'
+$Pfam
+$SignalP
+$Repeats
+$DISEMBL
+$Schnipsel
+$outputFormat
+    ]]></command>
+    <inputs>
+        <param name="inputFile" type="data" format="fasta" label="Protein sequences" help="In FASTA format" />
+        <param name="Pfam" type="boolean" truevalue="--includePfam" falsevalue="" label="Include Pfam domains" argument="--includePfam" />
+        <param name="SignalP" type="boolean" truevalue="--includeSignalP" falsevalue="" label="Include signal peptide predictions" argument="--includeSignalP" />
+        <param name="Repeats" type="boolean" truevalue="--includeRepeats" falsevalue="" label="Include internal repeat predictions" argument="--includeRepeats" />
+        <param name="DISEMBL" type="boolean" truevalue="--includeDISEMBL" falsevalue="" label="Include predictions of internal protein disorder" argument="--includeDISEMBL" />
+        <param name="Schnipsel" type="boolean" truevalue="--includeSchnipsel" falsevalue="" label="Include predictions of outlier homologues and homologues of known structures" argument="--includeSchnipsel" />
+        <param name="outputFormat" type="select" label="Output format">
+            <option value="--outputFormat=txt" selected="true">Text</option>
+            <option value="--outputFormat=tabular">Tabular</option>
+            <option value="--outputFormat=json">JSON</option>
+        </param>
+    </inputs>
+    <outputs>
+        <collection name="output_lists" type="list" label="${tool.name} on ${on_string}">
+            <discover_datasets pattern="(?P&lt;name&gt;.+)_SMART_results\.(?P&lt;ext&gt;.+)" directory="SMART_results" />
+        </collection>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" ftype="fasta" value="seq.fa" />
+            <param name="Pfam" value="true" />
+            <param name="SignalP" value="false" />
+            <param name="Repeats" value="false" />
+            <param name="DISEMBL" value="false" />
+            <param name="Schnipsel" value="false" />
+            <param name="outputFormat" value="--outputFormat=txt" />
+            <output_collection name="output_lists" type="list" count="12">
+                <element name="ENSCAFP00000021307" file="ENSCAFP00000021307_SMART_results.txt" ftype="txt" />
+                <element name="ENSCAFP00000021330" file="ENSCAFP00000021330_SMART_results.txt" ftype="txt" />
+                <element name="ENSMUSP00000026013" file="ENSMUSP00000026013_SMART_results.txt" ftype="txt" />
+                <element name="ENSMUSP00000040550" file="ENSMUSP00000040550_SMART_results.txt" ftype="txt" />
+                <element name="ENSP00000340684" file="ENSP00000340684_SMART_results.txt" ftype="txt" />
+                <element name="ENSP00000367309" file="ENSP00000367309_SMART_results.txt" ftype="txt" />
+                <element name="ENSPTRP00000037440" file="ENSPTRP00000037440_SMART_results.txt" ftype="txt" />
+                <element name="ENSPTRP00000037441" file="ENSPTRP00000037441_SMART_results.txt" ftype="txt" />
+                <element name="ENSRNOP00000043466" file="ENSRNOP00000043466_SMART_results.txt" ftype="txt" />
+                <element name="ENSRNOP00000063784" file="ENSRNOP00000063784_SMART_results.txt" ftype="txt" />
+                <element name="ENSSSCP00000013044" file="ENSSSCP00000013044_SMART_results.txt" ftype="txt" />
+                <element name="ENSSSCP00000028353" file="ENSSSCP00000028353_SMART_results.txt" ftype="txt" />
+            </output_collection>
+        </test>
+        <test>
+            <param name="inputFile" ftype="fasta" value="seq.fa" />
+            <param name="Pfam" value="true" />
+            <param name="SignalP" value="false" />
+            <param name="Repeats" value="false" />
+            <param name="DISEMBL" value="false" />
+            <param name="Schnipsel" value="false" />
+            <param name="outputFormat" value="--outputFormat=json" />
+            <output_collection name="output_lists" type="list" count="12">
+                <element name="ENSCAFP00000021307" file="ENSCAFP00000021307_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSCAFP00000021330" file="ENSCAFP00000021330_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSMUSP00000026013" file="ENSMUSP00000026013_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSMUSP00000040550" file="ENSMUSP00000040550_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSP00000340684" file="ENSP00000340684_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSP00000367309" file="ENSP00000367309_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSPTRP00000037440" file="ENSPTRP00000037440_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSPTRP00000037441" file="ENSPTRP00000037441_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSRNOP00000043466" file="ENSRNOP00000043466_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSRNOP00000063784" file="ENSRNOP00000063784_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSSSCP00000013044" file="ENSSSCP00000013044_SMART_results.json" ftype="json" compare="sim_size" />
+                <element name="ENSSSCP00000028353" file="ENSSSCP00000028353_SMART_results.json" ftype="json" compare="sim_size" />
+            </output_collection>
+        </test>
+    </tests>
+    <help><![CDATA[
+A simple tool to search domains in multiple protein sequences contained in a FASTA file using the `SMART`_ web service.
+
+Written by Ivica Letunic <ivica@letunic.com>
+
+Modified by Anil Thanki <Anil.Thanki@earlham.ac.uk> to parse output in JSON and tabular format to adapt in Galaxy
+
+.. _SMART: http://smart.embl.de/
+    ]]></help>
+    <citations>
+        <citation type="doi">10.1073/pnas.95.11.5857</citation>
+        <citation type="doi">10.1093/nar/gku949</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSCAFP00000021307_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"START":"13","END":"62","STATUS":"visible|OK","DOMAIN":"Pfam:FAD_binding_3","EVALUE":"5.7e-07","TYPE":"PFAM"},{"TYPE":"PFAM","EVALUE":"3.7e-06","END":"58","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:Pyr_redox"},{"EVALUE":"2e-09","TYPE":"PFAM","DOMAIN":"Pfam:DAO","STATUS":"visible|OK","END":"159","START":"15"},{"END":"55","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:FAD_binding_2","TYPE":"PFAM","EVALUE":"2.7e-07"},{"START":"16","END":"33","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region","EVALUE":"0","TYPE":"INTRINSIC"},{"EVALUE":"5.8e-16","TYPE":"PFAM","START":"18","END":"84","STATUS":"visible|OK","DOMAIN":"Pfam:NAD_binding_8"},{"TYPE":"PFAM","EVALUE":"4.8e-76","DOMAIN":"Pfam:Amino_oxidase","START":"23","STATUS":"visible|OK","END":"460"},{"END":"71","STATUS":"hidden|overlap","START":"60","DOMAIN":"low_complexity_region","TYPE":"INTRINSIC","EVALUE":"0"},{"START":"497","END":"519","STATUS":"visible|OK","DOMAIN":"transmembrane_domain","TYPE":"INTRINSIC","EVALUE":"0"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSCAFP00000021307_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,69 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=9
+
+DOMAIN=Pfam:FAD_binding_3
+START=13
+END=62
+EVALUE=5.7e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Pyr_redox
+START=15
+END=58
+EVALUE=3.7e-06
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:DAO
+START=15
+END=159
+EVALUE=2e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=2.7e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=16
+END=33
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=5.8e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=4.8e-76
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=60
+END=71
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=497
+END=519
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSCAFP00000021330_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"START":"9","STATUS":"visible|OK","END":"75","DOMAIN":"Pfam:NAD_binding_8","EVALUE":"7.9e-15","TYPE":"PFAM"},{"EVALUE":"2.4e-79","TYPE":"PFAM","DOMAIN":"Pfam:Amino_oxidase","START":"14","STATUS":"visible|OK","END":"451"},{"EVALUE":"0","TYPE":"INTRINSIC","DOMAIN":"low_complexity_region","START":"437","STATUS":"hidden|overlap","END":"449"},{"START":"490","END":"512","STATUS":"visible|OK","DOMAIN":"transmembrane_domain","EVALUE":"0","TYPE":"INTRINSIC"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSCAFP00000021330_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,34 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=4
+
+DOMAIN=Pfam:NAD_binding_8
+START=9
+END=75
+EVALUE=7.9e-15
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=14
+END=451
+EVALUE=2.4e-79
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=437
+END=449
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=490
+END=512
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSMUSP00000026013_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"END":"168","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:DAO","TYPE":"PFAM","EVALUE":"1.5e-08"},{"END":"55","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:FAD_binding_2","TYPE":"PFAM","EVALUE":"4.4e-06"},{"END":"84","STATUS":"visible|OK","START":"18","DOMAIN":"Pfam:NAD_binding_8","EVALUE":"5.3e-16","TYPE":"PFAM"},{"START":"23","END":"460","STATUS":"visible|OK","DOMAIN":"Pfam:Amino_oxidase","EVALUE":"5.4e-73","TYPE":"PFAM"},{"END":"459","STATUS":"hidden|overlap","START":"446","DOMAIN":"low_complexity_region","TYPE":"INTRINSIC","EVALUE":"0"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSMUSP00000026013_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,41 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=5
+
+DOMAIN=Pfam:DAO
+START=15
+END=168
+EVALUE=1.5e-08
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=4.4e-06
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=5.3e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=5.4e-73
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=446
+END=459
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSMUSP00000040550_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"EVALUE":"7.9e-08","TYPE":"PFAM","DOMAIN":"Pfam:FAD_binding_2","START":"6","STATUS":"visible|OK","END":"45"},{"TYPE":"INTRINSIC","EVALUE":"0","END":"14","STATUS":"hidden|overlap","START":"7","DOMAIN":"low_complexity_region"},{"EVALUE":"4.1e-16","TYPE":"PFAM","START":"9","END":"75","STATUS":"visible|OK","DOMAIN":"Pfam:NAD_binding_8"},{"EVALUE":"7.6e-75","TYPE":"PFAM","START":"14","END":"451","STATUS":"visible|OK","DOMAIN":"Pfam:Amino_oxidase"},{"TYPE":"INTRINSIC","EVALUE":"0","DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"449","START":"437"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSMUSP00000040550_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,41 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=5
+
+DOMAIN=Pfam:FAD_binding_2
+START=6
+END=45
+EVALUE=7.9e-08
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=7
+END=14
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=Pfam:NAD_binding_8
+START=9
+END=75
+EVALUE=4.1e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=14
+END=451
+EVALUE=7.6e-75
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=437
+END=449
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSP00000340684_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"EVALUE":"5.7e-09","TYPE":"PFAM","DOMAIN":"Pfam:FAD_binding_3","STATUS":"visible|OK","END":"64","START":"13"},{"EVALUE":"5.5e-07","TYPE":"PFAM","END":"61","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:Pyr_redox"},{"END":"108","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:DAO","EVALUE":"4.6e-09","TYPE":"PFAM"},{"EVALUE":"7.2e-07","TYPE":"PFAM","END":"55","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:FAD_binding_2"},{"DOMAIN":"low_complexity_region","START":"16","STATUS":"hidden|overlap","END":"23","EVALUE":"0","TYPE":"INTRINSIC"},{"DOMAIN":"Pfam:NAD_binding_8","START":"18","STATUS":"visible|OK","END":"84","TYPE":"PFAM","EVALUE":"4.4e-16"},{"EVALUE":"3.5e-76","TYPE":"PFAM","DOMAIN":"Pfam:Amino_oxidase","START":"23","STATUS":"visible|OK","END":"460"},{"END":"71","STATUS":"hidden|overlap","START":"60","DOMAIN":"low_complexity_region","EVALUE":"0","TYPE":"INTRINSIC"},{"DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"459","START":"446","EVALUE":"0","TYPE":"INTRINSIC"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSP00000340684_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,69 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=9
+
+DOMAIN=Pfam:FAD_binding_3
+START=13
+END=64
+EVALUE=5.7e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Pyr_redox
+START=15
+END=61
+EVALUE=5.5e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:DAO
+START=15
+END=108
+EVALUE=4.6e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=7.2e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=16
+END=23
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=4.4e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=3.5e-76
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=60
+END=71
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=low_complexity_region
+START=446
+END=459
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSP00000367309_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"EVALUE":"2.6e-07","TYPE":"PFAM","DOMAIN":"Pfam:FAD_binding_3","START":"4","STATUS":"visible|OK","END":"51"},{"DOMAIN":"Pfam:Pyr_redox","STATUS":"visible|OK","END":"51","START":"6","EVALUE":"4.5e-06","TYPE":"PFAM"},{"DOMAIN":"Pfam:DAO","STATUS":"visible|OK","END":"211","START":"6","TYPE":"PFAM","EVALUE":"2.7e-08"},{"DOMAIN":"Pfam:FAD_binding_2","STATUS":"visible|OK","END":"45","START":"6","TYPE":"PFAM","EVALUE":"1.3e-07"},{"TYPE":"PFAM","EVALUE":"6.4e-16","END":"75","STATUS":"visible|OK","START":"9","DOMAIN":"Pfam:NAD_binding_8"},{"END":"451","STATUS":"visible|OK","START":"14","DOMAIN":"Pfam:Amino_oxidase","TYPE":"PFAM","EVALUE":"5.6e-75"},{"START":"437","END":"449","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region","EVALUE":"0","TYPE":"INTRINSIC"},{"TYPE":"INTRINSIC","EVALUE":"0","DOMAIN":"transmembrane_domain","START":"490","STATUS":"visible|OK","END":"512"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSP00000367309_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,62 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=8
+
+DOMAIN=Pfam:FAD_binding_3
+START=4
+END=51
+EVALUE=2.6e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Pyr_redox
+START=6
+END=51
+EVALUE=4.5e-06
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:DAO
+START=6
+END=211
+EVALUE=2.7e-08
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=6
+END=45
+EVALUE=1.3e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:NAD_binding_8
+START=9
+END=75
+EVALUE=6.4e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=14
+END=451
+EVALUE=5.6e-75
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=437
+END=449
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=490
+END=512
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSPTRP00000037440_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"END":"64","STATUS":"visible|OK","START":"13","DOMAIN":"Pfam:FAD_binding_3","TYPE":"PFAM","EVALUE":"1.5e-09"},{"TYPE":"PFAM","EVALUE":"1.2e-07","END":"61","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:Pyr_redox"},{"EVALUE":"1.3e-09","TYPE":"PFAM","DOMAIN":"Pfam:DAO","STATUS":"visible|OK","END":"130","START":"15"},{"DOMAIN":"Pfam:FAD_binding_2","STATUS":"visible|OK","END":"55","START":"15","EVALUE":"1.9e-07","TYPE":"PFAM"},{"TYPE":"INTRINSIC","EVALUE":"0","END":"23","STATUS":"hidden|overlap","START":"16","DOMAIN":"low_complexity_region"},{"EVALUE":"1.2e-16","TYPE":"PFAM","START":"18","END":"84","STATUS":"visible|OK","DOMAIN":"Pfam:NAD_binding_8"},{"DOMAIN":"Pfam:Amino_oxidase","START":"23","STATUS":"visible|OK","END":"460","EVALUE":"2.6e-76","TYPE":"PFAM"},{"TYPE":"INTRINSIC","EVALUE":"0","START":"60","END":"71","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region"},{"EVALUE":"0","TYPE":"INTRINSIC","START":"446","END":"459","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSPTRP00000037440_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,69 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=9
+
+DOMAIN=Pfam:FAD_binding_3
+START=13
+END=64
+EVALUE=1.5e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Pyr_redox
+START=15
+END=61
+EVALUE=1.2e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:DAO
+START=15
+END=130
+EVALUE=1.3e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=1.9e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=16
+END=23
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=1.2e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=2.6e-76
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=60
+END=71
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=low_complexity_region
+START=446
+END=459
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSPTRP00000037441_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"TYPE":"PFAM","EVALUE":"8.8e-08","DOMAIN":"Pfam:DAO","STATUS":"visible|OK","END":"211","START":"6"},{"DOMAIN":"Pfam:FAD_binding_2","STATUS":"visible|OK","END":"45","START":"6","EVALUE":"1.2e-06","TYPE":"PFAM"},{"END":"75","STATUS":"visible|OK","START":"9","DOMAIN":"Pfam:NAD_binding_8","TYPE":"PFAM","EVALUE":"5.2e-15"},{"DOMAIN":"Pfam:Amino_oxidase","START":"14","STATUS":"visible|OK","END":"451","EVALUE":"7.1e-74","TYPE":"PFAM"},{"EVALUE":"0","TYPE":"INTRINSIC","START":"437","END":"449","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region"},{"EVALUE":"0","TYPE":"INTRINSIC","DOMAIN":"transmembrane_domain","STATUS":"visible|OK","END":"512","START":"490"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSPTRP00000037441_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,48 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=6
+
+DOMAIN=Pfam:DAO
+START=6
+END=211
+EVALUE=8.8e-08
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=6
+END=45
+EVALUE=1.2e-06
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:NAD_binding_8
+START=9
+END=75
+EVALUE=5.2e-15
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=14
+END=451
+EVALUE=7.1e-74
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=437
+END=449
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=490
+END=512
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSRNOP00000043466_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"DOMAIN":"Pfam:NAD_binding_8","START":"1","STATUS":"visible|OK","END":"59","TYPE":"PFAM","EVALUE":"5.7e-10"},{"EVALUE":"8.8e-71","TYPE":"PFAM","DOMAIN":"Pfam:Amino_oxidase","STATUS":"visible|OK","END":"435","START":"1"},{"DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"433","START":"421","EVALUE":"0","TYPE":"INTRINSIC"},{"DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"487","START":"470","EVALUE":"0","TYPE":"INTRINSIC"},{"EVALUE":"0","TYPE":"INTRINSIC","DOMAIN":"transmembrane_domain","START":"473","STATUS":"visible|OK","END":"495"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSRNOP00000043466_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,41 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=5
+
+DOMAIN=Pfam:NAD_binding_8
+START=1
+END=59
+EVALUE=5.7e-10
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=1
+END=435
+EVALUE=8.8e-71
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=421
+END=433
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=low_complexity_region
+START=470
+END=487
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=473
+END=495
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSRNOP00000063784_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"TYPE":"PFAM","EVALUE":"1.2e-09","DOMAIN":"Pfam:DAO","STATUS":"visible|OK","END":"169","START":"15"},{"TYPE":"PFAM","EVALUE":"3.1e-07","DOMAIN":"Pfam:FAD_binding_2","STATUS":"visible|OK","END":"55","START":"15"},{"DOMAIN":"Pfam:NAD_binding_8","START":"18","STATUS":"visible|OK","END":"84","EVALUE":"2.8e-17","TYPE":"PFAM"},{"DOMAIN":"Pfam:Amino_oxidase","START":"23","STATUS":"visible|OK","END":"460","EVALUE":"1e-74","TYPE":"PFAM"},{"TYPE":"INTRINSIC","EVALUE":"0","END":"459","STATUS":"hidden|overlap","START":"446","DOMAIN":"low_complexity_region"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSRNOP00000063784_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,41 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=5
+
+DOMAIN=Pfam:DAO
+START=15
+END=169
+EVALUE=1.2e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=3.1e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=2.8e-17
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=1e-74
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=446
+END=459
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSSSCP00000013044_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"DOMAIN":"Pfam:FAD_binding_3","STATUS":"visible|OK","END":"62","START":"13","TYPE":"PFAM","EVALUE":"2.5e-09"},{"START":"14","END":"25","STATUS":"hidden|overlap","DOMAIN":"low_complexity_region","EVALUE":"0","TYPE":"INTRINSIC"},{"END":"58","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:Pyr_redox","EVALUE":"3.3e-07","TYPE":"PFAM"},{"TYPE":"PFAM","EVALUE":"6.8e-09","END":"105","STATUS":"visible|OK","START":"15","DOMAIN":"Pfam:DAO"},{"TYPE":"PFAM","EVALUE":"1.1e-07","START":"15","END":"55","STATUS":"visible|OK","DOMAIN":"Pfam:FAD_binding_2"},{"DOMAIN":"Pfam:NAD_binding_8","STATUS":"visible|OK","END":"84","START":"18","EVALUE":"2.4e-16","TYPE":"PFAM"},{"EVALUE":"6.5e-77","TYPE":"PFAM","START":"23","END":"460","STATUS":"visible|OK","DOMAIN":"Pfam:Amino_oxidase"},{"TYPE":"INTRINSIC","EVALUE":"0","DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"71","START":"60"},{"END":"458","STATUS":"hidden|overlap","START":"446","DOMAIN":"low_complexity_region","EVALUE":"0","TYPE":"INTRINSIC"},{"TYPE":"INTRINSIC","EVALUE":"0","DOMAIN":"transmembrane_domain","START":"497","STATUS":"visible|OK","END":"519"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSSSCP00000013044_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,76 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=10
+
+DOMAIN=Pfam:FAD_binding_3
+START=13
+END=62
+EVALUE=2.5e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=14
+END=25
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=Pfam:Pyr_redox
+START=15
+END=58
+EVALUE=3.3e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:DAO
+START=15
+END=105
+EVALUE=6.8e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:FAD_binding_2
+START=15
+END=55
+EVALUE=1.1e-07
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:NAD_binding_8
+START=18
+END=84
+EVALUE=2.4e-16
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=23
+END=460
+EVALUE=6.5e-77
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=60
+END=71
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=low_complexity_region
+START=446
+END=458
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=497
+END=519
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSSSCP00000028353_SMART_results.json	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,1 @@
+[{"TYPE":"PFAM","EVALUE":"1.9e-09","DOMAIN":"Pfam:NAD_binding_8","START":"1","STATUS":"visible|OK","END":"59"},{"EVALUE":"9.8e-76","TYPE":"PFAM","DOMAIN":"Pfam:Amino_oxidase","STATUS":"visible|OK","END":"435","START":"1"},{"TYPE":"INTRINSIC","EVALUE":"0","DOMAIN":"low_complexity_region","STATUS":"hidden|overlap","END":"433","START":"421"},{"DOMAIN":"transmembrane_domain","START":"474","STATUS":"visible|OK","END":"496","TYPE":"INTRINSIC","EVALUE":"0"}]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ENSSSCP00000028353_SMART_results.txt	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,34 @@
+-- SMART RESULT TEXTFORMAT --
+
+CRC_PASSED=1
+NUMBER_OF_FEATURES_FOUND=4
+
+DOMAIN=Pfam:NAD_binding_8
+START=1
+END=59
+EVALUE=1.9e-09
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=Pfam:Amino_oxidase
+START=1
+END=435
+EVALUE=9.8e-76
+TYPE=PFAM
+STATUS=visible|OK
+
+DOMAIN=low_complexity_region
+START=421
+END=433
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=hidden|overlap
+
+DOMAIN=transmembrane_domain
+START=474
+END=496
+EVALUE=0
+TYPE=INTRINSIC
+STATUS=visible|OK
+
+-- FINISHED --
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/seq.fa	Thu Jun 15 07:52:09 2017 -0400
@@ -0,0 +1,24 @@
+>ENSCAFP00000021330
+MSGKCDVVMVGGGISGMAAAKLLHDFGLNVVVLEARDRVGGRTYTIRNQKVKYLDLGGSYVGPTQNCILRLAKELGLETYKVNEVERLIHHVKGKSYPFRGPFPPVWNPIAYLDHNNLWRTMDDMGREIPSDAPWKAPLAEEWDHMTMKELLDKICWTESAKQLATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFVGGSGQVSERIMDLLGDQVKLERPVTHIDQTGENVLVETLNHEVYEAKYVISAIPPTLGMKIHFNPPLPMMRNQLITRVPLGSVIKCIVYYKEPFWRKKDYCGTMIIEGEEAPIAYTLDDTKPDGNYAAIMGFILAHKARKLARLTKDERMKKLCELYAKVLGSQEALQPVHYEEKNWCEEQYSGGCYTTYFPPGIMTQYGRVLRQPVGRIYFAGTETATHWSGYMEGAVEAGERAAREILHAMGKIPEDEIWQSEPESVDVPAQPITTTFLERHLPSVPGLLRLIGLTAIFSATALGVLAHKRGLLVRV
+>ENSSSCP00000028353
+MAAAKLLHDSGLSVIVLEARDRVGGRTYTVRNQQVKYVDLGGSYVGPTQNRILRLSKELGLETYKVNEVERLIHYVKGKSYPFRGPLPPVRNPITFLDLNNLWRTVDDMGREIPSDAPWKAPLAEQWDQMTMKELLDKLCWTESSKQLATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFVGGSGQVTERIKDLLGDRVKLERPVVHIDQTGENVLVETLNHEVYEAKYVISAIPPVLGMKIHFSPPLPMMRNQLITRVPLGSVIKCIVYYKEPFWRHKDYCGSMIIEGEEAPIAYTLDDSKPDGSCAAIIGFILAHKARKLARLTKEERLKKLCDLYAKVLGSKEALNPVHYEEKNWCEEQYSAGCYTTYFPPGIMTQYGRVLRQPVGRIYFAGTETATHWSGYMEGAVEAGERAAREILHAMGKIPEDEIWQSEPESVDVPAKPITTTFLERHLPSVPGLLRLIGLTAIFSATALGYLAHKRGLLVRV
+>ENSMUSP00000040550
+MSNKSDVIVVGGGISGMAAAKLLHDCGLSVVVLEARDRVGGRTYTIRNKNVKYVDLGGSYVGPTQNRILRLAKELGLETYKVNEVERLIHFVKGKSYAFRGPFPPVWNPITYLDNNNLWRTMDEMGQEIPSDAPWKAPLAEEWDYMTMKELLDKICWTKSTKQIATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFIGGSGQVSERIKDILGDRVKLERPVIHIDQTGENVIVKTLNHEIYEAKYVISAIPPALGMKIHYSPPLPMLRNQLISRVPLGSVIKCMVYYKEPFWRKKDFCGTMVIEGEEAPIAYTLDDTKPDGTYAAIMGFILAHKARKLVRLTKEERLRKLCELYAKVLNSQEALQPVHYEEKNWCEEQYSGGCYTTYFPPGILTQYGRVLRQPVGKIFFAGTETASHWSGYMEGAVEAGERAAREILHAIGKIPEDEIWQPEPESLDVPARPITSTFLERHLPSVPGLLKLFGLTTILSATALGFLAHKRGLFVHF
+>ENSRNOP00000043466
+MAAAKLLHDCGLSVVVLEARDRVGGRTYTIRNKNVKYVDLGGSYVGPTQNRILRLAKELGLETYKVNEVERLIHFVKGKSYAFRGPFPPVWNPITYLDYNNLWRTMDEMGQEIPSDAPWKAPLAEEWDYMTMKELLDKICWTNSTKQIATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFIGGSGQVSERIKDILGDRVKLERPVIHIDQTGENVVVKTLNHEIYEAKYVISAIPPVLGMKIHHSPPLPILRNQLITRVPLGSVIKCMVYYKEPFWRKKDFCGTMVIEGEEAPIAYTLDDTKPDGSCAAIMGFILAHKARKLVRLTKEERLRKLCELYAKVLNSQEALQPVHYEEKNWCEEQYSGGCYTAYFPPGILTQYGRVLRQPVGKIFFAGTETASHWSGYMEGAVEAGERAAREILHAIGKIPEDEIWQPEPESVDVPARPITNTFLERHLPSVPGLLKLLGLTTILSATALGFLAHKKGLFVRF
+>ENSP00000367309
+MSNKCDVVVVGGGISGMAAAKLLHDSGLNVVVLEARDRVGGRTYTLRNQKVKYVDLGGSYVGPTQNRILRLAKELGLETYKVNEVERLIHHVKGKSYPFRGPFPPVWNPITYLDHNNFWRTMDDMGREIPSDAPWKAPLAEEWDNMTMKELLDKLCWTESAKQLATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFVGGSGQVSERIMDLLGDRVKLERPVIYIDQTRENVLVETLNHEMYEAKYVISAIPPTLGMKIHFNPPLPMMRNQMITRVPLGSVIKCIVYYKEPFWRKKDYCGTMIIDGEEAPVAYTLDDTKPEGNYAAIMGFILAHKARKLARLTKEERLKKLCELYAKVLGSLEALEPVHYEEKNWCEEQYSGGCYTTYFPPGILTQYGRVLRQPVDRIYFAGTETATHWSGYMEGAVEAGERAAREILHAMGKIPEDEIWQSEPESVDVPAQPITTTFLERHLPSVPGLLRLIGLTTIFSATALGFLAHKRGLLVRV
+>ENSPTRP00000037441
+MSNKCDVVVVGGGISGKAAAKLLHDSGLNVVVLEARDRVGGRTYTLRNQKVKYVDLGGSYVGPTQNRILRLAKELGLETYKVNEVERLIHHVKGKSYPFRGPFPPVWNPITYLDHNNFWRTMDDMGREIPSDAPWKAPLAEEWDNMTMKELLDKLCWTESAKQLATLFVNLCVTAETHEVSALWFLWYVKQCGGTTRIISTTNGGQERKFVGGSGQVSERIMDLLGDRVKLERPVIYIDQTRENVLVETLNHEMYEAKYVISAIPPTLGMKIHFNPPLPMMRNQMITRVPLGSVIKCIVYYKEPFWRKKDYCGTMIIDGEEAPVAYTLDDTKPEGNYAAIMGFILAHKARKLARLTKEERLKKLCELYAKVLGSPEALEPVHYEEKNWCEEQYSGGCYTTYFPPGILTQYGRVLRQPVDRIYFAGTETATHWSGYMEGAVEAGERAAREILHAMGKIPEDEIWQSEPESVDVPAQPITTTFLERHLPSVPGLLRLIGLTTIFSATALGFLAHKRGLLVRV
+>ENSRNOP00000063784
+MTDLEKPNLAGHMFDVVVIGGGISGLAAAKLLSEYKINVLVLEARDRVGGRTYTVRNEHVKWVDVGGAYVGPTQNRILRLSKELGIETYKVNVNERLVQYVKGKTYPFRGAFPPVWNPLAYLDYNNLWRTMDEMGKEIPVDAPWQARHAQEWDKMTMKDLIDKICWTKTAREFAYLFVNINVTSEPHEVSALWFLWYVRQCGGTARIFSVTNGGQERKFVGGSGQVSEQIMGLLGDKVKLSSPVTYIDQTDDNIIVETLNHEHYECKYVISAIPPILTAKIHFKPELPPERNQLIQRLPMGAVIKCMVYYKEAFWKKKDYCGCMIIEDEEAPIAITLDDTKPDGSLPAIMGFILARKADRLAKLHKDIRKRKICELYAKVLGSQEALYPVHYEEKNWCEEQYSGGCYTAYFPPGIMTQYGRVIRQPVGRIYFAGTETATQWSGYMEGAVEAGERAAREVLNALGKVAKKDIWVEEPESKDVPAIEITHTFLERNLPSVPGLLKITGVSTSVALLCFVLYKIKKLPC
+>ENSMUSP00000026013
+MTDLEKPSITGHMFDVVVIGGGISGLAAAKLLSEYKINVLVLEARDRVGGRTYTVRNEHVKWVDVGGAYVGPTQNRILRLSKELGIETYKVNVNERLVQYVKGKTYPFRGAFPPVWNPLAYLDYNNLWRTMDDMGKEIPVDAPWQARHAEEWDKITMKDLIDKICWTKTAREFAYLFVNINVTSEPHEVSALWFLWYVRQCGGTSRIFSVTNGGQERKFVGGSGQISEQIMVLLGDKVKLSSPVTYIDQTDDNIIIETLNHEHYECKYVISAIPPVLTAKIHFKPELPPERNQLIQRLPMGAVIKCMVYYKEAFWKKKDYCGCMIIEDEEAPISITLDDTKPDGSMPAIMGFILARKAERLAKLHKDIRKRKICELYAKVLGSQEALSPVHYEEKNWCEEQYSGGCYTAYFPPGIMTLYGRVIRQPVGRIYFAGTETATQWSGYMEGAVEAGERAAREVLNALGKVAKKDIWVQEPESKDVPALEITHTFLERNLPSVPGLLKITGFSTSVALLCFVLYKFKQPQS
+>ENSCAFP00000021307
+MASREKTSIEGHMFDVVVIGGGISGLSAAKLLAEHEVDVLVLEARDRVGGRTYTVRNEHVDYVDVGGAYVGPTQNRILRLSKELGLETYKVNVNERLVQYVKGKTYPFRGAFPPVWNPIAYLDYNNLWRTMDNMGKEIPADAPWEAPHAEEWDKMTMKDLIDKICWTKTARRFASLFVNINVTSEPHEVSALWFLWYVKQCGGTTRIFSVTNGGQERKFVGGSGQVSERIMERLGDRVKLKRPVTYVDQSDDNIIIETLNHELYECKYVISAIPPTLTAKIHFRPELPSERNQLIQRLPMGAIIKCMMYYKEAFWKKKDYCGCMIIEDEEAPISITLDDTKPDGSLPAIMGFILARKADRLAKLHKEIRKRKICELYAKVLGSQEALQPVHYEEKNWCEEQYSGGCYTAYFPPGIMTHYGRVIRQPFGRIYFAGTETATHWSGYMEGAVEAGERTAREVLNALGRVAEKDLKTQEPESKDVPAMEITHTFWERNLPSVTGLLKLIGFTTSVTALWIVAYKFRLLRRS
+>ENSSSCP00000013044
+MERQEKANNAGHMVDVVVIGGGISGLSAAKLLNEYGINVLVLEARDRVGGRTYTVRNENVDYVDVGGAYVGPTQNRILRLSKELGLETYKVNVNECLVQYVKGKSYPFRGAFPPVWNPIAYLDYNNLWRTMDDMGKKIPADAPWESPHAEEWDKMTMKDLIDKICWTKTAKRFASLFVNINVTSEPHEVSALWFLWYVKQCGGTTRIFSVTNGGQERKFVGGSGQVSERIMHLLGDRVKLRCPVTYVDQSGDNIIVETLNHELYECQYVISAIPPTLTAKIHFRPELPSERNQLIQRLPMGAIIKCMMYYKEAFWKKKNYCGCMIIEDEEAPISITLDDTKPDGSLPAIMGFILARKADRLAKVHKEIRKRKICELYAKVLGSQEALHPVHYEEKNWCEEQYSGGCYTAYFPPGIMTQYGRVIRQPVGRIFFAGTETATQWSGYMEGAVEAGERAAREILNALGKVSKKDIWLREPESEDVPAFEITRTFWERNLPSVTGLLKIIGFSTSVTALWLAVYKFRLLTRS
+>ENSPTRP00000037440
+MENQEKASIAGHMFDVVVIGGGISGLSAAKLLTEYGVSVLVLEARDRVGGRTYTIRNEHVDYVDVGGAYVGPTQNRILRLSKELGIETYKVNVSERLVQYVKGKTYPFRGAFPPVWNPIAYLDYNNLWRTIDNMGKEIPNDAPWEAQHADEWDKMTMKELIDKICWTKTARRFAYLFVNINVTSEPHEVSALWFLWYVKQCGGTTRIFSVTNGGQERKFVGGSGQVSERIMDLLGDQVKLNHPVTHVDQSSDNIIIETLNHEHYECKYVINAIPPTLTAKIHFRPELPAERNQLIQRLPMGAIIKCMMYYKEAFWKKKDYCGCMIIEDEDAPISITLDDTKPDGSLPAIMGFILARKADRLAKLHKEIRKKKICELYAKVLGSQEALHPVHYEEKNWCEEQYSGGCYTAYFPPGIMTQYGRVIRQPVGRIFFAGTETATKWSGYMEGAVEAGERAAREVLNGLGKVTEKDIWVQEPESKDVPAVEITHTFWERNLPSVSGLLKIIGFSTSVTTLGFVLYKYKLLPRS
+>ENSP00000340684
+MENQEKASIAGHMFDVVVIGGGISGLSAAKLLTEYGVSVLVLEARDRVGGRTYTIRNEHVDYVDVGGAYVGPTQNRILRLSKELGIETYKVNVSERLVQYVKGKTYPFRGAFPPVWNPIAYLDYNNLWRTIDNMGKEIPTDAPWEAQHADKWDKMTMKELIDKICWTKTARRFAYLFVNINVTSEPHEVSALWFLWYVKQCGGTTRIFSVTNGGQERKFVGGSGQVSERIMDLLGDQVKLNHPVTHVDQSSDNIIIETLNHEHYECKYVINAIPPTLTAKIHFRPELPAERNQLIQRLPMGAVIKCMMYYKEAFWKKKDYCGCMIIEDEDAPISITLDDTKPDGSLPAIMGFILARKADRLAKLHKEIRKKKICELYAKVLGSQEALHPVHYEEKNWCEEQYSGGCYTAYFPPGIMTQYGRVIRQPVGRIFFAGTETATKWSGYMEGAVEAGERAAREVLNGLGKVTEKDIWVQEPESKDVPAVEITHTFWERNLPSVSGLLKIIGFSTSVTALGFVLYKYKLLPRS