LIMS SOLR Integration Jake Lin Shmulevich Lab

Slides:



Advertisements
Similar presentations
JSP and web applications
Advertisements

Building and using REST information services Rion Dooley.
Single Page Apps with Breeze and Ruby.
© Copyright 2012 STI INNSBRUCK Apache Lucene Ioan Toma based on slides from Aaron Bannert
Web API for Mobile JaxARCSIG April About Me David Fekke L.L.C. Mobile apps for iOS Regular presenter at JaxDUG, JSSUG and JaxFusion Writing Web.
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
The project Information Retrieval A.A P. Ferragina – Dipartimento di Informatica, University of Pisa –
14 1 Chapter 14 Database Connectivity and Web Development Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
LHCbPR V2 Sasha Mazurov, Amine Ben Hammou, Ben Couturier 5th LHCb Computing Workshop
1 JavaScript & AJAX CS , Spring JavaScript.
Simple Web SQLite Manager/Form/Report
Implementing search with free software An introduction to Solr By Mick England.
Chapter 6 DOJO TOOLKITS. Objectives Discuss XML DOM Discuss JSON Discuss Ajax Response in XML, HTML, JSON, and Other Data Type.
Introduction to Apache Lucene/Solr CSCI 572: Information Retrieval and Search Engines Summer 2010.
HTTP and Threads. Download some code I’ve created an Android Project which gives examples of everything covered in this lecture. Download code here.here.
Dermatology 2006 SNU Dermatolory Lab Bioinformatics for Genomic Medicine 2006 Dermatology Lab Yoonkyung Kim 0 Term Project Proposal Presentation 2006.
WaveMaker Visual AJAX Studio 4.0 Training Studio Overview.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
Kuali Rice at Indiana University Rice Setup Options July 29-30, 2008 Eric Westfall.
Introduction to ArcGIS API for JavaScript
WP3 System Architecture & System Integration By (Stein) Runar Bergheim Asplan Viak Internet.
OOI CyberInfrastructure: Technology Overview - Hyrax January 2009 Claudiu Farcas OOI CI Architecture & Design Team UCSD/Calit2.
Who is ROH Incorporated? Founded in 1971 Service oriented company built on client “partnering” Florida State Contract # Provide advanced.
Revolutionizing enterprise web development Searching with Solr.
Nadir Saghar, Tony Pan, Ashish Sharma REST for Data Services.
2007. Software Engineering Laboratory, School of Computer Science S E Web-Harvest Web-Harvest: Open Source Web Data Extraction tool 이재정 Software Engineering.
DT228/3 Web Development Databases. Querying a database: Partial info Search engines, on-line catalogues often need to allow user to search a database.
DM_PPT_NP_v01 SESIP_0715_JR HDF Server HDF for the Web John Readey The HDF Group Champaign Illinois USA.
A FIRST TOUCH ON NOSQL SERVERS: COUCHDB GENOVEVA VARGAS SOLAR, JAVIER ESPINOSA CNRS, LIG-LAFMIA, FRANCE
Software for small library management: From requirements to deployments (result) Project Units: 9 Units Name: Zichuan Zhou FAN: zhou0307 Student ID:
807 - TEXT ANALYTICS Massimo Poesio Lab 2: (Quick intro to) SOLR Document clustering with MAHOUT.
ICM – API Server & Forms Gary Ratcliffe.
7 databases in 7 weeks Part 3. Riak. Yes and no  Yes  distributed  data-replicating  enhanced key-value store  no single point of failure  HTTP(Protobuf)
Web Technologies Lecture 11 Implementing RESTful services.
Building Database-backended Multilingual, Multimedia Data Repositories: The aAQUA Experience.
Steven Perry Dave Vieglais. W a s a b i Web Applications for the Semantic Architecture of Biodiversity Informatics Overview WASABI is a framework for.
Oct HPS Collaboration Meeting Jeremy McCormick (SLAC) HPS Web 2.0 OR Web Apps and Databases (Oh My!) Jeremy McCormick (SLAC)
VIVO architecture March 1, Major Components Vitro is a general-purpose Web-based application leveraging semantic standards VIVO is a customized.
Google Code Libraries Dima Ionut Daniel. Contents What is Google Code? LDAPBeans Object-ldap-mapping Ldap-ODM Bug4j jOOR Rapa jongo Conclusion Bibliography.
Apache Solr Dima Ionut Daniel. Contents What is Apache Solr? Architecture Features Core Solr Concepts Configuration Conclusions Bibliography.
Web Services Essentials. What is a web service? web service: software functionality that can be invoked through the internet using common protocols like.
How to consume a RESTful service using jQuery. Introduction  In this post we see how to consume the RESTful service described in the post Design a RESTful.
11 jQuery Web Service Client. 22 Objectives You will be able to Use JSON (JavaScript Object Notation) for communcations between browser and server methods.
Azure Active Directory is becoming one of, if not the, primary user identity management services for cloud applications. One of Azure Active Directory's.
Redmond Protocols Plugfest 2016 Tarun Chopra Accessing APIs through Add-Ins Sr. Escalation Engineer.
Esri UC 2014 | Technical Workshop | Administering ArcGIS for Server with Python Jon Bodamer.
Extreme User Interfaces for Alfresco Kevin Dorr Sr. Solutions Engineer Americas Channel.
1 Using the Lucene Search Engine. 2 Team Phil Corcoran Project Leader 10 Years Software Telecoms, Finance, Manufacturing Reqs, Design, Test Derek O’ Keeffe.
Web API - Introduction AJAX, Spring Data REST SoftUni Team Web API
Global Search: An Introduction and Administrator Perspective
Searching and Indexing
Cosc 5/4730 REST services.
Building REST API using SQL Server and JSON Functions
Custom search forms with Apache Solr David Hernández
Next Generation SSIS Tasks and data Connection Series
CMPE 280 Web UI Design and Development October 24 Class Meeting
PHP Training at GoLogica in Bangalore
HW7: Database Application
Testing REST IPA using POSTMAN
Stephan Zednik, Patrick West, Peter Fox Tetherless World Constellation
Stephan Zednik, Patrick West, Peter Fox Tetherless World Constellation
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
Database Connectivity and Web Development
Lucene/Solr Architecture
Chengyu Sun California State University, Los Angeles
Getting Started With Solr
Academic & More Group 4 谢知晖 王逸雄 郭嘉宋 程若愚.
Chengyu Sun California State University, Los Angeles
Indexing with ElasticSearch
Presentation transcript:

LIMS SOLR Integration Jake Lin Shmulevich Lab

LIMS for Systems Genetics Systems Genetics - study of complex traits (phenotypes) resulting from multiple genotypes and environment interactions Systems Genetics LIMS web app- content and process management o Spring MVC with Addama components o Aid research and improve operations  Sample and experiment tracking  Annotations  Visualizing - relationships and results  Pipelines - bash + python + http  Data sharing

Resources and Content 8 Natural Variant Crossings o ~3000 progeny 67 Sequencing submissions o 46 Multiplexed ~48 degrees 400,000 progeny images ~10X more content

Robust Search Heart of Information Management Simple & Fast Accurate & Meaningful

Addama JCR JCR addama LIMS Web Search XPath Search Hierarchy o file directory RESTful - http/ajax Domain Drawbacks: Slow

SOLR + Lucene LIMS Web Search Wraps Lucene -.jar Doug Cutting Apache o Matured o Ported to C++/C#,Pyton,Perl,... o IBM, Apple,... High performance text search engine library o indexing o querying Simple Configuration Web admin REST/HTTP APIs solr.war

SOLR schema.xml $TOMCAT_HOME/webapps/ROOT/solr/conf/schema.xml... Field types determine tokenizing and indexing o impact 'fuzzy' and 'like' search o

SOLR HTTP Post #Update/Insert - CSV curl ' -H 'Content-type:text/plain; charset=utf-8' #Update - JSON curl ' -H 'Content-type:application/json' #Delete curl ' -H "Content-Type: text/xml" --data-binary ' ypgKey:testKey_001 '

Data Migration Update/Insert - CSV LIMS built in export results to CSV function Import from Database

SOLR HTTP Get //Find all progenies for YCR6 &fl=ypgKey,ypgBoxNumber,ypgCrossingRef,ypgMatingType,ypgGenotype,ypgParentA,ypgParentAlpha,yp gAlias,ypgTetrad,ypgStatus,ypgPosition,ypgComments,ypgDateFrozen,ypgSiblings QTime: 9 ms {"response":{numFound:400,"docs":[{"ypgKey:ypgX",...}, {"ypgKey:ypgX",...},...]}} &hl=true&hl.fl=ypgPosition,ypgStatus

More get examples //range //AND + OR

SOLR ExtJs AJAX Get function getYPGSolrUrl(searchTerm) { return "/solr/select/?" + "q=" + searchTerm + "&wt=json&rows=5000&" + "fl=ypgKey,ypgBoxNumber,ypgCrossingRef,ypgMatingType,ypgGenotype,ypgParentA,ypgParentAlpha," + "ypgAlias,ypgTetrad,ypgStatus,ypgPosition,ypgComments,ypgDateFrozen,ypgSiblings"; } function goSearch(index, ypgSearchInput, ypgSearchOption) { if (ypgSearchInput == '') { ypgSearchInput = 'YPG'; } ypgSearchInput = checkWildcard(ypgSearchInput); var searchWin = getSearchLoadingWindow("yprogeny-"); var searchUrl = getYPGSolrUrl(ypgSearchOption + ":" + ypgSearchInput); searchWin.on("show", function () { var sb = Ext.getCmp("yprogeny-search-statusbar"); sb.showBusy(); }); searchWin.show(); Ext.Ajax.request({ url: searchUrl, method: "GET", success: function(response) { var searchResultObj = Ext.util.JSON.decode(response.responseText); myYPGData = []; loadYPGSearchResult(index, searchResultObj.response, function() { Ext.getDom("sample-search-result-list").innerHTML = ""; Ext.getDom("yo-form").innerHTML = ""; searchWin.close(); renderYPGSearchResult(); }); }, failure: function() { eventManager.fireStatusMessageEvent({ text: "Search Results failed for url:" + searchUrl, level: "error" }); } }); } //Post function postSolrUpdates(jsonObj, callback) { var docsol = {}; docsol["doc"] = jsonObj; var add = {}; add["add"] = docsol; Ext.Ajax.request({ url: "/solr/update/json?commit=true", method: "POST", jsonData: { add: docsol }, success: function() { callback(); }, failure: function() { Ext.Msg.alert("Error", "Failed updating/adding record - please let Jake know:" + jsonObj); } }); }

SOLR ExtJs AJAX Post /* jsonObj contains new and existing annotation values from form */ function postSolrUpdates(jsonObj, callback) { var docsol = {}; docsol["doc"] = jsonObj; var add = {}; add["add"] = docsol; Ext.Ajax.request({ url: "/solr/update/json?commit=true", method: "POST", jsonData: { add: docsol }, success: function() { callback(); }, failure: function() { Ext.Msg.alert("Error", "Failed updating/adding record - please contact Infocore with this info:" + jsonObj); } }); }

SOLR Java HttpClient public void testPost(String url, JSONObject jsonObject) { try { HttpClient client = new HttpClient(); PostMethod post = new PostMethod(url); post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false)); JSONObject postObject = new JSONObject(); postObject.put("doc", jsonObject); JSONObject addObject = new JSONObject(); addObject.put("add", postObject); //"docs":[{"limsadminKey":"dudley_limsadminkey","limsKey":"dudley_limsadminkey","limsadminYoCount":791, // "limsadminYoMaxNum":512,"limsadminYoBoxNum":7,"limsadminYoPosition":"G3", // "allFields":["dudley_limsadminkey","791","512","7","G3","420","420","6","B5","1768","1768","20","A1","367","367","531","531","240"," 240","344","344"]}]}} post.setParameter("jsonData", "application/json"); post.setRequestEntity(new StringRequestEntity(addObject.toString(), "application/json", null)); post.setRequestHeader("Content-Type", "application/json"); int statusCode = client.executeMethod(post); System.out.println("Post " + url + "\nStatus code:" + statusCode); System.out.println(IOUtils.toString(post.getResponseBodyAsStream(), "UTF-8")); post.releaseConnection(); assertEquals(0,0); } catch (IOException e) { e.printStackTrace(); assertEquals(0,1); } catch (JSONException ej) { ej.printStackTrace(); assertEquals(0,1); }

update act as inserts, delete existing doc must use lowercase for wild card (*) search keys must be primitive type index corruption with java 1.7 start/stop tomcat o ROOT]$../../bin/shutdown.sh o ROOT]$../../bin/startup.sh Notes and observations

References Lucene in Action - Manning Press o o o o Science Perspective Science Perspective In progress o

Thanks Shmulevich Lab o Andrea Eakin o Hector Rovira o John Boyle o Ilya Shmulevich Dudley Lab o Gareth Cromie o Cathy Ludlow o Patrick May o Adrian Scott o Aimee Dudley