Module: SequenceServer::Links

Includes:
ERB::Util
Defined in:
lib/sequenceserver/links.rb

Overview

Module to contain methods for generating sequence retrieval links.

Constant Summary collapse

NCBI_ID_PATTERN =
/gi\|(\d+)\|/

Instance Method Summary collapse

Instance Method Details

#fasta_downloadObject


77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/sequenceserver/links.rb', line 77

def fasta_download
  accession  = encode self.accession
  database_ids = encode querydb.map(&:id).join(' ')
  url = "get_sequence/?sequence_ids=#{accession}" \
        "&database_ids=#{database_ids}&download=fasta"

  {
    :order => 1,
    :title => 'FASTA',
    :url   => url,
    :class => 'download',
    :icon  => 'fa-download'
  }
end

#ncbiObject


92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/sequenceserver/links.rb', line 92

def ncbi
  return nil unless id.match(NCBI_ID_PATTERN)
  ncbi_id = Regexp.last_match[1]
  ncbi_id = encode ncbi_id
  url = "http://www.ncbi.nlm.nih.gov/#{querydb.first.type}/#{ncbi_id}"
  {
    :order => 2,
    :title => 'NCBI',
    :url   => url,
    :icon  => 'fa-external-link'
  }
end

#sequence_viewerObject

Link generators return a Hash like below.

# Required. Display title.
:title => "title",

# Required. Generated url.
:url => url,

# Optional. Left-right order in which the link should appear.
:order => num,

# Optional. Classes, if any, to apply to the link.
:class => "class1 class2",

# Optional. Class name of a FontAwesome icon to use.
:icon => "fa-icon-class"

If no url could be generated, return nil.

Helper methods


Following helper methods are available to help with link generation.

encode:
  URL encode query params.

  Don't use this function to encode the entire URL. Only params.

  e.g:
      sequence_id = encode sequence_id
      url = "http://www.ncbi.nlm.nih.gov/nucleotide/#{sequence_id}"

querydb:
  Returns an array of databases that were used for BLASTing.

whichdb:
  Returns the database from which the given hit came from.

  e.g:

      hit_database = whichdb

Examples:


See methods provided by default for an example implementation.


62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/sequenceserver/links.rb', line 62

def sequence_viewer
  accession  = encode self.accession
  database_ids = encode querydb.map(&:id).join(' ')
  url = "get_sequence/?sequence_ids=#{accession}" \
        "&database_ids=#{database_ids}"

  {
    :order => 0,
    :url   => url,
    :title => 'Sequence',
    :class => 'view-sequence',
    :icon  => 'fa-eye'
  }
end