Skip to content

Latest commit

 

History

History
193 lines (127 loc) · 13.6 KB

README.md

File metadata and controls

193 lines (127 loc) · 13.6 KB

ReCiter

Build Status version codebeat badge License PRs Welcome Pending Pull-Requests Closed Pull-Requests GitHub issues open GitHub issues closed star this repo fork this repo Tags Github All Releases Open Source Love

Purpose

ReCiter is a highly accurate system for guessing which publications in PubMed a given person has authored. ReCiter includes a Java application, a DynamoDB-hosted database, and a set of RESTful microservices which collectively allow institutions to maintain accurate and up-to-date author publication lists for thousands of people. This software is optimized for disambiguating authorship in PubMed and, optionally, Scopus.

ReCiter accurately identifies articles, including those at previous affiliations, by a given person. It does this by leveraging institutionally maintained identity data (e.g., departments, relationships, email addresses, year of degree, etc.) With the more complete and efficient searches that result from combining these types of data, you can save time and your institution can be more productive. If you run ReCiter daily, you can ensure that the desired users are the first to learn when a new publication has appeared in PubMed.

ReCiter is fast. It uses an advanced multi-threading strategy known as a work stealing pool to make up to 10 retrieval requests at a time.

ReCiter is freely available and open source under the Apache 2.0 license.

Please see the ReCiter wiki for more information.

https://github.com/wcmc-its/ReCiter/blob/master/files/ReCiter-FeatureGenerator.gif

Technical

Prerequisites

  • Java 1.8
  • Latest version of Maven. To install Maven navigate to the directory where ReCiter will be installed, execute brew install maven and then mvn clean install

It is not necessary to install ReCiter in order to use the API.

Technological stack

Key technologies include:

  • ReCiter stores data about researchers and publications in DynamoDB, which can be hosted on Amazon AWS on installed locally.
  • Its main computation logic is written in Java.
  • It employs the Spring Framework, a Java-based application framework designed to manage RESTful web services and server requests.
  • ReCiter uses Swagger, a toolset that provides a user interface with helpful cues for how to interact with the application's RESTful APIs.

You may choose to run ReCiter on either:

  • A server - ReCiter will run on Linux, Mac OS X, and Windows versions 7 and higher. A minimum of 4GB of RAM is required; 16GB of RAM are recommended. An Internet connection is required to download article data from scholarly databases.
  • A local machine - ReCiter's APIs may be run in a browser on any modern machine. The ReCiter server must be accessible to the local machine via a local area network or internet connection.

Architecture

https://github.com/wcmc-its/ReCiter/blob/master/files/ArchitecturalDiagram-NEW.png

Related code repositories

The ReCiter application depends on the following separate GitHub-hosted repositories:

Additionally, users can install:

Installation

ReCiter can be installed to run locally on an AWS via a cloud formation template. A required dependency is the PubMed Retrieval Tool. The Scopus Retrieval Tool is optional, but can have improve overall accuracy by several percent.

Local

  1. Clone the repository to a local folder using git clone https://github.com/wcmc-its/ReCiter.git
  2. Go to the folder where the repository has been cloned and navigate to src/main/resources/application.properties and change port and log location accordingly
  • change aws.DynamoDb.local=false to aws.DynamoDb.local=true
  • update location of DynamoDB database, e.g., aws.DynamoDb.local.dbpath=/Users/Paul/Documents/ReCiter/dynamodb_local_latest
  • By default application security is turned on. If you wish to turn it off you must change the flag to false from spring.security.enabled=true to spring.security.enabled=false
  • If you have the security as true you must include the following environment variables -
export ADMIN_API_KEY=<api-key>
export CONSUMER_API_KEY=<api-key>
  • If you do not have scopus subscription you should mark this value to false. Change use.scopus.articles=true to use.scopus.articles=false.
  1. Enter ports for server and services in command line. Note that the Scopus service is optional. You must have Pubmed Service and optionally Scopus Service setup before this step. Enter appropriate hostname and the port numbers.
export SERVER_PORT=5000
export SCOPUS_SERVICE=http://localhost:5001
export PUBMED_SERVICE=http://localhost:5002
  1. Run mvn spring-boot:run. You can add additional options if you want like max and min java memory with export MAVEN_OPTS=-Xmx1024m
  2. Go to http://localhost:<port-number>/swagger-ui.html to test and run any API.

Amazon AWS

The ReCiter CloudFormation template allows you to use a simple text file to model and provision, in an automated and secure manner, all the resources needed for your applications across all regions and accounts. This file serves as the single source of truth for your cloud environment. There you will find instruction to install ReCiter and its components.

Configuration

  • PubMed API key - Recommended for performance reasons and to prevent and limit the likelihood National Library of Medicine will throttle you, but otherwise not necessary.
  • Scopus API key and instoken - Use of Scopus is optional. It can improve overall accuracy by several percent; Scopus is helpful because it has disambiguated organizational affiliation and verbose first name, especially for earlier articles. Use of the Scopus API is available only for Scopus subscribers.
  • Security - Each of ReCiter's APIs can be configured to restrict access to only those requests which provide the correct API key.
  • Application.properties - All remaining configurations are stored here.

Functionality

How ReCiter works

The wiki article, How ReCiter works, contains a more detailed description on the application works.

  • Populate identity information for target users
  • Optional: populate Gold Standard of already accepted or rejected publications; note that this system currently does not offer a user interface for collecting this feedback
  • Lookup candidate articles in PubMed and, optionally, Scopus
  • Compute suggestions
  • Retrieve suggestions

Using the APIs

The wiki article, Using the APIs, contains a full description on how to use the ReCiter APIs.

Category Function Relevant API(s)
Manage identity of target users Add or update identity data for target user(s) from Identity table /reciter/identity/ or /reciter/save/identities/
Manage identity of target users Retrieve identity data for target user(s) from Identity table /reciter/find/identity/by/uid/ or /reciter/find/identity/by/uids/
Gold standard Update the GoldStandard table (includes both accepted and rejected PMIDs) for single user /reciter/goldstandard/
Gold standard Update the GoldStandard table (includes both accepted and rejected PMIDs) for mutliple users /reciter/goldstandard/
Gold standard Read from the GoldStandard table (includes both accepted and rejected PMIDs) for target user(s) /reciter/goldstandard/{uid}
Look up candidate articles Trigger look up of candidate articles for a given user /reciter/retrieve/articles/by/uid
Retrieve suggested articles Read suggested articles from the Analysis table for target user /reciter/article-retrieval/by/uid
Retrieve suggested articles Read suggested articles and see supporting evidence from the Analysis table for target user /reciter/feature-generator/by/uid

See also

Future work

Both the issue queue and the Roadmap include some areas where we want to improve ReCiter.

Follow up

You may expect a response within one to two business days. We use GitHub issues to track bugs and feature requests. If you find a bug, please feel free to open an issue.

Contributions welcome!