A Python library for scholarly research with impact factor analysis
Project description
ScholarSort
A powerful Python library for academic research with integrated impact factor analysis, similar to the scholarly package but with enhanced features.
Features
- 🔍 Academic Search: Search academic papers, authors, and journals
- 📊 Impact Factor Analysis: Get journal impact factors, CiteScore, SJR and other metrics
- 👨🎓 Author Analysis: Analyze researcher metrics and publication history
- 📖 Journal Analysis: Journal rankings, metric trends, and recommendation system
- 🚀 Async Support: Asynchronous operations for improved performance
- 💾 Caching: Built-in caching to reduce duplicate requests
Installation
pip install scholarsort
Quick Start
Basic Search
from scholarsort import ScholarlySearch
# Create search instance
searcher = ScholarlySearch()
# Search publications
publications = searcher.search_publications("machine learning", num_results=10)
for pub in publications:
print(f"Title: {pub['title']}")
print(f"Citations: {pub['citations']}")
print(f"Authors: {pub['authors']}")
print("-" * 50)
# Search author
author_info = searcher.search_author("Geoffrey Hinton")
if author_info:
print(f"Author: {author_info['name']}")
print(f"Affiliation: {author_info['affiliation']}")
print(f"Total Citations: {author_info['total_citations']}")
Impact Factor Analysis
from scholarsort import ImpactFactorAnalyzer
# Create impact factor analyzer
if_analyzer = ImpactFactorAnalyzer()
# Get journal impact factor
journal_metrics = if_analyzer.get_journal_impact_factor("Nature")
if journal_metrics:
print(f"Journal: {journal_metrics['journal_name']}")
print(f"Impact Factor: {journal_metrics['impact_factor']}")
print(f"CiteScore: {journal_metrics['citescore']}")
print(f"Quartile: {journal_metrics['quartile']}")
# Compare multiple journals
journals = ["Nature", "Science", "Cell"]
comparison = if_analyzer.compare_journals(journals)
print(comparison)
# Get top journals in specific field
top_journals = if_analyzer.get_journal_ranking("Computer Science", limit=20)
for i, journal in enumerate(top_journals, 1):
print(f"{i}. {journal['journal_name']} (IF: {journal['impact_factor']})")
Author Deep Analysis
from scholarsort import AuthorAnalyzer
# Create author analyzer
author_analyzer = AuthorAnalyzer()
# Get detailed author profile
profile = author_analyzer.get_author_profile("Yann LeCun")
if profile:
print(f"H-Index: {profile['h_index']}")
print(f"i10-Index: {profile['i10_index']}")
print(f"Research Interests: {', '.join(profile['interests'])}")
# Analyze publications
publications = profile['publications']
metrics = author_analyzer.calculate_author_metrics(publications)
print(f"Total Publications: {metrics['total_publications']}")
print(f"Average Citations: {metrics['avg_citations_per_paper']}")
# Compare multiple authors
authors = ["Geoffrey Hinton", "Yann LeCun", "Yoshua Bengio"]
comparison = author_analyzer.compare_authors(authors)
print(comparison)
Journal Analysis and Recommendation
from scholarsort import JournalAnalyzer
# Create journal analyzer
journal_analyzer = JournalAnalyzer()
# Get journal detailed information
journal_info = journal_analyzer.get_journal_info("Nature Machine Intelligence")
if journal_info:
print(f"Journal: {journal_info['title']}")
print(f"Publisher: {journal_info['publisher']}")
print(f"Open Access: {journal_info.get('open_access', False)}")
# Search journals by subject
ai_journals = journal_analyzer.search_journals_by_subject("Artificial Intelligence")
for journal in ai_journals[:5]:
print(f"- {journal['title']} ({journal['publisher']})")
# Journal recommendations
keywords = ["machine learning", "artificial intelligence"]
recommendations = journal_analyzer.recommend_journals(
keywords=keywords,
min_if=2.0,
max_if=8.0,
open_access=True
)
print("Recommended Journals:")
for rec in recommendations[:5]:
print(f"- {rec['journal_name']} (IF: {rec['impact_factor']}, Relevance: {rec['relevance_score']:.2f})")
Advanced Features
import asyncio
from scholarsort import ScholarlySearch, ImpactFactorAnalyzer
async def advanced_analysis():
# Async search
searcher = ScholarlySearch()
results = await searcher.async_search_publications("deep learning")
# Impact factor trend analysis
if_analyzer = ImpactFactorAnalyzer()
years = [2020, 2021, 2022, 2023, 2024]
trend_data = if_analyzer.analyze_journal_trend("Nature", years)
if trend_data is not None:
print("Nature Journal Impact Factor Trends:")
print(trend_data)
# Run async analysis
# asyncio.run(advanced_analysis())
Data Sources
- Google Scholar: Paper search, author information, citation data
- Scopus: CiteScore and journal metrics
- Journal Citation Reports (JCR): Impact factor data
- ScimagoJR: SJR rankings and journal metrics
- DOAJ: Open access journal information
- Crossref: Journal metadata
Important Notes
- Request Rate: Built-in request delay mechanism to avoid being blocked by search engines
- Data Accuracy: Metrics may vary between different data sources
- API Limitations: Some features require appropriate API access permissions
- Cache Usage: Automatic result caching to reduce duplicate requests
License
MIT License
Contributing
Issues and feature requests are welcome!
Changelog
v0.1.0a1 (2025)
- Initial pre-release version
- Basic academic search functionality
- Impact factor analysis
- Author and journal analysis
- Async support
Contact
- Homepage: https://github.com/scholarsort-team/scholarsort
- Documentation: https://scholarsort.readthedocs.io/
- Issues: https://github.com/scholarsort-team/scholarsort/issues
- Team Email: team@scholarsort.org
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
scholarsort-0.1.0a1.tar.gz
(17.6 kB
view details)
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 scholarsort-0.1.0a1.tar.gz.
File metadata
- Download URL: scholarsort-0.1.0a1.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28548a3a7e425289ca0a2da97b6794203d3daf40563919cfe2a69eda462eb90e
|
|
| MD5 |
52a5b689eaf0a838c84a4aa39cfddd47
|
|
| BLAKE2b-256 |
37328b6c76617b984982c998ef4cdac0e3e501cd9ce7a7d90dd582b31890787a
|
File details
Details for the file scholarsort-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: scholarsort-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15200a3cd3ce3375587f93699082c3d6e56ae160220ffcae6878915df3a0250e
|
|
| MD5 |
8f0ec2b9e872ac084e6da575e48dcf7f
|
|
| BLAKE2b-256 |
7f61803e7e93c2f4a1e79568d573cb7833c44662fc004592e522ff88795f150b
|