A Python toolkit to divide BibTeX files among reviewers and merge their decisions for Systematic Literature Reviews
Project description
SLR Decision Merger
SLR Decision Merger is a Python toolkit to assist researchers in conducting Systematic Literature Reviews (SLRs) by dividing BibTeX files among reviewers and then later merging their decisions. It streamlines the process of managing reviewer assignments and consolidating review outcomes.
Features
- Paper Division: Randomly divide papers from BibTeX files among multiple reviewers
- Configurable Assignment: Specify the reviewers and how many reviewers should review each paper
Installation
1. Using pip (Recommended)
Ensure you have Python installed (version 3.7 or higher is recommended).
pip install slrdecisionmerger
2. Installing from Git
If you want the latest development version:
pip install git+https://gitlab.rakshitmittal.net/rmittal/slrdecisionmerger.git
3. Setting Up a Virtual Environment (Optional but Recommended)
Creating a virtual environment helps manage dependencies and avoid conflicts.
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
Then proceed with the installation steps above.
Configuration
SLR Decision Merger uses a configuration file (config.json) to manage settings. The idea is that each SLR project has a unique configuration file. Ensure that you create and properly configure this file before running the tool. Example config.json
{
"reviewers": ["alice", "bob", "james", "john"],
"reviewers_per": 2,
"cache_directory": "/absolute/path/to/directory",
"division_directory": "/absolute/path/to/directory",
"review_directory": "/absolute/path/to/directory",
"report_directory": "/absolute/path/to/directory"
}
{
"reviewers": 4,
"reviewers_per": 2,
"cache_directory": "/absolute/path/to/directory",
"division_directory": "/absolute/path/to/directory",
"review_directory": "/absolute/path/to/directory",
"report_directory": "/absolute/path/to/directory"
}
Configuration Fields
reviewers:Union[ int, List[str] ]: Either the total number of anonymous reviewers, or a list of names of reviewers.reviewers_per:int: Number of reviewers that should review each paper.cache_directory:str: Absolute path to directory containing the bib files to be distributed among reviewers.division_directory:str: Absolute path to directory where reviewer assignment bib-files will be created.review_directory:str: Absolute path to directory containing bib-files with reviewer evaluations.report_directory:str: Absolute path to directory where generated reports will be saved.
Note: reviewers_per cannot be greater than number of reviewers.
Usage
Basic Command
python -m slrdecisionmerger --config config.json [options]
Available Options
--config: Path to the configuration JSON file (default:config.json)--divide: Divide papers among reviewers--merge: Merge reviewer decisions and generate reports--debug: Enable debug-level logging--merge_strat: Merge strategy. One of "conservative", "liberal", "consensus"
Examples
- Divide Papers Among Reviewers
python -m slrdecisionmerger --config config.json --divide
- Divide Papers with Debug Logging
python -m slrdecisionmerger --config config.json --divide --debug
- Merge Reviewer Decisions with Consensus strategy
python -m slrdecisionmerger --config config.json --merge --merge_strat consensus
Decision Merging
After reviewers have evaluated their assigned papers, the --merge command consolidates their decisions. The tool identifies a reviewer's decision based on the groups field of a BibTeX entry. If the group is relevant, the paper is considered accepted; otherwise, it is considered rejected. It is assumed that the reviwers used (JabRef)[https://www.jabref.org/] to put their decisions (each reviewer-specific file generated by divide has automatically added JabRef annotations at the end).
Merge Strategies (--merge_strat)
You can define how the tool handles agreements and disagreements using one of three strategies:
conservative: A paper is accepted if at least one reviewer marked it asrelevant. This strategy maximizes recall, ensuring no potentially relevant paper is missed.liberal: A paper is accepted only if no reviewers marked it as non-relevant (e.g.,OFF_TOPIC,NO_PEER_REV). This ensures that only papers with unanimous or partial positive consensus are included.consensus(Default): This is the most balanced strategy.- A paper is accepted if it has at least one
relevantvote and no non-relevant votes. - A paper is rejected if it has only non-relevant votes.
- If a paper receives both
relevantand non-relevant votes, it is marked as a conflict.
- A paper is accepted if it has at least one
Generated Files
Based on the chosen strategy, the merge process generates the following files in your report_directory:
accepted.bib: A BibTeX file containing all papers that were accepted according to the merge strategy.conflicted.bib(Consensus strategy only): A BibTeX file containing all papers that had conflicting reviews.conflicts.csv(Consensus strategy only): A detailed CSV report of all conflicts. It includes the paper's metadata (title,author,year,doi,url) and a column for each reviewer showing their specific decision (acceptorreject).conflict_matrix.csv(Consensus strategy only): A CSV file showing a symmetric matrix of the number of disagreements between each pair of reviewers. This is useful for analyzing inter-rater reliability.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slrdecisionmerger-0.1.1.tar.gz.
File metadata
- Download URL: slrdecisionmerger-0.1.1.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d7c6efeeea9c356d5f5ec62094afa82b5d75eb725d5817787e1948e1f31b95c
|
|
| MD5 |
53283815ea1252474e9871508e9a502a
|
|
| BLAKE2b-256 |
23927d4e1c8f996afd75de825d84a782044743354cbc8d732e74152a46b72ce3
|
File details
Details for the file slrdecisionmerger-0.1.1-py3-none-any.whl.
File metadata
- Download URL: slrdecisionmerger-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61b59fcd9e0fcbe778091fc135b334e6b22faaee0846f5c1a033d993142b5c98
|
|
| MD5 |
51ff836f7aae8f1f72697d801460eb9e
|
|
| BLAKE2b-256 |
c192722c991be6d9a551ff59c4637a8d0f932e214bfcf7bc7ddf19415a00b12c
|