Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
documents affiliation affiliation_id city country areas).
All entries are strings or None. Areas combines abbreviated subject
areas followed by the number of documents in this subject.
Raises
------
ValueError
If the elements provided in integrity_fields do not match the
actual field names (listed above).
"""
# Initiate namedtuple with ordered list of fields
fields = 'eid surname initials givenname affiliation documents '\
'affiliation_id city country areas'
auth = namedtuple('Author', fields)
check_field_consistency(self.integrity, fields)
# Parse elements one-by-one
out = []
for item in self._json:
name = item.get('preferred-name', {})
aff = item.get('affiliation-current', {})
fields = item.get('subject-area',
[{'@abbrev': '', '@frequency': ''}])
if isinstance(fields, dict):
fields = [fields]
areas = ["{} ({})".format(d.get('@abbrev', ''),
d.get('@frequency', ''))
for d in fields]
new = auth(eid=item.get('eid'), initials=name.get('initials'),
surname=name.get('surname'), areas="; ".join(areas),
givenname=name.get('given-name'),
documents=item.get('document-count', '0'),
The information in each namedtuple is (eid name variant documents city
country parent).
All entries are strings or None. variant combines variants of names
with a semicolon.
Raises
------
ValueError
If the elements provided in integrity_fields do not match the
actual field names (listed above).
"""
# Initiate namedtuple with ordered list of fields
fields = 'eid name variant documents city country parent'
aff = namedtuple('Affiliation', fields)
check_field_consistency(self.integrity, fields)
# Parse elements one-by-one
out = []
for item in self._json:
name = item.get('affiliation-name')
variants = [d.get('$', "") for d in item.get('name-variant', [])
if d.get('$', "") != name]
new = aff(eid=item.get('eid'), variant=";".join(variants),
documents=item.get('document-count', '0'), name=name,
city=item.get('city'), country=item.get('country'),
parent=item.get('parent-affiliation-id'))
out.append(new)
# Finalize
check_integrity(out, self.integrity, self.action)
return out or None
Notes
-----
The list of authors and the list of affiliations per author are
deduplicated.
"""
# Initiate namedtuple with ordered list of fields
fields = 'eid doi pii pubmed_id title subtype subtypeDescription creator ' \
'afid affilname affiliation_city affiliation_country author_count ' \
'author_names author_ids author_afids coverDate '\
'coverDisplayDate publicationName issn source_id eIssn '\
'aggregationType volume issueIdentifier article_number '\
'pageRange description authkeywords citedby_count '\
'openaccess fund_acr fund_no fund_sponsor'
doc = namedtuple('Document', fields)
check_field_consistency(self.integrity, fields)
# Parse elements one-by-one
out = []
for item in self._json:
info = {}
# Parse affiliations
try:
info["affilname"] = _join(item['affiliation'], 'affilname')
info["afid"] = _join(item['affiliation'], 'afid')
info["aff_city"] = _join(item['affiliation'], 'affiliation-city')
info["aff_country"] = _join(item['affiliation'],
'affiliation-country')
except KeyError:
pass
# Parse authors
try:
# Deduplicate list of authors