GithubHelp home page GithubHelp logo

eol-globi-data-js's Introduction

eol-globi-data-js

Build Status Code Climate NPM NPM

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.

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

usage

Make sure to include eol-globi-data-js in your project / page.

Node Package Manager (NPM)

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 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 .

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:

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"
   }
]

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:

{ [{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.

// 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.

// 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 } ]

globiData.findStats(search, callback)

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 }

eol-globi-data-js's People

Contributors

coding46 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

coding46

eol-globi-data-js's Issues

Tag versions

Hey Jorrit,

This is Bemi (bemson) from Sudo Room. Since you're actively working on this repo, would you tag versions of this library (or, at least, apply one called "stable")? That way, I could know which one to use.

Happy travels and thanks in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.