API Reference¶
Identifiers¶
uvt_scholarly.identifiers.ARXIV_BASE_URL
module-attribute
¶
Base URL for arXiv documents.
uvt_scholarly.identifiers.ARXIV_PDF_URL
module-attribute
¶
Base URL for arXiv PDF files.
uvt_scholarly.identifiers.DOI_RESOLVER
module-attribute
¶
DOI_RESOLVER: str = 'https://doi.org'
Default resolver for the DOI class.
uvt_scholarly.identifiers.arXiv
dataclass
¶
Bases: ABC
An arXiv identifier.
number
instance-attribute
¶
number: str
The identifier of the submission in the month. This is usually a padded digit string, depending on the variant of the arXiv identifier.
version
instance-attribute
¶
version: int | None
A version for the submission. If None, the latest version is assumed.
subjectclass
instance-attribute
¶
subjectclass: str | None
The subject class the submission belongs to.
latest
abstractmethod
¶
latest() -> str
A string representing the latest version of the arXiv identifier.
stamp
abstractmethod
¶
stamp() -> str
A string matching the stamp added to the left-hand side of arXiv papers.
from_string
staticmethod
¶
Convert some text into an arXiv instance.
This function supports both old-style and new style arXiv identifiers. For more information see the official decumentation.
uvt_scholarly.identifiers.ModernArXiv
dataclass
¶
uvt_scholarly.identifiers.LegacyArXiv
dataclass
¶
uvt_scholarly.identifiers.DOI
dataclass
¶
A parsed Digital Object Identifier.
The DOI has a standard form NN.RRRR/suffix, where the first part is the
namespace, the second part is the registrant and the last part is
the item suffix.
Info
When comparing two DOIs for equality, the suffix partially compares in a case-insensitive way. In particular, all ASCII letters from the suffix are considered to be case-insensitive, but other Unicode letters are compared in a case-sensitive fashion.
namespace
instance-attribute
¶
namespace: str
The namespace for the identifier. This is usually 10 for scientific
publications.
registrant
instance-attribute
¶
registrant: str
The registrant for this identifier. There is no official list of all
registrants, but some information can be obtained, e.g., from Crossref by
querying https://api.crossref.org/prefixes/10.1038.
from_string
staticmethod
¶
Convert some text into a DOI instance.
Some basic structural checks are performed on the input string to ensure
that it can represents a DOI (e.g. length of parts).
resolve ¶
resolve(client: Client | None = None) -> bool
Parameters:
-
client(Client | None, default:None) –A client used for the HTTP request. This function automatically creates a client if none is provided. However, if checking many DOIs at once, it is recommended to create a client, so that requests can be handled more efficiently.
Returns:
-
bool–True if the current DOI redirects correctly.
uvt_scholarly.identifiers.ISBN10
dataclass
¶
An ISBN-10 identifier.
parts
instance-attribute
¶
The parts of the identifier, according to the standard. These are mostly internal and should not be used.
They are: the registration group identifier, the registrant identifier (e.g. publisher), the publication identifier (e.g. title) and the check digit. These are currently not parsed correctly and should not be relied upon.
uvt_scholarly.identifiers.ISBN13
dataclass
¶
parts
instance-attribute
¶
The parts of the identifier, according to the standard. These are mostly internal and should not be used.
from_string
staticmethod
¶
Convert some text into an ISBN13 instance.
Note that this function also supports ISBN-10 inputs, which are converted to ISBN-13 using ISBN10.to_isbn13.
uvt_scholarly.identifiers.ISSN
dataclass
¶
A parsed International Standard Serial Number.
parts
instance-attribute
¶
The two parts of the ISSN, which generally has the form NNNN-NNNC.
uvt_scholarly.identifiers.ORCiD
dataclass
¶
uvt_scholarly.identifiers.ResearcherID
dataclass
¶
A parsed ResearcherID.
parts
instance-attribute
¶
The three parts of the ResearcherID, which generally has the form
X[XX]-NNNN-NNNN, which an ASCII letter as the first part and two 4-digit
numeric identifiers.
year
property
¶
year: int
The year the ResearcherID was registered. This is only the last 4 digits
of the identifier.
is_valid
property
¶
is_valid: bool
True if the ResearcherID is valid.
Note that there is no standardized format for the ResearcherID, so this
validation should be taken with a grain of salt. It mainly checks that
values found in the wild are considered valid.
from_string
staticmethod
¶
from_string(rid: str) -> ResearcherID
Convert some text into a ResearcherID instance.
Some basic structural checks are performed on the input string to ensure
that it can represents a ResearcherID (e.g. length of parts).
Publication¶
uvt_scholarly.publication.SCORE_FULL_NAME
module-attribute
¶
SCORE_FULL_NAME: dict[ScoreType, str] = {ScoreType.AIS: 'Article Influence Score', ScoreType.JIF: 'Journal Impact Factor', ScoreType.RIF: 'Relative Impact Factor', ScoreType.RIS: 'Relative Influence Score'}
A mapping from journal scores to their full names.
uvt_scholarly.publication.Author
dataclass
¶
first_name
instance-attribute
¶
first_name: str | None
First name of the author. This can contain multiple first names and initials, as necessary. It can also be None, if the author does not have a first name, for whatever reason.
last_name
instance-attribute
¶
last_name: str
Last name of the author. This can contain additional parts as well, e.g.
von Neumann.
affiliations
class-attribute
instance-attribute
¶
A list of affiliations for the author. This is generally only meant for a particular publication, not a general list over time.
researcherid
class-attribute
instance-attribute
¶
researcherid: ResearcherID | None = None
The ResearcherID for the author.
uvt_scholarly.publication.Quartile ¶
uvt_scholarly.publication.JournalCategory
dataclass
¶
uvt_scholarly.publication.Journal
dataclass
¶
A basic description of a journal.
issn
instance-attribute
¶
issn: ISSN | None
An International Standard Serial Number (ISSN) for the journal or publishing house, if available.
scores
class-attribute
instance-attribute
¶
A mapping of known scores for this journal, as available.
quartile
class-attribute
instance-attribute
¶
A mapping of known quartiles for each score, as available.
categories
class-attribute
instance-attribute
¶
categories: tuple[JournalCategory, ...] = ()
A list of categories the journal can be classified in. This generally depends heavily on the source of the metadata (e.g. Web of Science categories).
uvt_scholarly.publication.Pages
dataclass
¶
Page range for a publication.
uvt_scholarly.publication.DocumentType ¶
uvt_scholarly.publication.CitedPublication
dataclass
¶
Stripped down publication metadata for cited references.
uvt_scholarly.publication.Publication
dataclass
¶
authors
instance-attribute
¶
A list of authors for the current publication.
volume
instance-attribute
¶
volume: str
The volume in which it was published. This is usually a numerical value, but can also be written as Roman numerals or other identifiers.
issue
instance-attribute
¶
issue: str
The issue in which it was published. This is usually a numerical value,
but it can be some other identifier or even something like "Summer" for
various periodicals.
identifier
instance-attribute
¶
identifier: str
A unique identifier for the publication the repository from which it was obtained (e.g. a Web of Science Accession Number).
cited_by_count
instance-attribute
¶
cited_by_count: int
A total number of citations for this publication. This value is generally exported from a repository and does not necessarily match citations.
cited_by
instance-attribute
¶
cited_by: tuple[Publication, ...]
A list of publications that have cited this publication.
citations
instance-attribute
¶
citations: dict[DOI, CitedPublication]
A list of publications cited by this publication.
uvt_scholarly.enrich.add_cited_by ¶
add_cited_by(pubs: Sequence[Publication], citations: Sequence[Publication]) -> tuple[Publication, ...]
Fill out the cited_by entry of a Publication.
This function matches the given citations to their respective pubs based on the DOI. The citations must have the Publication.citations field filled in (e.g. by passing in include_citations to read_from_csv).
Publications in pubs that do not have a DOI are ignored and will not be returned.
uvt_scholarly.enrich.add_scores ¶
add_scores(pubs: tuple[Publication, ...], dbfile: Path, *, past: int = 5, scores: ScoreType | set[ScoreType] | None = None) -> tuple[Publication, ...]
Fill in the scores for each publication.
Publications that do not have known scores in the database are left as is. The score added to each publication will be the maximum over the past past years. This function cannot add just the score from a specific year.
Parameters:
UEFISCDI¶
uvt_scholarly.uefiscdi.CITATION_INDEX_DISPLAY_NAME
module-attribute
¶
CITATION_INDEX_DISPLAY_NAME = {CitationIndex.AHCI: 'Arts Humanities Citation Index', CitationIndex.ESCI: 'Emerging Sources Citation Index', CitationIndex.SCIE: 'Science Citation Index Expanded', CitationIndex.SSCI: 'Social Sciences Citation Index'}
A mapping of citation indices (as they appear in the UEFISCDI databases) to their full names.
uvt_scholarly.uefiscdi.UEFISCDI_DATABASE_URL
module-attribute
¶
UEFISCDI_DATABASE_URL = {2025: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-865528-AIS.JCR2024.iunie2025.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-865521-RIS.2024.iunie-2025.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-865599-RIF.iunie2025.xlsx'}, 2024: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-861731-AIS.JCR2023.iunie2024.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-861773-RIS.2023iunie2024.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-861735-FIR.2023iunie2024.xlsx'}, 2023: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-863884-ais_2022.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-863882-ris_2022.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-863887-rif_2022.xlsx'}, 2022: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-862108-ais.2021.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-862102-ris.2021.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-862155-rif.2021.xlsx'}, 2021: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-820980-ais.2020.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-820984-sri.2020.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-820987-rif.2020.xlsx'}, 2020: {ScoreType.AIS: 'https://uefiscdi.gov.ro/resource-821312-ais2019-iunie2020-.valori.cuartile.xlsx', ScoreType.RIS: 'https://uefiscdi.gov.ro/resource-829001-sri.2019.xlsx', ScoreType.RIF: 'https://uefiscdi.gov.ro/resource-829003-rif.2019.xlsx'}}
A mapping of database identifiers to URLs containing the databases themselves.
uvt_scholarly.uefiscdi.UEFISCDI_DEFAULT_PASSWORD
module-attribute
¶
Default password used in several UEFISCDI documents.
uvt_scholarly.uefiscdi.UEFISCDI_DEFAULT_VERSION
module-attribute
¶
UEFISCDI_DEFAULT_VERSION = max(UEFISCDI_DATABASE_URL)
Default version used for databases.
uvt_scholarly.uefiscdi.CitationIndex ¶
Bases: Enum
The citation index to which a given score belongs to.
Many relative scores are generally computed per field of research. These are the citation indices used by the UEFISCDI (by way of Web of Science).
uvt_scholarly.uefiscdi.Database ¶
Bases: Generic[ScoreT]
A context manager that can be used to add scores to a sqlite3 database.
This class will handle creating the database from a given schema and an index for efficient searching.
uvt_scholarly.uefiscdi.Score
dataclass
¶
uvt_scholarly.uefiscdi.XLSXParser ¶
A parser / reader for XLSX score files from the UEFISCDI.
parse_row
abstractmethod
¶
parse_row(row: tuple[ReadOnlyCell, ...]) -> ScoreT | None
Parse a row from the file and return the Score.
parse ¶
Read an UEFISCDI XLSX file and return the valid scores.
Raises:
-
ParsingError–if any of the scores are not valid. Note that all the scores from UEFISCDI_DATABASE_URL are known to parse correctly.
uvt_scholarly.uefiscdi.ais.ArticleInfluenceScore
dataclass
¶
Bases: Score
The AIS for a given journal.
citation_index
instance-attribute
¶
citation_index: CitationIndex
The citation index this score is a part of.
journal_category
instance-attribute
¶
journal_category: JournalCategory
The category the journal is part of (scores are relative to the category).
quartile
instance-attribute
¶
quartile: Quartile
The quartile the journal belongs to, in its category.
category
instance-attribute
¶
A category based on the quartile used by the CS exporter.
from_strings
staticmethod
¶
from_strings(journal: str, issn: str, eissn: str, journal_category: str, citation_index: str, score: str, quartile: int | str | Quartile, position: int | str) -> ArticleInfluenceScore
Convert the given data into an ArticleInfluenceScore.
The given data is normalized and cleaned up, as appropriate. This function can raise if the data is incorrect (e.g. a non-numeric score).
uvt_scholarly.uefiscdi.ais.parse_article_influence_score ¶
parse_article_influence_score(filename: Path, version: int) -> tuple[ArticleInfluenceScore, ...]
Read AIS scores from the given file.
Parameters:
-
version(int) –the year the list in filename was published.
Raises:
-
ParsingError–if entries in the file are not valid.
uvt_scholarly.uefiscdi.ais.store_article_influence_score ¶
store_article_influence_score(filename: Path, *, years: set[int] | None = None, a_star_percentage: int = 20, force: bool = False) -> None
Download AIS scores for the given years and store them in filename.
Parameters:
-
years(set[int] | None, default:None) –A list of years for which to download the AIS scores. By default, all the years in uvt_scholarly.uefiscdi.UEFISCDI_DATABASE_URL are downloaded.
-
a_star_percentage(int, default:20) –Percentage used in determining categories for the Computer Science department.
-
force(bool, default:False) –If True, all documents are re-downloaded (even if cached).
Raises:
-
ParsingError–if any of the documents fail to parse.
-
DownloadError–if any of the documents do now download.
uvt_scholarly.uefiscdi.ris.RelativeInfluenceScore
dataclass
¶
Bases: Score
The RIF for a given journal.
from_strings
staticmethod
¶
from_strings(journal: str, issn: str, eissn: str, score: str) -> RelativeInfluenceScore
Convert the given data into an RelativeInfluenceScore.
The given data is normalized and cleaned up, as appropriate. This function can raise if the data is incorrect (e.g. a non-numeric score).
uvt_scholarly.uefiscdi.ris.parse_relative_influence_score ¶
parse_relative_influence_score(filename: Path, version: int) -> tuple[RelativeInfluenceScore, ...]
Read RIS scores from the given file.
Parameters:
-
version(int) –the year the list in filename was published.
Raises:
-
ParsingError–if entries in the file are not valid.
uvt_scholarly.uefiscdi.ris.store_relative_influence_score ¶
store_relative_influence_score(filename: Path, *, years: int | set[int] | None = None, force: bool = False) -> None
Download RIS scores for the given years and store them in filename.
Parameters:
-
years(int | set[int] | None, default:None) –A list of years for which to download the RIS scores. By default, all the years in uvt_scholarly.uefiscdi.UEFISCDI_DATABASE_URL are downloaded.
-
force(bool, default:False) –If True, all documents are re-downloaded (even if cached).
Raises:
-
ParsingError–if any of the documents fail to parse.
-
DownloadError–if any of the documents do now download.
uvt_scholarly.uefiscdi.rif.RelativeImpactFactor
dataclass
¶
Bases: Score
The RIF for a given journal.
from_strings
staticmethod
¶
from_strings(journal: str, issn: str, eissn: str, score: str) -> RelativeImpactFactor
Convert the given data into an RelativeImpactFactor.
The given data is normalized and cleaned up, as appropriate. This function can raise if the data is incorrect (e.g. a non-numeric score).
uvt_scholarly.uefiscdi.rif.parse_relative_impact_factor ¶
parse_relative_impact_factor(filename: Path, version: int) -> tuple[RelativeImpactFactor, ...]
Read RIF scores from the given file.
Parameters:
-
version(int) –the year the list in filename was published.
Raises:
-
ParsingError–if entries in the file are not valid.
uvt_scholarly.uefiscdi.rif.store_relative_impact_factor ¶
store_relative_impact_factor(filename: Path, *, years: set[int] | None = None, force: bool = False) -> None
Download RIF scores for the given years and store them in filename.
Parameters:
-
years(set[int] | None, default:None) –A list of years for which to download the RIF scores. By default, all the years in uvt_scholarly.uefiscdi.UEFISCDI_DATABASE_URL are downloaded.
-
force(bool, default:False) –If True, all documents are re-downloaded (even if cached).
Raises:
-
ParsingError–if any of the documents fail to parse.
-
DownloadError–if any of the documents do now download.
Web of Science¶
uvt_scholarly.wos.WOS_FIELD_TAGS
module-attribute
¶
WOS_FIELD_TAGS = {'AB': 'Abstract', 'AF': 'Author Full Name', 'AR': 'Article Number', 'AU': 'Authors', 'BA': 'Book Authors', 'BE': 'Editors', 'BF': 'Book Authors Full Name', 'BN': 'International Standard Book Number (ISBN)', 'BP': 'Beginning Page', 'BS': 'Book Series Subtitle', 'C1': 'Author Address', 'CA': 'Group Authors', 'CL': 'Conference Location', 'CR': 'Cited References', 'CT': 'Conference Title', 'CY': 'Conference Date', 'D2': 'Book Digital Object Identifier (DOI)', 'DE': 'Author Keywords', 'DI': 'Digital Object Identifier (DOI)', 'DT': 'Document Type', 'EF': 'End of File', 'EI': 'Electronic International Standard Serial Number (eISSN)', 'EM': 'E-mail Address', 'EP': 'Ending Page', 'ER': 'End of Record', 'FN': 'File Name', 'FU': 'Funding Agency and Grant Number', 'FX': 'Funding Text', 'GA': 'Document Delivery Number', 'GP': 'Book Group Authors', 'HO': 'Conference Host', 'ID': 'Keywords Plus®', 'IS': 'Issue', 'J9': '29-Character Source Abbreviation', 'JI': 'ISO Source Abbreviation', 'LA': 'Language', 'MA': 'Meeting Abstract', 'NR': 'Cited Reference Count', 'OI': 'ORCID Identifier (Open Researcher and Contributor ID)', 'P2': 'Chapter Count (Book Citation Index)', 'PA': 'Publisher Address', 'PD': 'Publication Date', 'PG': 'Page Count', 'PI': 'Publisher City', 'PM': 'PubMed ID', 'PN': 'Part Number', 'PT': 'Publication Type (J=Journal; B=Book; S=Series; P=Patent)', 'PU': 'Publisher', 'PY': 'Year Published', 'RI': 'ResearcherID Number', 'RP': 'Reprint Address', 'SC': 'Research Areas', 'SE': 'Book Series Title', 'SI': 'Special Issue', 'SN': 'International Standard Serial Number (ISSN)', 'SO': 'Publication Name', 'SP': 'Conference Sponsors', 'SU': 'Supplement', 'TC': 'Web of Science Core Collection Times Cited Count', 'TI': 'Document Title', 'U1': 'Usage Count (Last 180 Days)', 'U2': 'Usage Count (Since 2013)', 'UT': 'Accession Number', 'VL': 'Volume', 'VR': 'Version Number', 'WC': 'Web of Science Categories', 'Z9': 'Total Times Cited Count'}
A list of fields present in the Tab delimited files exported by Web of Science (see the official list of field tags).
uvt_scholarly.wos.PUBLICATION_TYPE
module-attribute
¶
PUBLICATION_TYPE = {'B': PublicationType.Book, 'J': PublicationType.Journal, 'P': PublicationType.Patent, 'S': PublicationType.Series, 'C': PublicationType.Conference}
Initial of the publication type (as used in the Web of Science exported files) to a PublicationType.
uvt_scholarly.wos.DOCUMENT_TYPE
module-attribute
¶
DOCUMENT_TYPE = {'Art Exhibit Review': DocumentType.Review, 'Article': DocumentType.Article, 'Bibliography': DocumentType.Other, 'Biographical-Item': DocumentType.Other, 'Book Chapter': DocumentType.BookChapter, 'Book Review': DocumentType.Review, 'Book': DocumentType.Book, 'Correction': DocumentType.Other, 'Dance Performance Review': DocumentType.Review, 'Data Paper': DocumentType.Dataset, 'Database Review': DocumentType.Review, 'Early Access': DocumentType.Article, 'Editorial Material': DocumentType.Other, 'Excerpt': DocumentType.Other, 'Expression of Concern': DocumentType.Other, 'Fiction, Creative Prose': DocumentType.Other, 'Film Review': DocumentType.Review, 'Hardware Review': DocumentType.Review, 'Item Withdrawal': DocumentType.Other, 'Letter': DocumentType.Other, 'Meeting Abstract': DocumentType.Report, 'Meeting Summary': DocumentType.Report, 'Meeting': DocumentType.Other, 'Music Performance Review': DocumentType.Review, 'Music Score Review': DocumentType.Review, 'Music Score': DocumentType.Other, 'News Item': DocumentType.Other, 'Poetry': DocumentType.Other, 'Proceedings Paper': DocumentType.ProceedingsPaper, 'Publication with Expression of Concern': DocumentType.Other, 'Record Review': DocumentType.Review, 'Reprint': DocumentType.Article, 'Retracted Publication': DocumentType.Article, 'Retraction': DocumentType.Other, 'Review': DocumentType.Review, 'Script': DocumentType.Other, 'Software Review': DocumentType.Review, 'TV Review, Radio Review': DocumentType.Review, 'Theater Review': DocumentType.Review, 'Withdrawn Publication': DocumentType.Article, 'Abstract of Published Item': DocumentType.Other, 'Chronology': DocumentType.Review, 'Discussion': DocumentType.Report, 'Item About an Individual': DocumentType.Review, 'Note': DocumentType.Other, 'TV Review, Radio Review, Video Review': DocumentType.Review}
A list of known Web of Science document types to our own uvt_scholarly.publication.DocumentType.
uvt_scholarly.wos.PublicationType ¶
uvt_scholarly.wos.read_from_csv ¶
read_from_csv(filename: Path, *, encoding: str = 'utf-8', delimiter: str = '\t', include_citations: bool = False) -> tuple[Publication, ...]
Read publications from a Web of Science exported CSV file.
In the Web of Science export list, this is called a Tab delimited file. When exporting, it is recommended to use the Full Record option to ensure that all the required fields are available. However, this function only uses the fields required to fill out a uvt_scholarly.publication.Publication.
Parameters:
-
delimiter(str, default:'\t') –A delimiter to be used when reading the file. This should not be changed, as all exported documents use a TAB delimiter.
-
include_citations(bool, default:False) –If True, we also look for the
Cited-Referencesentry for each publication and attempt to parse all the citations.
Returns:
-
tuple[Publication, ...]–A list of all the publications in the given file. Note that entries that fail to parse for whatever reason (e.g. invalid DOI) are ignored.
uvt_scholarly.wos.read_from_bib ¶
read_from_bib(filename: Path, *, encoding: str = 'utf-8', include_citations: bool = False) -> tuple[Publication, ...]
Read publications from a Web of Science exported BibTeX file.
In the Web of Science export list, this is called a BibTeX. When exporting, it is recommended to use the Full Record option to ensure that all the required fields are available. However, this function only uses the fields required to fill out a uvt_scholarly.publication.Publication.
Info
This function requires the bibtexparser library to read the BibTeX file.
Parameters:
-
include_citations(bool, default:False) –If True, we also look for the
Cited-Referencesentry for each publication and attempt to parse all the citations.
Returns:
-
tuple[Publication, ...]–A list of all the publications in the given file. Note that entries that fail to parse for whatever reason (e.g. invalid DOI) are ignored.
uvt_scholarly.wos.read_pubs ¶
read_pubs(filename: Path, *, encoding: str = 'utf-8', include_citations: bool = False) -> tuple[Publication, ...]
Read a list of publications from a Web of Science exported file.
This function calls to read_from_csv, read_from_bib, etc. as appropriate to read all the entries to the file. The format is determined by the extension of the file.
uvt_scholarly.wos.merge_csv_files ¶
Merge publications from multiple files into a single file.
This function supports duplicate entries between the files and will remove and such entries. The deduplication is based on the Web of Science ID (UT column).
Parameters:
-
filenames(Sequence[Path]) –a list of files to merge.
-
outfile(Path) –the file to which the merged entries are written.
-
overwrite(bool, default:False) –If True and outfile exists, it will be overwritten.
Raises:
-
FileExistsError–if outfile exists and overwrite is False.
-
ValueError–if the filenames cannot be merged for whatever reason, e.g. columns do not match.
uvt_scholarly.wos.filter_csv_publications ¶
filter_csv_publications(filename: Path, outfile: Path, *, dbfile: Path | None = None, score: ScoreType = RIS, overwrite: bool = False) -> None
Filter out publications from filename.
This function removes publications from filename and writes the result to outfile. Publications are removed if they do not satisfy the following criteria:
- Both the ISSN and eISSN need to be valid (or None).
- The DOI should be valid.
- If dbfile is given, the journals for each publication are searched in an UEFISCDI Database for the chosen score. If it is not in the database, the publication will be removed.
Parameters:
-
filename(Path) –An inputs CSV file to filter publications from.
-
outfile(Path) –The output CSV file to write the results to.
-
dbfile(Path | None, default:None) –If given, the path to an
sqlite3database for UEFISCDI journal scores (e.g. see store_article_influence_score).
Raises:
-
ValueError–if the database for score does not exist.
ANZSRC¶
Support for the Australian and New Zealand Standard Research Classification (ANZSRC).
uvt_scholarly.anzsrc.ANZSRC_FOR_URL
module-attribute
¶
ANZSRC_FOR_URL: str = 'https://www.abs.gov.au/statistics/classifications/australian-and-new-zealand-standard-research-classification-anzsrc/2020/anzsrc2020_for.xlsx'
The full URL for the ANZSRC classification. The latest version can be found at the official website.
uvt_scholarly.anzsrc.ANZSRC_CLASSIFICATIONS
module-attribute
¶
ANZSRC_CLASSIFICATIONS: dict[int, str] = {30: 'Agricultural, Veterinary and Food Sciences', 3001: 'Agricultural biotechnology', 3002: 'Agriculture, land and farm management', 3003: 'Animal production', 3004: 'Crop and pasture production', 3005: 'Fisheries sciences', 3006: 'Food sciences', 3007: 'Forestry sciences', 3008: 'Horticultural production', 3009: 'Veterinary sciences', 3099: 'Other agricultural, veterinary and food sciences', 31: 'Biological Sciences', 3101: 'Biochemistry and cell biology', 3102: 'Bioinformatics and computational biology', 3103: 'Ecology', 3104: 'Evolutionary biology', 3105: 'Genetics', 3106: 'Industrial biotechnology', 3107: 'Microbiology', 3108: 'Plant biology', 3109: 'Zoology', 3199: 'Other biological sciences', 32: 'Biomedical and Clinical Sciences', 3201: 'Cardiovascular medicine and haematology', 3202: 'Clinical sciences', 3203: 'Dentistry', 3204: 'Immunology', 3205: 'Medical biochemistry and metabolomics', 3206: 'Medical biotechnology', 3207: 'Medical microbiology', 3208: 'Medical physiology', 3209: 'Neurosciences', 3210: 'Nutrition and dietetics', 3211: 'Oncology and carcinogenesis', 3212: 'Ophthalmology and optometry', 3213: 'Paediatrics', 3214: 'Pharmacology and pharmaceutical sciences', 3215: 'Reproductive medicine', 3299: 'Other biomedical and clinical sciences', 33: 'Built Environment and Design', 3301: 'Architecture', 3302: 'Building', 3303: 'Design', 3304: 'Urban and regional planning', 3399: 'Other built environment and design', 34: 'Chemical Sciences', 3401: 'Analytical chemistry', 3402: 'Inorganic chemistry', 3403: 'Macromolecular and materials chemistry', 3404: 'Medicinal and biomolecular chemistry', 3405: 'Organic chemistry', 3406: 'Physical chemistry', 3407: 'Theoretical and computational chemistry', 3499: 'Other chemical sciences', 35: 'Commerce, Management, Tourism and Services', 3501: 'Accounting, auditing and accountability', 3502: 'Banking, finance and investment', 3503: 'Business systems in context', 3504: 'Commercial services', 3505: 'Human resources and industrial relations', 3506: 'Marketing', 3507: 'Strategy, management and organisational behaviour', 3508: 'Tourism', 3509: 'Transportation, logistics and supply chains', 3599: 'Other commerce, management, tourism and services', 36: 'Creative Arts and Writing', 3601: 'Art history, theory and criticism', 3602: 'Creative and professional writing', 3603: 'Music', 3604: 'Performing arts', 3605: 'Screen and digital media', 3606: 'Visual arts', 3699: 'Other creative arts and writing', 37: 'Earth Sciences', 3701: 'Atmospheric sciences', 3702: 'Climate change science', 3703: 'Geochemistry', 3704: 'Geoinformatics', 3705: 'Geology', 3706: 'Geophysics', 3707: 'Hydrology', 3708: 'Oceanography', 3709: 'Physical geography and environmental geoscience', 3799: 'Other earth sciences', 38: 'Economics', 3801: 'Applied economics', 3802: 'Econometrics', 3803: 'Economic theory', 3899: 'Other economics', 39: 'Education', 3901: 'Curriculum and pedagogy', 3902: 'Education policy, sociology and philosophy', 3903: 'Education systems', 3904: 'Specialist studies in education', 3999: 'Other education', 40: 'Engineering', 4001: 'Aerospace engineering', 4002: 'Automotive engineering', 4003: 'Biomedical engineering', 4004: 'Chemical engineering', 4005: 'Civil engineering', 4006: 'Communications engineering', 4007: 'Control engineering, mechatronics and robotics', 4008: 'Electrical engineering', 4009: 'Electronics, sensors and digital hardware', 4010: 'Engineering practice and education', 4011: 'Environmental engineering', 4012: 'Fluid mechanics and thermal engineering', 4013: 'Geomatic engineering', 4014: 'Manufacturing engineering', 4015: 'Maritime engineering', 4016: 'Materials engineering', 4017: 'Mechanical engineering', 4018: 'Nanotechnology', 4019: 'Resources engineering and extractive metallurgy', 4099: 'Other engineering', 41: 'Environmental Sciences', 4101: 'Climate change impacts and adaptation', 4102: 'Ecological applications', 4103: 'Environmental biotechnology', 4104: 'Environmental management', 4105: 'Pollution and contamination', 4106: 'Soil sciences', 4199: 'Other environmental sciences', 42: 'Health Sciences', 4201: 'Allied health and rehabilitation science', 4202: 'Epidemiology', 4203: 'Health services and systems', 4204: 'Midwifery', 4205: 'Nursing', 4206: 'Public health', 4207: 'Sports science and exercise', 4208: 'Traditional, complementary and integrative medicine', 4299: 'Other health sciences', 43: 'History, Heritage and Archaeology', 4301: 'Archaeology', 4302: 'Heritage, archive and museum studies', 4303: 'Historical studies', 4399: 'Other history, heritage and archaeology', 44: 'Human Society', 4401: 'Anthropology', 4402: 'Criminology', 4403: 'Demography', 4404: 'Development studies', 4405: 'Gender studies', 4406: 'Human geography', 4407: 'Policy and administration', 4408: 'Political science', 4409: 'Social work', 4410: 'Sociology', 4499: 'Other human society', 45: 'Indigenous Studies', 4501: 'Aboriginal and Torres Strait Islander culture, language and history', 4502: 'Aboriginal and Torres Strait Islander education', 4503: 'Aboriginal and Torres Strait Islander environmental knowledges and management', 4504: 'Aboriginal and Torres Strait Islander health and wellbeing', 4505: 'Aboriginal and Torres Strait Islander peoples, society and community', 4506: 'Aboriginal and Torres Strait Islander sciences', 4507: 'Te ahurea, reo me te hītori o te Māori (Māori culture, language and history)', 4508: 'Mātauranga Māori (Māori education)', 4509: 'Ngā mātauranga taiao o te Māori (Māori environmental knowledges)', 4510: 'Te hauora me te oranga o te Māori (Māori health and wellbeing)', 4511: 'Ngā tāngata, te porihanga me ngā hapori o te Māori (Māori peoples, society and community)', 4512: 'Ngā pūtaiao Māori (Māori sciences)', 4513: 'Pacific Peoples culture, language and history', 4514: 'Pacific Peoples education', 4515: 'Pacific Peoples environmental knowledges', 4516: 'Pacific Peoples health and wellbeing', 4517: 'Pacific Peoples sciences', 4518: 'Pacific Peoples society and community', 4519: 'Other Indigenous data, methodologies and global Indigenous studies', 4599: 'Other Indigenous studies', 46: 'Information and Computing Sciences', 4601: 'Applied computing', 4602: 'Artificial intelligence', 4603: 'Computer vision and multimedia computation', 4604: 'Cybersecurity and privacy', 4605: 'Data management and data science', 4606: 'Distributed computing and systems software', 4607: 'Graphics, augmented reality and games', 4608: 'Human-centred computing', 4609: 'Information systems', 4610: 'Library and information studies', 4611: 'Machine learning', 4612: 'Software engineering', 4613: 'Theory of computation', 4699: 'Other information and computing sciences', 47: 'Language, Communication and Culture', 4701: 'Communication and media studies', 4702: 'Cultural studies', 4703: 'Language studies', 4704: 'Linguistics', 4705: 'Literary studies', 4799: 'Other language, communication and culture', 48: 'Law and Legal Studies', 4801: 'Commercial law', 4802: 'Environmental and resources law', 4803: 'International and comparative law', 4804: 'Law in context', 4805: 'Legal systems', 4806: 'Private law and civil obligations', 4807: 'Public law', 4899: 'Other law and legal studies', 49: 'Mathematical Sciences', 4901: 'Applied mathematics', 4902: 'Mathematical physics', 4903: 'Numerical and computational mathematics', 4904: 'Pure mathematics', 4905: 'Statistics', 4999: 'Other mathematical sciences', 50: 'Philosophy and Religious Studies', 5001: 'Applied ethics', 5002: 'History and philosophy of specific fields', 5003: 'Philosophy', 5004: 'Religious studies', 5005: 'Theology', 5099: 'Other philosophy and religious studies', 51: 'Physical Sciences', 5101: 'Astronomical sciences', 5102: 'Atomic, molecular and optical physics', 5103: 'Classical physics', 5104: 'Condensed matter physics', 5105: 'Medical and biological physics', 5106: 'Nuclear and plasma physics', 5107: 'Particle and high energy physics', 5108: 'Quantum physics', 5109: 'Space sciences', 5110: 'Synchrotrons and accelerators', 5199: 'Other physical sciences', 52: 'Psychology', 5201: 'Applied and developmental psychology', 5202: 'Biological psychology', 5203: 'Clinical and health psychology', 5204: 'Cognitive and computational psychology', 5205: 'Social and personality psychology', 5299: 'Other psychology'}
A list of codes to the main fields of researched in the ANZSRC.
CORE¶
Support for the Computing Research and Education (CORE) Association of Australasia.
uvt_scholarly.core.CORE_COLLECTION_NAMES
module-attribute
¶
CORE_COLLECTION_NAMES = frozenset({'ICORE2026', 'CORE2023', 'CORE2021', 'CORE2020'})
A set of CORE collection names.
uvt_scholarly.core.CORE_COLLECTION_URL
module-attribute
¶
CORE_COLLECTION_URL = 'https://portal.core.edu.au/conf-ranks/?search=&by=all&source={source}&sort=atitle&page=1&do=Export'
Download URL for the CORE rankings.
uvt_scholarly.core.EXTRA_CORE_CLASSIFICATIONS
module-attribute
¶
Additional CORE classifications not available in ANZSRC.
uvt_scholarly.core.RANK_TO_NAME
module-attribute
¶
RANK_TO_NAME = {Rank.S: 'A*', Rank.A: 'A', Rank.B: 'B', Rank.C: 'C', Rank.D: 'D', Rank.Unranked: 'Unranked', Rank.National: 'National', Rank.Published: 'Published', Rank.Multiconference: 'Multiconference'}
A mapping from the Rank enumeration to an appropriate display string.
uvt_scholarly.core.CORE_NAME_TO_RANK
module-attribute
¶
CORE_NAME_TO_RANK = {name: rank for rank, name in (RANK_TO_NAME.items())}
A mapping from the CORE rank name to the Rank enumeration.
uvt_scholarly.core.Rank ¶
Bases: Enum
Known ranks from the CORE collections.
uvt_scholarly.core.Conference
dataclass
¶
name
instance-attribute
¶
name: str
The full name of the conference, as it appears in the CORE collection.
acronym
instance-attribute
¶
acronym: str
The acronym of the conference, as it appears in the CORE collection.
source
instance-attribute
¶
source: str
The name of the collection the conference classification is from (should be one of CORE_COLLECTION_NAMES).
primary_fields
instance-attribute
¶
The code for the primary Field of Research of this conference. Use get_primary_field_name to get a display name for these codes.
uvt_scholarly.core.get_url_for_collection ¶
Returns:
-
str–A URL for the given collection that can be used to download the rankings. The download file is usually a CSV file.
uvt_scholarly.core.get_primary_field_name ¶
A display name for the primary field code of a conference.
uvt_scholarly.core.parse_core_csv ¶
parse_core_csv(filename: Path, *, encoding: str = 'utf-8', delimiter: str = ',') -> tuple[Conference, ...]
Read all the conferences from the collection given in filename.
Parameters:
-
delimiter(str, default:',') –The delimiter for the CSV file used by the CORE collections. This should not be modified, as all current collections use a standard command separated file.
Returns:
-
tuple[Conference, ...]–A sequence of all the conferences in the collection.
Raises:
-
ParsingError–if some error is encountered during reading the file, e.g. unknown rank for a conference.
Misc¶
uvt_scholarly.utils.PROJECT_NAME
module-attribute
¶
Default name of the project. Users should query importlib.metadata instead.
uvt_scholarly.utils.UVT_SCHOLARLY_CACHE_DIR
module-attribute
¶
UVT_SCHOLARLY_CACHE_DIR = pathlib.Path(platformdirs.user_cache_dir(PROJECT_NAME))
The path used to cache results and intermediate metadata by the library.
uvt_scholarly.utils.ParsingError ¶
Bases: ScholarlyError
Exception raised while parsing (or reading and validating) an input file.
uvt_scholarly.utils.DownloadError ¶
Bases: ScholarlyError
Exception raised when failing a download.
uvt_scholarly.utils.BlockTimer
dataclass
¶
A context manager for timing blocks of code.
name
class-attribute
instance-attribute
¶
name: str = 'block'
An identifier used to differentiate the timer.
t_wall
class-attribute
instance-attribute
¶
Total wall time (set after __exit__), obtained from
time.perf_counter.
t_proc
class-attribute
instance-attribute
¶
Total process time (set after __exit__), obtained from
time.process_time.