PubMedArticle Properties Reference
The PubMedArticle class provides access to a comprehensive set of properties extracted from NCBI PubMed XML data. This document details all available properties, organized by category and type.
Overview
PubMedArticle objects automatically detect whether they represent a journal article or book chapter and populate properties accordingly. The pubmed_type attribute indicates the type (‘article’ or ‘book’).
Publication Date Access
New in this version: The pubdate property provides normalized access to publication dates.
- pubdate
Normalized publication date as a datetime object. Returns the best available date from:
Article PubDate (Year/Month/Day or MedlineDate)
Book contribution date
History dates (pubmed, entrez, received, accepted)
Example:
article = fetch.article_by_pmid('12345') if article.pubdate: print(f"Published: {article.pubdate.strftime('%Y-%m-%d')}") print(f"Year: {article.pubdate.year}")
Article-Only Properties
These properties are only available for journal articles (pubmed_type='article'):
Publication Details
volume - Journal volume number
issue - Journal issue number
volume_issue - Combined volume(issue) format, e.g. “123(4)”
pages - Page range, e.g. “45-67”
first_page - First page number
last_page - Last page number (computed from page range)
Identifiers
doi - Digital Object Identifier
pii - Publisher Item Identifier
pmc - PubMed Central ID (without “PMC” prefix)
issn - International Standard Serial Number
Indexing & Classification
mesh - Dictionary of MeSH (Medical Subject Headings) terms with:
descriptor_name: Main MeSH term
descriptor_major_topic: Boolean indicating major topic
qualifiers: List of qualifier terms with names and major topic flags
chemicals - Dictionary of chemical substances mentioned, keyed by substance ID:
substance_name: Chemical name
registry_number: CAS registry number or “0” if none
publication_types - Dictionary of publication types (e.g., “Journal Article”, “Review”) keyed by type ID
grants - List of grant information dictionaries with:
agency: Funding agency name
country: Country of funding agency
Book-Only Properties
These properties are only available for book chapters (pubmed_type='book'):
Book Metadata
book_accession_id - NCBI Book ID (e.g. “NBK1403”)
book_title - Full book title
book_publisher - Publisher name
book_language - Language code (e.g. “eng”)
book_medium - Publication medium (e.g. “Internet”)
Book Content
book_abstracts - Dictionary of abstract sections keyed by label
book_sections - Dictionary of book sections
book_copyright - Copyright information
book_synonyms - List of disease/concept synonyms (for reference works)
Book Authors & Editors
book_editors - List of book editors in “LastName FirstInitials” format
Book Dates
book_contribution_date - Chapter contribution date as datetime object
book_date_revised - Last revision date as datetime object
book_history - Dictionary of book publication history dates
book_publication_status - Publication status (e.g. “ppublish”)
Citation Properties
These properties provide formatted citations in different styles:
- citation
Standard academic citation format:
McNally EM, et al. Genetic mutations and mechanisms in dilated cardiomyopathy. Journal of Clinical Investigation. 2013; 123:19-26. doi: 10.1172/JCI62862.
- citation_html
HTML-formatted citation with italics for journal names and bold for volume:
McNally EM, <i>et al</i>. Genetic mutations and mechanisms in dilated cardiomyopathy. <i>Journal of Clinical Investigation</i>. 2013; <b>123</b>:19-26. doi: 10.1172/JCI62862.
- citation_bibtex
BibTeX-formatted citation for reference managers:
@article{McNally2013, author = {McNally, EM and et al}, title = {Genetic mutations and mechanisms in dilated cardiomyopathy}, journal = {Journal of Clinical Investigation}, year = {2013}, volume = {123}, pages = {19-26}, doi = {10.1172/JCI62862}, }
Property Availability by Type
Property |
Article |
Book |
|---|---|---|
pmid |
✓ |
✓ |
url |
✓ |
✓ |
authors |
✓ |
✓ |
title |
✓ |
✓ |
abstract |
✓ |
✓ |
year |
✓ |
✓ |
journal |
✓ |
✓ |
pubdate |
✓ |
✓ |
volume |
✓ |
✗ |
issue |
✓ |
✗ |
pages |
✓ |
✗ |
doi |
✓ |
✗ |
mesh |
✓ |
✗ |
chemicals |
✓ |
✗ |
grants |
✓ |
✗ |
book_title |
✗ |
✓ |
book_editors |
✗ |
✓ |
book_accession_id |
✗ |
✓ |
Usage Examples
Basic Article Information:
from metapub import PubMedFetcher
fetch = PubMedFetcher()
article = fetch.article_by_pmid('23435529')
print(f"Title: {article.title}")
print(f"Journal: {article.journal} ({article.year})")
print(f"Authors: {article.authors_str}")
print(f"DOI: {article.doi}")
# New normalized date access
if article.pubdate:
print(f"Published: {article.pubdate.strftime('%B %d, %Y')}")
Working with MeSH Terms:
if article.mesh:
print("\\nMeSH Terms:")
for ui, mesh_data in article.mesh.items():
term = mesh_data['descriptor_name']
major = mesh_data['descriptor_major_topic']
marker = "*" if major else " "
print(f" {marker} {term}")
Book Chapter Information:
book_article = fetch.article_by_pmid('20301546') # GeneReviews example
if book_article.pubmed_type == 'book':
print(f"Chapter: {book_article.title}")
print(f"Book: {book_article.book_title}")
print(f"Editors: {'; '.join(book_article.book_editors)}")
print(f"Book ID: {book_article.book_accession_id}")
Citation Generation:
# Different citation formats
print("Standard:", article.citation)
print("HTML:", article.citation_html)
print("BibTeX:", article.citation_bibtex)
Error Handling
Properties gracefully handle missing data:
Missing optional fields return
NoneMissing list fields return empty lists
[]Missing dictionary fields return empty dictionaries
{}Invalid dates return
Nonefrom date-related properties
Always check for None values before using date operations:
if article.pubdate:
days_old = (datetime.now() - article.pubdate).days
print(f"Article is {days_old} days old")
See Also
Citation Formatting - Detailed citation formatting guide
Data Model Classes - Complete API reference for PubMedArticle
Examples - More usage examples and patterns