Skip to content

Junaid-Ahmed-Rupok/ReproHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

125 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”¬ ReproHub

Research Reproducibility Verification Platform

Streamlit App Python SciPy License Status


The reproducibility crisis is real. Only ~40% of psychology studies replicate successfully. Most researchers never check the numbers. ReproHub changes that β€” upload a paper and its dataset, and get a full reproducibility verdict in seconds.


πŸ“– What is ReproHub?

ReproHub is an automated research reproducibility verification platform. It takes a research paper (PDF) and its underlying dataset (CSV), re-runs every statistical test from scratch, and tells you exactly how well the reported results hold up against the raw data.

No manual checking. No guesswork. Just evidence.


✨ Features

Feature Description
πŸ“„ Smart PDF Parsing Upload any research paper β€” ReproHub extracts every statistical claim automatically
πŸ€– Regex-Based Extraction Detects APA-style results: t-tests, ANOVA, correlations, regressions, and more
πŸ”¬ Real Statistical Re-runs Actually executes the tests on your data β€” no simulation, no shortcuts
πŸ“Š Composite Scoring Multi-factor verdict weighing p-values, effect sizes, and test statistics together
πŸ—ΊοΈ Column Mapping UI Fuzzy-matches paper prose to dataset columns; fully editable before verification
πŸ’‘ Remediation Guidance Pinpoints the weakest component when a claim fails β€” not just "failed"
πŸ“„ PDF Report Export Download a professional reproducibility report for sharing or publishing
πŸ”’ No API Keys Required Fully open-source, runs locally, no external services needed

πŸš€ Quick Start

# Clone the repository
git clone https://github.com/Junaid-Ahmed-Rupok/ReproHub.git
cd ReproHub

# Install dependencies
pip install -r requirements.txt

# Launch the app
streamlit run app/main.py

πŸ‘‰ Live Demo: reprohub.streamlit.app


πŸ”¬ Supported Statistical Tests

Parametric Tests

Test Effect Size Reported
Independent t-test Cohen's d
Paired t-test Cohen's d
One-way ANOVA Eta-squared (Ξ·Β²)
Pearson Correlation r
Linear Regression RΒ², Adj-RΒ², per-coefficient p-values
Logistic Regression McFadden pseudo-RΒ², LR chi-square

Non-Parametric Tests

Test Effect Size Reported
Mann-Whitney U Rank-biserial correlation
Kruskal-Wallis H Eta-squared approximation
Wilcoxon Signed-Rank Rank-biserial correlation
Spearman Correlation ρ (rho)
Chi-square CramΓ©r's V

πŸ“Š How Reproducibility is Scored

ReproHub uses a composite scoring model β€” not just p-value comparison.

Composite Score = (p-value agreement Γ— 50%)
               + (effect size agreement Γ— 30%)
               + (test statistic agreement Γ— 20%)

Each component is scored 0–1 using exponential decay, so small differences are penalised gradually and large differences are penalised heavily.

Score Status Meaning
β‰₯ 0.80 βœ… Reproduced Results align across all dimensions
β‰₯ 0.55 ⚠️ Marginal Close but meaningful discrepancies exist
< 0.55 ❌ Not Reproduced Results do not hold up against the data
β€” ❓ Could Not Verify Missing columns, unsupported test, or insufficient data

Why composite scoring? A claim with matching p-values but wildly different effect sizes (e.g. Cohen's d = 0.2 vs 0.8) should not be called "reproduced." The old p-value-only approach missed this. ReproHub doesn't.


πŸ—ΊοΈ How It Works

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚  Upload PDF │────▢│ Extract      │────▢│ Map Columns     │────▢│ Re-run Tests β”‚
 β”‚  + CSV Data β”‚     β”‚ Claims       β”‚     β”‚ (Fuzzy Match +  β”‚     β”‚ (SciPy /     β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚ (Regex/APA)  β”‚     β”‚  Manual Review) β”‚     β”‚  statsmodels)β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                          β”‚
                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
                     β”‚ Export PDF   │◀────│ Composite Score  β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ Report       β”‚     β”‚ + Explanation    β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 1 β€” Upload: Provide a PDF paper and its CSV dataset.

Step 2 β€” Extract: ReproHub scans for APA-style statistical notation and pulls out every claim automatically.

Step 3 β€” Review: Check the auto-mapped column assignments, fix anything the fuzzy matcher got wrong, and confirm each claim.

Step 4 β€” Verify: ReproHub re-runs the actual statistical tests and scores each claim using composite scoring.

Step 5 β€” Report: Download a detailed reproducibility report with per-claim breakdowns, scores, and remediation advice.


πŸ“‚ Project Structure

ReproHub/
β”œβ”€β”€ app/                        # Streamlit web application
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ 1_upload.py         # File upload + claim extraction
β”‚   β”‚   β”œβ”€β”€ 2_review.py         # Column mapping + claim confirmation
β”‚   β”‚   β”œβ”€β”€ 3_dashboard.py      # Results visualisation
β”‚   β”‚   β”œβ”€β”€ 4_report.py         # PDF report generation
β”‚   β”‚   └── 5_about.py          # About page
β”‚   β”œβ”€β”€ config.py               # App configuration
β”‚   └── main.py                 # Entry point + navigation
β”‚
β”œβ”€β”€ core/                       # Core logic
β”‚   β”œβ”€β”€ engine.py               # Statistical test engine (11 tests)
β”‚   β”œβ”€β”€ extractor.py            # Regex-based claim extraction
β”‚   β”œβ”€β”€ comparator.py           # Composite reproducibility scoring
β”‚   β”œβ”€β”€ matcher.py              # Fuzzy column matching
β”‚   β”œβ”€β”€ validator.py            # Claim validation
β”‚   β”œβ”€β”€ remediation.py          # Remediation guidance
β”‚   └── schema.py               # Shared data schemas
β”‚
β”œβ”€β”€ models/                     # Pydantic data models
β”‚   β”œβ”€β”€ claim.py
β”‚   β”œβ”€β”€ result.py               # Result model with composite scoring
β”‚   β”œβ”€β”€ report.py
β”‚   └── validation.py
β”‚
β”œβ”€β”€ utils/                      # Utility functions
β”‚   β”œβ”€β”€ pdf_parser.py           # PDF text extraction
β”‚   β”œβ”€β”€ fuzzy_matcher.py        # FuzzyWuzzy wrapper
β”‚   β”œβ”€β”€ file_handlers.py
β”‚   β”œβ”€β”€ report_generator.py     # PDF report generation
β”‚   β”œβ”€β”€ visualizations.py
β”‚   └── helpers.py
β”‚
β”œβ”€β”€ tests/                      # Unit tests
β”œβ”€β”€ data/                       # Raw, processed, benchmark data
β”œβ”€β”€ static/                     # CSS, images, templates
β”œβ”€β”€ docs/                       # Documentation
β”œβ”€β”€ requirements.txt
└── README.md

πŸ› οΈ Technology Stack

Layer Technology
Framework Streamlit
Language Python 3.9+
Statistics SciPy, statsmodels
ML / Encoding scikit-learn
Visualization Plotly, Matplotlib, Seaborn
PDF Processing PyPDF, pdfplumber
Report Generation ReportLab, Jinja2
Fuzzy Matching FuzzyWuzzy + python-Levenshtein
Data Models Pydantic v2
Deployment Streamlit Cloud

πŸ“‹ Requirements

pandas >= 2.0.0
numpy >= 1.24.0
scipy >= 1.10.0
statsmodels >= 0.14.0
scikit-learn >= 1.3.0
streamlit >= 1.29.0
plotly >= 5.17.0
matplotlib >= 3.7.0
pypdf >= 3.0.0
pdfplumber >= 0.10.0
reportlab >= 4.0.0
jinja2 >= 3.1.0
pydantic >= 2.0.0
fuzzywuzzy >= 0.18.0
python-Levenshtein >= 0.21.0

🀝 Contributing

Contributions are welcome. Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Make your changes with clear, documented code
  4. Write or update tests where applicable
  5. Commit with a descriptive message (git commit -m 'feat: add X')
  6. Push to your branch (git push origin feature/your-feature)
  7. Open a Pull Request

Please open an issue first for major changes so we can discuss the approach.


πŸ—ΊοΈ Roadmap

  • LLM-powered claim extraction (prose-level, not just APA notation)
  • LLM-powered column mapping (semantic, not just fuzzy string matching)
  • Claim deduplication (same result across abstract + results section)
  • Support for Excel, SPSS, Stata, and .docx input formats
  • Batch mode (verify multiple papers at once)
  • Unit test coverage for all core modules

πŸ‘¨β€πŸ’» About the Developer

Sarder Junaid Ahmed

Data Scientist & Machine Learning Engineer

Transforming complex data into strategic decisions through rigorous statistical modeling and production-ready machine learning systems.

GitHub LinkedIn Portfolio Email

Specializations: Statistical ML Β· Causal Inference Β· Trustworthy AI Β· Fairness-Aware ML Β· RAG Systems

Selected Research:

  • πŸ“„ Ahmed, S.J. et al. (2026). Machine Learning for Crime Classification: A Fairness-Aware Approach to Class Imbalance. Journal of Machine Learning and Applications, 2(1), 9–17. DOI: 10.61577/jmla.2026.100002
  • πŸ“„ Ahmed, S.J. et al. (2026). CF-EGAT: A Causal Fairness-Aware Equity Graph Attention Network for Country-Level Environmental Livability Classification. SPECTRA 2026. πŸ† 1st Best Paper Award
  • πŸ“„ Ahmed, S.J. (2025). Multi-Dimensional Statistical Similarity for Governance Classification: Beyond Arbitrary Thresholds. APMEE 2025. πŸ† Best Research Paper Award

Other Deployed Projects:

  • πŸ”¬ ReproHub β€” Automated research reproducibility platform with composite scoring across 11 statistical tests
  • πŸ“Š StatsPro β€” AI-powered statistical analysis platform with automated CSV-to-report workflows

Honors: πŸ† 1st Best Paper β€” SPECTRA 2026 Β Β·Β  πŸ† Best Research Paper β€” APMEE 2025 Β Β·Β  πŸŽ–οΈ Esteemed Alumni Award β€” YLRL RUET 2024 Β Β·Β  ⭐ Perfect GPA 5.00/5.00 β€” SSC & HSC Β Β·Β  πŸŽ“ National Merit Scholarship β€” 2009 & 2013


πŸ“ License

This project is licensed under the MIT License β€” see LICENSE for details.


πŸ™ Acknowledgments

Built in response to the reproducibility crisis in scientific research. Powered entirely by open-source Python libraries.

Built with Streamlit Β· LangChain Β· Groq Β· FAISS Β· sentence-transformers


Made with ❀️ for open science and reproducible research

Releases

No releases published

Packages

 
 
 

Contributors