aboutsummaryrefslogtreecommitdiffstats
path: root/chocula/directories/entrez.py
diff options
context:
space:
mode:
Diffstat (limited to 'chocula/directories/entrez.py')
-rw-r--r--chocula/directories/entrez.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/chocula/directories/entrez.py b/chocula/directories/entrez.py
new file mode 100644
index 0000000..821fb1d
--- /dev/null
+++ b/chocula/directories/entrez.py
@@ -0,0 +1,39 @@
+
+from typing import Iterable, Optional
+import csv
+
+from chocula.util import clean_str
+from chocula.common import DirectoryLoader
+from chocula.database import DirectoryInfo
+
+
+class EntrezLoader(DirectoryLoader):
+ """
+ CSV Columns:
+
+ - JrId
+ - JournalTitle
+ - MedAbbr
+ - "ISSN (Print)"
+ - "ISSN (Online)"
+ - IsoAbbr
+ - NlmId
+ """
+
+ source_slug = "entrez"
+
+ def open_file(self) -> Iterable:
+ return csv.DictReader(open(self.config.ENTREZ_FILE))
+
+ def parse_record(self, record) -> Optional[DirectoryInfo]:
+ if not (record.get('ISSN (Online)') or record.get('ISSN (Print)')):
+ return None
+ return DirectoryInfo(
+ directory_slug=self.source_slug,
+ issne=record.get('ISSN (Online)'),
+ issnp=record.get('ISSN (Print)'),
+ custom_id=record.get('NlmId').strip() or None,
+ name=clean_str(record.get('JournalTitle')),
+ abbrev=clean_str(record['IsoAbbr']),
+ )
+