UNPKG

globi-data

Version:

Find out who eats who in the world: what do rats (Rattus rattus) eat?, or what do hardhead catfish (Ariopsis felis) eat?. Data provided via Global Biotic Interactions (GloBI, https://globalbioticinteractions.org) .

199 lines (154 loc) 7.21 kB
# eol-globi-data-js [![Build Status](https://travis-ci.org/jhpoelen/eol-globi-data-js.svg?branch=master)](https://travis-ci.org/jhpoelen/eol-globi-data-js) [![Code Climate](https://codeclimate.com/github/jhpoelen/eol-globi-data-js/badges/gpa.svg)](https://codeclimate.com/github/jhpoelen/eol-globi-data-js) [![NPM](https://nodei.co/npm/globi-data.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/object-hash) [![NPM](https://nodei.co/npm-dl/globi-data.png?months=6&height=3)](https://www.npmjs.com/package/object-hash) 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). # example If you'd like to see more that the samples below, please see test/ and example/ directories. ```javascript 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); ``` [![Build Status](https://ci.testling.com/jhpoelen/eol-globi-data-js.png)](https://ci.testling.com/jhpoelen/eol-globi-data-js) # usage Make sure to include eol-globi-data-js in your project / page. ## Node Package Manager (NPM) ```javascript var globiData = require('globi-data'); ``` for example node project that uses globi-data see: http://github.com/jhpoelen/eol-globi-js . ## Directly into html include [globi-data-dist.js](globi-data-dist.js) in your web resources and include using script tag. ```html ... <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 . # methods ## globiData.findInteractionTypes(callback) Returns available interaction types. ## globiData.findSpeciesInteractions(searchOptions, callback) Provides a list of interactions to callback specific to search options. Possible search options are: 1. sourceTaxonScientificName 2. targetTaxonScientificName 3. interactionType 4. lat / lng: latitude, longitude of interactions. 5. 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: ```javascript 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: ```javascript 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)_: ```javascript [ { "source":{"name":"Ariopsis felis"}, "target":{"name":"Chordata"}, "type":"preysOn" }, { "source":{"name":"Ariopsis felis"}, "target":{"name":"Palaemonidae"}, "type":"preysOn" } ] ``` ## globiData.findCloseTaxonMatches(searchString, callback) Find close taxonomic (organism, species names) matches to provided input string. For instance, close taxonomic matches with search string ```sea ottr``` are: ```javascript { [{scientificName: 'Enhydra lutris', commonNames: [ { name: 'Seeotter', lang: 'de' },{ name: 'sea otter', lang: 'en'} ], path: ['Animalia', 'Chordata', 'Mammalia', 'Carnivora', 'Mustelidae', 'Enhydra', 'Enhydra lutris']}, ...] ``` ## globiData.findSources(callback) Find the sources that contributed one or more studies. Result is a list of string. ```javascript // example of results ``` ## globiData.findStudyStats(search, callback) 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. ```javascript // 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: ```javascript [ { 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 } ] ``` ## globiData.findStats(search, callback) Find statistics across all datasets. Optionally you can limit the statistics to studies contributed by a specific source. ```javascript // 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: ```javascript { numberOfStudies: 251, totalInteractions: 431842, totalSourceTaxa: 10194, totalTargetTaxa: 19477 } ```