29
araport.org Developing Apps: Exposing Your Data Through Araport Matt Vaughn Director, Life Sciences Computing Texas Advanced Computing Center [email protected] | @mattdotvaughn | www.slideshare.net/mattdotvaughn

ICAR 2015 Workshop - Matt Vaughn

  • Upload
    araport

  • View
    232

  • Download
    4

Embed Size (px)

Citation preview

araport.org

Developing Apps: Exposing Your Data Through Araport

Matt Vaughn Director, Life Sciences Computing Texas Advanced Computing Center

[email protected] | @mattdotvaughn | www.slideshare.net/mattdotvaughn

araport.org

Overview

•  Why contribute to Araport?

•  How does one create a web service?

•  How does one build a Science App?

•  Commonly asked questions

•  What resources are available?

araport.org

Why become an Araport contributor?

• Recognition • Exposure •  Feedback •  Interoperability • Professional presentation • Reusability

araport.org

Araport: A Road Map

API.ARAPORT.ORG

CLI clients, Scripts, 3rd party

applications

Core Resources

AGAVE

apps

meta

files

profile

jobs systems

ADAMA manage

enroll

a b c d e f

Data Resources

API Types •  Query •  Map* •  Generic •  Pass-through

•  Single-sign on •  Metering •  Unified logging •  API versioning •  Automatic HTTPS + CORS

REST*

CGI

SOAP New Web Services

InterMine

Chado & Tripal

Computing

Storage Database

APPS

APIs

araport.org

HOW DOES ONE CREATE A WEB SERVICE?

araport.org

Araport Data and Microservice API

•  Implement REST-like web services •  Allow real-time integration with and transformation of

existing web-based services •  Promote interoperability

–  Simple, extensible controlled vocabulary for queries –  Responses can conform to common schemas* –  GLOBAL SEARCH

•  Solve some annoying problems –  Provide HTTPS + valid SSL certificate –  Enable Cross Origin Scripting Support (CORS) –  Implement authenticated access to services

•  BE EASY TO ADOPT, USE, AND MAINTAIN

araport.org

Case Study: TIGR Gene Expression Database

•  NSF Arabidopsis 2010 project (#0520022)

•  How to make this resource more broadly usable and useful? – Create modernized web

services – Build an interactive

science app

araport.org

Creating a new data service in 5 easy steps

8

•  Check out a template

•  Write and debug service locally

•  Write docs •  Describe data

sources

Push to GitHub*

Register new service using ADAMA

Test and refine the microservice

Share with colleagues or the public

Develop a Science App using APIs

Write Code

Upload Enroll @ Araport

Use it Share Make a Science

App

araport.org

Example Source Code

https://github.com/Arabidopsis-Information-Portal/

jcvi-qpcr-services

Shared code among services

ADAMA services have search and/or list functions

Implement some query logic

Make a request to the server

Transform result to JSON & send it back

araport.org

Example Metadata (1)

Who has contributed?

Basic display fields

Configuration fields and values

araport.org

Example Metadata (2)

Definitions for the service’s various parameters

What are the data sources (can be nested!)

araport.org

Creating a new data service in 5 easy steps

12

•  Check out a template

•  Write and debug service locally

•  Write docs •  Describe data

sources

Push to GitHub*

Register new service using ADAMA

Test and refine the microservice

Share with colleagues or the public

Develop a Science App using APIs

Write Code

Upload Enroll @ Araport

Use it Share Make a Science

App

araport.org

Using the new service (1)

•  Use the Araport API Explorer Home->Tools->Web Services->Community Data

•  Use the Javascript console

embedded in your browser

•  Manually via command line tools like cURL or httpie

araport.org

Using the new service (2)

More Information

araport.org

Using the new service (3)

Try this service

araport.org

Using the new service (4)

Every Araport web service is available via Javascript console

Data API namespace

Individual Data API

> Agave.api.adama.getNamespaces()

araport.org

Using the new service (5)

curl -X GET -sk -H "Authorization: Bearer 17f4700fb4ffa9ab32f1bf560e8a2b8" https://api.araport.org/community/v0.3/jcvi/image_by_id_v0.1/search?image_id=237 -O "237.png"

•  Perform a GET using an Araport-issued Oauth token to the image_by_id community service; Save the result to a file named 237.png

•  Every Araport-hosted web service can be used by scripts

•  We offer Javascript and Python code libraries available as well

araport.org

Using the new service (6)

BUILD A SCIENCE APP THAT CONSUMES IT

JCVI QPCR app integrates half a dozen web service APIs Some from the QPCR service itself, some from ThaleMine Araport is a mash-up engine for plant science data

araport.org

HOW DOES ONE BUILD A SCIENCE APP?

araport.org

5 Steps to Creating a Science App

Install tool chain (just

once)

Launch a new Science App (or clone an existing

one)

Interactively design and build your

app

Push to GitHub

Install @ Araport

then Publish!

Setup Create New Write Code

Upload Share

araport.org

Anatomy of a Science App Your assets live inside /app

Static HTML content for laying out the app

JavaScript functions defined for the app

Cascading Style Sheets (CSS) specific to the app

JavaScript dependencies automatically managed via Bower

https://github.com/Arabidopsis-Information-Portal/ATExpressionProfilingApp

araport.org

1,2,3 Development

•  Application generator for quickly bootstrapping application development $  yo  aip-­‐science-­‐app  $  grunt  

araport.org

Science Apps Workspace

Create custom workspaces containing

diverse public and private

Science Apps

araport.org

Science App Store

•  Developers can share apps privately during creation and testing

•  Request publication under My Account->My Apps

•  Araport staff will review the app and either publish it or make suggestions about how to improve it

araport.org

Commonly Asked Questions

•  How can I get credit or attribution if my app or data is served through Araport?

•  I have data type X - can I share it via Araport? •  Can I keep my work private or shared with only select

people? •  Can someone publish malicious code at Araport? •  What if my Science App needs to compute on data,

not just access a database? •  Can you help me learn to write web services and

Science Apps?

araport.org

Community Support

www.araport.org/devzone

Register to become an Araport developer

Join our developer calls

Explore tutorials, example code, & documentation

Learn about our 2015 Fall Developer Workshop

araport.org

[email protected]

https://www.araport.org/contact

@araport

araport.org

The Road Ahead Science Apps •  Improved create & publish workflow •  Tags, ratings, comments, & live previews •  “Compute applications” •  Automatic display of provenance information •  Dynamically resizable app display •  Communication between apps

Web Services •  Improved create & publish workflow •  Support for “native” web services •  Comprehensive logging and usage analytics •  Performance and reliability improvements

araport.org

Chris Town, PI

Lisa McDonald Education and Outreach Coordinator

Chris Nelson Project Manager Jason Miller, Co-PI

JCVI Technical Lead Erik Ferlanti Software Engineer

Vivek Krishnakumar Bioinf. Engineer

Svetlana Karamycheva Bioinf Engineer

Eva Huala Project lead, TAIR

Bob Muller Technical lead, TAIR

Gos Micklem, co-PI Sergio Contrino Software Engineer

Matt Vaughn co-PI

Steve Mock Portal Engineer

Rion Dooley, API Engineer

Matt Hanlon, Portal Engineer

Maria Kim Bioinf Engineer

Ben Rosen Bioinf Analyst

Joe Stubbs, API Engineer

Walter Moreira, API Engineer