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.
- Java 1.8
- Latest version of Maven. To install Maven navigate to the directory where ReCiter will be installed, execute
brew install maven
and thenmvn clean install
It is not necessary to install ReCiter in order to use the API.
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.
The ReCiter application depends on the following separate GitHub-hosted repositories:
- PubMed Retrieval Tool
- Scopus Retrieval Tool (optional)
- Data models:
Additionally, users can install:
- ReCiter Publication Manager - a user interface tool
- ReCiter Machine Learning / Analysis - a suite of scripts and tools for retrieving and analyzing data from ReCiter
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.
- Clone the repository to a local folder using
git clone https://github.com/wcmc-its/ReCiter.git
- 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
toaws.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
tospring.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
touse.scopus.articles=false
.
- 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
- Run
mvn spring-boot:run
. You can add additional options if you want like max and min java memory withexport MAVEN_OPTS=-Xmx1024m
- Go to
http://localhost:<port-number>/swagger-ui.html
to test and run any API.
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.
- 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.
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
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 |
- PubMed Retrieval Tool - contains several ways you can search PubMed
- Scopus Retrieval Tool - contains several ways you can search Scopus
Both the issue queue and the Roadmap include some areas where we want to improve ReCiter.
- Technical questions: contact Sarbajit Dutta or Jie Lin
- Functional questions: contact Paul Albert, Michael Bales, or [email protected].
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!