A javascript libray to help find out what species interact (e.g. eats, is eaten by) with. Data provided via Global Biotic Interactions (GloBI, https://globalbioticinteractions.org).
If you'd like to see more that the samples below, please see test/ and example/ directories.
var consoleDiv = document.getElementById('console');
// lookup some species by some string 'sea otter'
var closeMatchCallback = function(closeMatches) {
closeMatches.forEach(function(closeMatch){
// log scientific names of matches
console.log(closeMatch.scientificName);
var p = document.createElement('p');
p.innerHTML = 'close match for sea otter [' + closeMatch.scientificName + ']';
consoleDiv.appendChild(p);
});
};
globiData.findCloseTaxonMatches('sea otter', closeMatchCallback);
// find out what a sea otter (Enhydra lutris) eats. . .
var search = {sourceTaxonScientificName: 'Enhydra lutris', interactionType: 'preysOn'};
var callback = function(interactions) {
interactions.forEach(function(interaction) {
var p = document.createElement('p');
p.innerHTML = '[' + interaction.source.name + '] preys on [' + interaction.target.name + ']';
consoleDiv.appendChild(p);
});
};
globiData.findSpeciesInteractions(search, callback);
// lookup some more info (including image urls) about the sea otter
var infoCallback = function(taxonInfo) {
var name = taxonInfo.commonName + ' (<i>' + taxonInfo.scientificName + '</i>)';
var infoDiv = document.createElement('div');
infoDiv.innerHTML = '<table class="image"><caption align="bottom">' + name + '</caption>'
+ '<tr><td><img src="' + taxonInfo.thumbnailURL + '"/></td></tr></table>';
consoleDiv.appendChild(infoDiv);
};
globiData.findTaxonInfo('Enhydra lutris', infoCallback);
Make sure to include eol-globi-data-js in your project / page.
var globiData = require('globi-data');
for example node project that uses globi-data see: http://github.com/jhpoelen/eol-globi-js .
include globi-data-dist.js in your web resources and include using script tag.
...
<script src="globi-data-dist.js" charset="utf-8">
...
For example web project, see github repository http://github.com/eol-globi/eol-globi.github.io that is deployed using github pages here: http://eol-globi.github.io .
Returns available interaction types.
Provides a list of interactions to callback specific to search options. Possible search options are:
-
sourceTaxonScientificName
-
targetTaxonScientificName
-
interactionType
-
lat / lng: latitude, longitude of interactions.
-
nw_lat, nw_lng, se_lat, se_lng: spatial rectangle specified by north west and south east positions:
nw(lat,lng) ------ ne
| |
| |
sw ----------------se(lat,lng)
an example of search options, where we'd like to find the prey of Hardhead Catfish (Ariopsis felis) in a specific area:
options = {sourceTaxonScientificName: 'Ariopsis felis',
interactionType: 'preysOn',
nw_lat:30.52, nw_lng:-99.51, se_lat: 20.52, se_lng:-82.75}
or example of search options, where we'd like to find which Arthropods (Arthropoda) of Hardhead Catfish (Ariopsis felis) in a specific area:
options = {sourceTaxonScientificName: 'Ariopsis felis',
targetTaxonScientificName: 'Arthropoda'
interactionType: 'preysOn',
nw_lat:30.52, nw_lng:-99.51, se_lat: 20.52, se_lng:-82.75}
example of returned interactions: two interactions where Hardhead Catfish (Ariopsis felis) eats Chordates (Chordata) and Palaemonid Shrimps (Palaemonidae):
[
{
"source":{"name":"Ariopsis felis"},
"target":{"name":"Chordata"},
"type":"preysOn"
},
{
"source":{"name":"Ariopsis felis"},
"target":{"name":"Palaemonidae"},
"type":"preysOn"
}
]
Find close taxonomic (organism, species names) matches to provided input string.
For instance, close taxonomic matches with search string sea ottr
are:
{ [{scientificName: 'Enhydra lutris',
commonNames: [ { name: 'Seeotter', lang: 'de' },{ name: 'sea otter', lang: 'en'} ],
path: ['Animalia', 'Chordata', 'Mammalia', 'Carnivora', 'Mustelidae', 'Enhydra', 'Enhydra lutris']},
...]
Find the sources that contributed one or more studies. Result is a list of string.
// example of results
Find statistics about individual studies that contributed interaction datasets to GloBI. Optionally, you can provide a source variable in the search object to limit studies to a specific source.
// stats for only SPIRE studies
var search = { source: 'SPIRE' }
var callback = function(statList) {
console.log('study statistics:' + statList);
}
globi.findStudyStats(search, callback);
// stats for all studies, notice the empty search option object
globi.findStudyStats({}, callback);
example of information retrieved:
[ { reference: 'Nick Fotheringham Effects of Offshore Oil Field Structures on Their Biotic Environment: Benthos and Plankton',
totalInteractions: 138,
totalSourceTaxa: 23,
totalTargetTaxa: 28 },
{ reference: 'Christian RR, Luczkovich JJ (1999) Organizing and understanding a winter\'s seagrass foodweb network through effective trophic levels. Ecol Model 117:99-124',
totalInteractions: 270,
totalSourceTaxa: 82,
totalTargetTaxa: 85 } ]
Find statistics across all datasets. Optionally you can limit the statistics to studies contributed by a specific source.
// stats for only SPIRE studies
var search = { source: 'SPIRE' }
var callback = function(stats) {
console.log('aggregate statistics:' + statList);
}
globi.findStats(search, callback);
// stats aggregated across all studies, notice the empty search option object
globi.findStats({}, callback);
example of resulting statistics object:
{ numberOfStudies: 251, totalInteractions: 431842, totalSourceTaxa: 10194, totalTargetTaxa: 19477 }