diff --git a/hepcrawl/parsers/__init__.py b/hepcrawl/parsers/__init__.py index e4cabe77..fd0c66ed 100644 --- a/hepcrawl/parsers/__init__.py +++ b/hepcrawl/parsers/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # This file is part of hepcrawl. -# Copyright (C) 2015, 2016, 2017 CERN. +# Copyright (C) 2015, 2016, 2017, 2019 CERN. # # hepcrawl is a free software; you can redistribute it and/or modify it # under the terms of the Revised BSD License; see LICENSE file for @@ -14,3 +14,4 @@ from .arxiv import ArxivParser from .crossref import CrossrefParser from .jats import JatsParser +from .osti import OSTIParser diff --git a/hepcrawl/parsers/osti.py b/hepcrawl/parsers/osti.py new file mode 100644 index 00000000..d7c8d837 --- /dev/null +++ b/hepcrawl/parsers/osti.py @@ -0,0 +1,369 @@ +# -*- coding: utf-8 -*- +# +# This file is part of hepcrawl. +# Copyright (C) 2019 CERN. +# +# hepcrawl is a free software; you can redistribute it and/or modify it +# under the terms of the Revised BSD License; see LICENSE file for +# more details. + +"""Extractors for metadata formats returned by OSTI API""" + +from __future__ import absolute_import, division, print_function + +import re +import unicodedata + +from inspire_schemas.api import LiteratureBuilder +from inspire_schemas.utils import is_arxiv + +from inspire_utils.helpers import remove_tags + +from lxml.etree import XMLSyntaxError + + +class OSTIParser(object): + """Parser for the OSTI json format. + """ + def __init__(self, record, source=u'OSTI'): + self.record = record + self.builder = LiteratureBuilder(source=source) + + def parse(self): + """Extract a list of OSTI json records into INPIRE HEP records. + + Returns: + generator of dicts: records in the Inspire Literature schema. + """ + self.builder.add_abstract(self.abstract) + for author in self.authors: + self.builder.add_author(author) + if self.arxiv_eprint: + self.builder.add_arxiv_eprint(self.arxiv_eprint, []) + self.builder.add_document_type(self.document_type) + for collaboration in self.collaborations: + self.builder.add_collaboration(collaboration) + for doi in self.dois: + self.builder.add_doi(**doi) + self.builder.add_external_system_identifier(self.osti_id, self.source) + self.builder.add_imprint_date(self.date_published) + self.builder.add_publication_info(**self.publication_info) + for report_number in self.report_numbers: + self.builder.add_report_number(report_number, self.source) + self.builder.add_title(self.title) + + return self.builder.record + + @property + def abstract(self): + """Abstract/description of the publication. + + Returns: + str: + """ + abstract = self.record.get(u'description') + if not abstract: + return None + remove_tags_config_abstract = { + 'allowed_tags': [u'sup', u'sub'], + 'allowed_trees': [u'math'], + 'strip': 'self::pub-id|self::issn' + } + try: + abstract = remove_tags(abstract, **remove_tags_config_abstract).strip() + except XMLSyntaxError: + pass + + return abstract + + @property + def arxiv_eprint(self): + """arXiv identifier + + look for arXiv identifier in report number string + + Returns: str: arXiv identifier + """ + return next((rn.strip() for rn in self.record.get(u'report_number', '').split(u';') + if is_arxiv(rn)), '') + + @property + def authors(self): + """Authors and affiliations. + + Returns: list of author dicts + + """ + authors, _ = self._get_authors_and_affiliations( + self.record.get(u'authors')) + parsed_authors = [self.builder.make_author( + full_name=author.get(u'full_name'), + raw_affiliations=author.get(u'affiliations'), + ids=[('ORCID', author.get(u'orcid'))]) + for author in authors] + return parsed_authors + + @property + def collaborations(self): + """Participating collaborations. + + Returns: + list: of str, e.g. [u'VERITAS', u'Fermi-LAT'] + """ + return self.record.get(u'contributing_org', '').split(u';') + + @property + def date_published(self): + """Publication Date. + + OSTI publication info has datetimes YYYY-MM-DDT00:00:00Z + only use the date part + + Returns: + str: compliant with ISO-8601 date + """ + return self.record.get(u'publication_date', '').split('T')[0] + + @property + def document_type(self): + """Document type. + + Returns: + str: + """ + doctype = {u'Conference': u'proceedings', + u'Dataset': None, + u'Journal Article': u'article', + u'Patent': None, + u'Program Document': 'report', + u'S&T Accomplishment Report': u'activity report', + u'Technical Report': u'report', + u'Thesis/Dissertation': u'thesis'}.get( + self.record.get(u'product_type')) + return doctype + + @property + def dois(self): + """DOIs for the publication. + + Returns: + list: dois + """ + doi_values = self.record.get(u'doi') + dois = [ + {u'doi': value, + u'material': u'publication', + u'source': self.source} + for value in doi_values.split(u' ') + ] + return dois + + @property + def osti_id(self): + """OSTI id for the publication. + + Returns: + str: integer identifier as a string, e.g. u'1469753' + """ + return self.record.get(u'osti_id') + + @property + def journal_year(self): + """Publication year. + + Returns: + str: 4 digit year or empty string + """ + if self.date_published: + try: + return int(self.date_published[:4]) + except ValueError: + pass + return '' + + @property + def journal_title(self): + """Journal name. + + Returns: + str: name of the journal, e.g. u'Nuclear Physics. A' + """ + return self.record.get(u'journal_name') + + @property + def journal_issue(self): + """Journal issue. + + Returns: + str: issue number or letter, e.g. u'34' or u'C' + """ + return self.record.get(u'journal_issue') + + @property + def journal_issn(self): + """Journal ISSN. + + Returns: + str: ISSN of the journal + """ + return self.record.get(u'journal_issn') + + @property + def journal_volume(self): + """Journal volume. + + Returns: + str: journal volume or volumes, e.g. u'55' or u'773-774' + """ + return self.record.get(u'journal_volume') + + @property + def language(self): + """Language of the publication. + + Returns: + str: language, e.g. u'English' + """ + return self.record.get(u'language', '').capitalize() + + @property + def pageinfo(self): + """Format and page information. + + Returns: + dict: lookup table for various pieces of page information + """ + + return self._get_pageinfo(self.record.get(u'format')) + + @property + def publication_info(self): + """Journal publication information (pubnote). + + Returns: + dict: + """ + publication_info = { + u'artid': self.pageinfo.get(u'artid'), + u'journal_title': self.journal_title, + u'journal_issue': self.journal_issue, + u'journal_volume': self.journal_volume, + u'page_start': self.pageinfo.get(u'page_start'), + u'page_end': self.pageinfo.get(u'page_end'), + u'pubinfo_freetext': self.pageinfo.get(u'freeform'), + u'year': self.journal_year, + } + return publication_info + + @property + def report_numbers(self): + """Report numbers. + + Returns: + list: list of report number strings, e.g. + [u'MCnet-19-02', u'FERMILAB-PUB-17-088'] + """ + rns = self.record.get(u'report_number') + if rns is None: + return [] + + rns = rns.replace('&', '&') + return [rn.strip() for rn in rns.split(u';') if not is_arxiv(rn)] + + @property + def title(self): + """Title of the publication. + + Returns: + str: article title, e.g. u'Visualizing topological edge states ...' + """ + return self.record.get(u'title') + + @property + def source(self): + """Provenance info + + Returns: + str: + """ + return u'OSTI' + + @staticmethod + def _get_authors_and_affiliations(authorlist=None): + """Attempt to parse author info + + Returns: + tuple: a tuple of (authors, warnings): + """ + if authorlist is None: + return [], [] + + author_re = re.compile(r""" + ^(?:(?P[\w.']+(?:\s*[\w.'-]+)*)(?:\s*,\s* + (?P\w+(\s*[\w.'-]+)*))?\s* + (?:\[(?P.*)\])?\s* + (?:[(]ORCID:(?P\d{15}[\dX])[)]\s*)? + |(?Pet al[.]))$ + """, re.U|re.S|re.X) + disallowed_chars_re = re.compile(r"[^-\w\d\s.,':()\[\]]", re.U|re.S) + + authors = [] + warnings = [] + for author in authorlist: + author = unicodedata.normalize(u'NFC', author) + author = author.replace(u'‐', u'-').replace(u"’", u"'") + if len(author) > 30 and disallowed_chars_re.search(author): + warnings.append("disallowd chars in author: %s" % author) + continue + match = author_re.match(author) + + if match: + if match.group(u'etal'): + continue + nameparts = match.groupdict() + if nameparts.get(u'affil'): + nameparts[u'affil'] = [aff.strip() for aff in + nameparts.get(u'affil').split(u';')] + + # normalize orcid string to hyphenated form + orcid = nameparts.get(u'orcid') + if orcid: + orcid = '-'.join(re.findall(r'[\dX]{4}', orcid)) + + authors.append({u'full_name': "{}, {}".format( + nameparts.get(u'surname'), + nameparts.get(u'given_names')), + u'surname': nameparts.get(u'surname'), + u'given_names': nameparts.get(u'given_names'), + u'affiliations': nameparts.get(u'affil'), + u'orcid': orcid}) + else: + if '[' in author: + fullname, affil = author.split(u'[', 1) + authors.append({u'full_name': fullname, + u'affiliation': affil.rsplit(u']', 1)[0]}) + return authors, warnings + + @staticmethod + def _get_pageinfo(pageformat): + """Parse the OSTI format field for page information + + Returns: + dict: + """ + re_format = re.compile(r""" + ^Medium:\s*(?PED|X);\s*Size:\s* + (?: + Article\s*No[.]\s*(?P\w?\d+) + |(?:p(?:[.]|ages))\s*(?P\w?\d+)(?:\s*(?:-|to)\s*(?P\w?\d+))? + |(?P\d+)\s*p(?:[.]|ages) + |(?P.*) + ) + (?P.*)$ + """, re.I|re.X) + + format_parts = re_format.match(pageformat) + page_info = {} + if format_parts: + page_info = format_parts.groupdict() + return page_info diff --git a/hepcrawl/spiders/osti_spider.py b/hepcrawl/spiders/osti_spider.py new file mode 100644 index 00000000..71957871 --- /dev/null +++ b/hepcrawl/spiders/osti_spider.py @@ -0,0 +1,197 @@ +# -*- coding: utf-8 -*- +# +# This file is part of hepcrawl. +# Copyright (C) 2019 CERN. +# +# hepcrawl is a free software; you can redistribute it and/or modify it +# under the terms of the Revised BSD License; see LICENSE file for +# more details. + +"""Spider for OSTI/SLAC""" + +from __future__ import absolute_import, division, print_function + +import json +from datetime import datetime + +from furl import furl + +import link_header + +from scrapy import Request + +from .common.lastrunstore_spider import LastRunStoreSpider +from ..parsers import OSTIParser +from ..utils import ( + ParsedItem, + strict_kwargs, +) + + +class OSTISpider(LastRunStoreSpider): + """OSTI crawler + + Uses the OSTI REST API v1 https://www.osti.gov/api/v1/docs + to harvest records associated with SLAC from OSTI + + Example: + Using the OSTI spider:: + + $ scrapy crawl OSTI -a "from_date=2019-04-01" + + """ + + name = 'OSTI' + osti_base_url = 'https://www.osti.gov/api/v1/records' + + @strict_kwargs + def __init__(self, + from_date=None, + until_date=None, + rows=400, + product_types=u'Journal Article,Technical Report,Book,Thesis/Dissertation', + journal_types='', + research_org=u'slac', + **kwargs): + super(OSTISpider, self).__init__(**kwargs) + self.from_date = from_date + self.until_date = until_date + self.product_types = product_types + self.journal_types = journal_types + self.rows = rows + self.research_org = research_org + + @property + def url(self): + """Constructs the URL to use for querying OSTI. + + Returns: + str: URL + """ + params = {} + params['entry_date_start'] = self.from_date \ + or self.resume_from(set_=self.set) + if self.until_date: + params['entry_date_end'] = self.until_date + if self.rows: + params['rows'] = self.rows + if self.product_types: + params['product_type'] = self.product_types + if self.journal_types: + params['journal_type'] = self.journal_types + if self.research_org: + params['research_org'] = self.research_org + + return furl(OSTISpider.osti_base_url).add(params).url + + @property + def set(self): + """Acronym of the research organization for which to harvest publications. + + Returns: + str: e.g. u'SLAC' + """ + return self.research_org + + @property + def headers(self): + """HTTP headers to use in requests. + + Returns: + dict: + """ + return {'Accept': 'application/json'} + + def start_requests(self): + """Just yield the scrapy.Request.""" + started_at = datetime.utcnow() + self.logger.debug("URL is %s" % self.url) + yield Request(self.url, + headers=self.headers) + self.save_run(started_at=started_at, set_=self.set) + + def parse(self, response): + """Parse OSTI response into HEP records. + + Returns: + generator: dict: json + """ + + osti_response = json.loads(response.text) + for record in osti_response: + parser = OSTIParser(record, source=self.name) + + yield ParsedItem( + record=parser.parse(), + record_format="hep", + ) + + total_count = response.headers.get('X-Total-Count') + if int(total_count) > len(osti_response): + self.logger.debug("do paging, total of %s records" % int(total_count)) + + # Pagination support. Will yield until no more "next" pages are found + if 'Link' in response.headers: + links = link_header.parse(response.headers[u'Link'].decode()) + nextlink = links.links_by_attr_pairs([(u'rel', u'next')]) + if nextlink: + next_url = nextlink[0].href + self.logger.debug("using next link %s" % next_url) + yield Request(next_url, + headers=self.headers, + callback=self.parse) + + def make_file_fingerprint(self, set_): + """Create a label to use in filename storing last_run information. + + Returns: + str: + """ + return u'set={}'.format(set_) + + @property + def product_types(self): + """Product type URL parameter + + Returns: + str: + """ + return self.__product_types + + @product_types.setter + def product_types(self, ptypes): + """Setter for product_type URL parameter with verification against + allowed list + """ + prod_types = ('Journal Article', 'Technical Report', + 'Data', 'Software', + 'Patent', 'Conference', + 'Book', 'Program Document', + 'Thesis/Dissertation', + 'Multimedia', 'Miscellaneous') + self.__product_types = ', '.join((pt.strip() for + pt in ptypes.split(',') + if pt.strip() in prod_types)) + + @property + def journal_types(self): + """Journal type URL parameter + + Returns: + str: + """ + return self.__journal_types + + @journal_types.setter + def journal_types(self, jtypes): + """Setter for journal_type URL parameter with verification against + allowed list + """ + journal_types = {'AM': 'Accepted Manuscript', + 'PA': 'Published Article', + 'PM': "Publisher's Accepted Manuscript", + 'OT': 'Other'} + + self.__journal_types = ', '.join((journal_types[jt.strip()] for + jt in jtypes.split(',') + if jt.strip() in journal_types)) diff --git a/tests/unit/responses/osti/sample_osti_record1.json b/tests/unit/responses/osti/sample_osti_record1.json new file mode 100644 index 00000000..3b17cfba --- /dev/null +++ b/tests/unit/responses/osti/sample_osti_record1.json @@ -0,0 +1,51 @@ +[ + { + "article_type" : "Accepted Manuscript", + "authors" : [ + "Bjorken, J. D. [Stanford Univ., Stanford, CA (United States)]", + "Cline, D. [Univ. of Wisconsin, Madison, WI (United States)]", + "Mann, A. K. [Univ. of Pennsylvania, Philadelphia, PA (United States)]" + ], + "availability" : "", + "contributing_org" : "", + "country_publication" : "United States", + "description" : "The scaling variable ν = xy = 2(Eμ/M) sin2(1/2θμ) is useful for the description of deep-inelastic neutrino-nucleon scattering processes. This variable is determined solely by the momentum and angle of the outgoing lepton. The normalized scattering distribution in this variable is independent of incident lepton energy and flux, provided scale invariance is valid. Furthermore the sensitivity to various hypothetical scale-breaking mechanisms is discussed.", + "doe_contract_number" : "AC02-76SF00515", + "doi" : "10.1103/PhysRevD.8.3207", + "entry_date" : "2019-04-26T00:00:00Z", + "format" : "Medium: ED; Size: p. 3207-3210", + "journal_issn" : "ISSN 0556-2821", + "journal_issue" : "9", + "journal_name" : "Physical Review. D, Particles Fields", + "journal_volume" : "8", + "language" : "English", + "links" : [ + { + "href" : "https://www.osti.gov/biblio/1442851", + "rel" : "citation" + }, + { + "href" : "https://www.osti.gov/servlets/purl/1442851", + "rel" : "fulltext" + } + ], + "osti_id" : "1442851", + "other_identifiers" : [ + "Journal ID: ISSN 0556-2821; PRVDAQ; TRN: US1900937" + ], + "product_type" : "Journal Article", + "publication_date" : "1973-11-01T00:00:00Z", + "publisher" : "American Physical Society (APS)", + "report_number" : "SLAC-PUB-1244", + "research_orgs" : [ + "SLAC National Accelerator Lab., Menlo Park, CA (United States)" + ], + "sponsor_orgs" : [ + "USDOE Office of Science (SC)" + ], + "subjects" : [ + "72 PHYSICS OF ELEMENTARY PARTICLES AND FIELDS" + ], + "title" : "Flux-Independent Measurements of Deep-Inelastic Neutrino Processes" + } +] diff --git a/tests/unit/responses/osti/sample_osti_record2.json b/tests/unit/responses/osti/sample_osti_record2.json new file mode 100644 index 00000000..e6f25841 --- /dev/null +++ b/tests/unit/responses/osti/sample_osti_record2.json @@ -0,0 +1,49 @@ +[ + { + "article_type" : "", + "authors" : [ + "Minty, Michiko G" + ], + "availability" : "", + "contributing_org" : "", + "country_publication" : "United States", + "description" : "Coupled-bunch instabilities have been observed in the PEP-II high energy electron ring (HER) and in the low energy positron ring (LER). To better characterize the beam motion, new di- agnostics were developed and improvements to existing diagnostics were made. The relative sensitivies of the measurement methods were evaluated and systematic effects were carefully analyzed and subsequently reduced. The studies were occassionally hampered by day-to-day irreproducibility; for example, in the HER, sometimes two-bunch instabilities were observed while in the LER an occassional single-bunch instability was noted. As a consequence, absolute measurements of the instabilities' properties proved di cult, however relative changes were suc- cessfully studied. Measurements were made of instability thresholds, characteristic frequencies, and relative growth rates. These observables were found to depend strongly on various beam properties including fill pattern, single bunch current, and total beam current. Certain features of the beam instabilities were dominant in the measurements. For example, strong horizontal excitations were identi ed and were reproducible for the case of short bunch trains in the HER. Interestingly, measurements in the LER with short bunch trains evidenced similar features indicating a possible common source. With bunch trains, while horizontal motion was prevalent, when normalized to the beam size, motion in the vertical plane was found to be equally significant with regards to the potential impact on collider luminosity. To date, it has not been determined whether the stability issues observed with bunch trains may be relevant for more evenly spaced beam current distributions as in the design fill pattern. Fortunately, in both accelerators, the beam was observed to be more stable with more uniform bunch fills and at modest single-bunch beam currents. In this report is presented a summary of data acquired in both the electron and positron rings during the October-December 1998 commissioning period. Properties of the two accelerators and symbol de nitions are given in Table I. In the main text, the data are classified in terms of bunch fill pattern; cross references to specific experiments are given in appendix A. An overview of theoretical models and simulations is given in references [1], [2], and [3]. Instability measurements made during previous commissioning runs are given in references [4], [5], [6], [7], and [8].", + "doe_contract_number" : "AC03-76SF00515", + "doi" : "10.2172/9893", + "entry_date" : "2016-06-20T00:00:00Z", + "format" : "Medium: ED", + "journal_issue" : "", + "journal_name" : "", + "journal_volume" : "", + "language" : "English", + "links" : [ + { + "href" : "https://www.osti.gov/biblio/9893", + "rel" : "citation" + } + ], + "osti_id" : "9893", + "other_identifiers" : [ + "ON: DE00009893" + ], + "product_type" : "Technical Report", + "publication_date" : "1999-04-07T00:00:00Z", + "publisher" : "", + "report_number" : "SLAC-AP-118", + "research_orgs" : [ + "Stanford Linear Accelerator Center (SLAC), Menlo Park, CA" + ], + "sponsor_orgs" : [ + "ER" + ], + "subjects" : [ + "43 PARTICLE ACCELERATORS", + "PEP Storage Rings", + "Instability", + "Beam-Beam Interactions", + "Beam Bunching", + "Coupling" + ], + "title" : "Coupled-Bunch Instability Measurements at PEP-II (Oct-Dec, 1998)" + } +] diff --git a/tests/unit/responses/osti/sample_osti_record3.json b/tests/unit/responses/osti/sample_osti_record3.json new file mode 100644 index 00000000..493bd7fc --- /dev/null +++ b/tests/unit/responses/osti/sample_osti_record3.json @@ -0,0 +1,52 @@ +[ + { + "article_type" : "Accepted Manuscript", + "authors" : [ + "Gugliucci, N. E. [Lycoming College, Williamsport, PA (United States); National Radio Astronomy Observatory, Socorro, NM (United States)]", + "Taylor, G. B. [National Radio Astronomy Observatory, Socorro, NM (United States); Kavli Institute of Particle Astrophysics and Cosmology, Menlo Park, CA (United States)]", + "Peck, A. B. [Harvard-Smithsonian Center for Astrophysics, Hilo, HI (United States)]", + "Giroletti, M. [Istituto di Radiastronomia del CNR, Bologna (Italy)]" + ], + "availability" : "", + "contributing_org" : "", + "country_publication" : "United States", + "description" : "Here, we present multiepoch VLBA observations of compact symmetric objects (CSOs) from the COINS sample (CSOs Observed In the Northern Sky). These observations allow us to make estimates of, or place limits on, the kinematic ages for those sources with well-identified hot spots. This study significantly increases the number of CSOs with well-determined ages or limits. The age distribution is found to be sharply peaked under 500 yr, suggesting that many CSOs die young, or are episodic in nature, and very few survive to evolve into FR II sources such as Cygnus A. Jet components are found to have higher velocities than hot spots, which is consistent with their movement down cleared channels. We also report on the first detections of significant polarization in two CSOs, J0000+4054 (2.1%) and J1826+1831 (8.8%). In both cases the polarized emission is found in jet components on the stronger side of the center of activity.", + "doe_contract_number" : "AC02-76SF00515", + "doi" : "10.1086/427934", + "entry_date" : "2019-04-26T00:00:00Z", + "format" : "Medium: ED; Size: p. 136-148", + "journal_issn" : "ISSN 0004-637X", + "journal_issue" : "1", + "journal_name" : "Astrophysical Journal", + "journal_volume" : "622", + "language" : "English", + "links" : [ + { + "href" : "https://www.osti.gov/biblio/1442479", + "rel" : "citation" + }, + { + "href" : "https://www.osti.gov/servlets/purl/1442479", + "rel" : "fulltext" + } + ], + "osti_id" : "1442479", + "other_identifiers" : [ + "Journal ID: ISSN 0004-637X; TRN: US1900926" + ], + "product_type" : "Journal Article", + "publication_date" : "2005-03-20T00:00:00Z", + "publisher" : "Institute of Physics (IOP)", + "report_number" : "SLAC-PUB-10931", + "research_orgs" : [ + "SLAC National Accelerator Lab., Menlo Park, CA (United States)" + ], + "sponsor_orgs" : [ + "USDOE Office of Science (SC)" + ], + "subjects" : [ + "79 ASTRONOMY AND ASTROPHYSICS" + ], + "title" : "Dating COINS: Kinematic Ages for Compact Symmetric Objects" + } +] diff --git a/tests/unit/responses/osti/sample_osti_record4.json b/tests/unit/responses/osti/sample_osti_record4.json new file mode 100644 index 00000000..1ad15bc4 --- /dev/null +++ b/tests/unit/responses/osti/sample_osti_record4.json @@ -0,0 +1,56 @@ +[ + { + "article_type" : "Accepted Manuscript", + "authors" : [ + "Gorham, P. W. [Univ. of Hawaii at Manoa, Honolulu, HI (United States)]", + "Saltzberg, D. [Univ. of California, Los Angeles, CA (United States)]", + "Field, R. C. [Stanford Univ., Stanford, CA (United States)]", + "Guillian, E. [Univ. of Hawaii at Manoa, Honolulu, HI (United States)]", + "Milinčić, R. [Univ. of Hawaii at Manoa, Honolulu, HI (United States)]", + "Miočinović, P. [Univ. of Hawaii at Manoa, Honolulu, HI (United States)]", + "Walz, D. [Stanford Univ., Stanford, CA (United States)]", + "Williams, D. [Univ. of California, Los Angeles, CA (United States); Pennsylvania State Univ., University Park, PA (United States)]" + ], + "availability" : "", + "contributing_org" : "", + "country_publication" : "United States", + "description" : "Here, we report on further SLAC measurements of the Askaryan effect: coherent radio emission from charge asymmetry in electromagnetic cascades. We used synthetic rock salt as the dielectric medium, with cascades produced by GeV bremsstrahlung photons at the Final Focus Test Beam. We extend our prior discovery measurements to a wider range of parameter space and explore the effect in a dielectric medium of great potential interest to large-scale ultra-high-energy neutrino detectors: rock salt (halite), which occurs naturally in high purity formations containing in many cases hundreds of km3 of water-equivalent mass. We observed strong coherent pulsed radio emission over a frequency band from 0.2–15 GHz. A grid of embedded dual-polarization antennas was used to confirm the high degree of linear polarization and track the change of direction of the electric-field vector with azimuth around the shower. Coherence was observed over 4 orders of magnitude of shower energy. The frequency dependence of the radiation was tested over 2 orders of magnitude of UHF and microwave frequencies. We have also made the first observations of coherent transition radiation from the Askaryan charge excess, and the result agrees well with theoretical predictions. Based on these results we have performed a detailed and conservative simulation of a realistic GZK neutrino telescope array within a salt dome, and we find it capable of detecting 10 or more contained events per year from even the most conservative GZK neutrino models.", + "doe_contract_number" : "AC02-76SF00515", + "doi" : "10.1103/PhysRevD.72.023002", + "entry_date" : "2019-04-26T00:00:00Z", + "format" : "Medium: ED; Size: Article No. 023002", + "journal_issn" : "ISSN 1550-7998", + "journal_issue" : "2", + "journal_name" : "Physical Review. D, Particles, Fields, Gravitation and Cosmology", + "journal_volume" : "72", + "language" : "English", + "links" : [ + { + "href" : "https://www.osti.gov/biblio/1442457", + "rel" : "citation" + }, + { + "href" : "https://www.osti.gov/servlets/purl/1442457", + "rel" : "fulltext" + } + ], + "osti_id" : "1442457", + "other_identifiers" : [ + "Journal ID: ISSN 1550-7998; PRVDAQ; TRN: US1900924" + ], + "product_type" : "Journal Article", + "publication_date" : "2005-07-21T00:00:00Z", + "publisher" : "American Physical Society (APS)", + "report_number" : "SLAC-PUB-10911", + "research_orgs" : [ + "SLAC National Accelerator Lab., Menlo Park, CA (United States)" + ], + "sponsor_orgs" : [ + "USDOE Office of Science (SC)" + ], + "subjects" : [ + "72 PHYSICS OF ELEMENTARY PARTICLES AND FIELDS" + ], + "title" : "Accelerator measurements of the Askaryan effect in rock salt: A roadmap toward teraton underground neutrino detectors" + } +] diff --git a/tests/unit/responses/osti/sample_osti_record5.json b/tests/unit/responses/osti/sample_osti_record5.json new file mode 100644 index 00000000..6c9eb647 --- /dev/null +++ b/tests/unit/responses/osti/sample_osti_record5.json @@ -0,0 +1,2108 @@ +[ + { + "article_type" : "Accepted Manuscript", + "authors" : [ + "Aad, G.", + "Abbott, B.", + "Abdallah, J.", + "Abdelalim, A. A.", + "Abdesselam, A.", + "Abdinov, O.", + "Abi, B.", + "Abolins, M.", + "Abramowicz, H.", + "Abreu, H.", + "Acerbi, E.", + "Acharya, B. S.", + "Adams, D. L.", + "Addy, T. N.", + "Adelman, J.", + "Aderholz, M.", + "Adomeit, S.", + "Adragna, P.", + "Adye, T.", + "Aefsky, S.", + "Aguilar-Saavedra, J. A.", + "Aharrouche, M.", + "Ahlen, S. P.", + "Ahles, F.", + "Ahmad, A.", + "Ahsan, M.", + "Aielli, G.", + "Akdogan, T.", + "Åkesson, T. P. A.", + "Akimoto, G.", + "Akimov, A. V.", + "Akiyama, A.", + "Alam, M. S.", + "Alam, M. A.", + "Albrand, S.", + "Aleksa, M.", + "Aleksandrov, I. N.", + "Aleppo, M.", + "Alessandria, F.", + "Alexa, C.", + "Alexander, G.", + "Alexandre, G.", + "Alexopoulos, T.", + "Alhroob, M.", + "Aliev, M.", + "Alimonti, G.", + "Alison, J.", + "Aliyev, M.", + "Allport, P. P.", + "Allwood-Spiers, S. E.", + "Almond, J.", + "Aloisio, A.", + "Alon, R.", + "Alonso, A.", + "Alviggi, M. G.", + "Amako, K.", + "Amaral, P.", + "Amelung, C.", + "Ammosov, V. V.", + "Amorim, A.", + "Amorós, G.", + "Amram, N.", + "Anastopoulos, C.", + "Andeen, T.", + "Anders, C. F.", + "Anderson, K. J.", + "Andreazza, A.", + "Andrei, V.", + "Andrieux, M-L", + "Anduaga, X. S.", + "Angerami, A.", + "Anghinolfi, F.", + "Anjos, N.", + "Annovi, A.", + "Antonaki, A.", + "Antonelli, M.", + "Antonelli, S.", + "Antonov, A.", + "Antos, J.", + "Anulli, F.", + "Aoun, S.", + "Aperio Bella, L.", + "Apolle, R.", + "Arabidze, G.", + "Aracena, I.", + "Arai, Y.", + "Arce, A. T. H.", + "Archambault, J. P.", + "Arfaoui, S.", + "Arguin, J-F", + "Arik, E.", + "Arik, M.", + "Armbruster, A. J.", + "Arnaez, O.", + "Arnault, C.", + "Artamonov, A.", + "Artoni, G.", + "Arutinov, D.", + "Asai, S.", + "Asfandiyarov, R.", + "Ask, S.", + "Åsman, B.", + "Asquith, L.", + "Assamagan, K.", + "Astbury, A.", + "Astvatsatourov, A.", + "Atoian, G.", + "Aubert, B.", + "Auerbach, B.", + "Auge, E.", + "Augsten, K.", + "Aurousseau, M.", + "Austin, N.", + "Avramidou, R.", + "Axen, D.", + "Ay, C.", + "Azuelos, G.", + "Azuma, Y.", + "Baak, M. A.", + "Baccaglioni, G.", + "Bacci, C.", + "Bach, A. M.", + "Bachacou, H.", + "Bachas, K.", + "Bachy, G.", + "Backes, M.", + "Backhaus, M.", + "Badescu, E.", + "Bagnaia, P.", + "Bahinipati, S.", + "Bai, Y.", + "Bailey, D. C.", + "Bain, T.", + "Baines, J. T.", + "Baker, O. K.", + "Baker, M. D.", + "Baker, S.", + "Baltasar Dos Santos Pedrosa, F.", + "Banas, E.", + "Banerjee, P.", + "Banerjee, Sw", + "Banfi, D.", + "Bangert, A.", + "Bansal, V.", + "Bansil, H. S.", + "Barak, L.", + "Baranov, S. P.", + "Barashkou, A.", + "Barbaro Galtieri, A.", + "Barber, T.", + "Barberio, E. L.", + "Barberis, D.", + "Barbero, M.", + "Bardin, D. Y.", + "Barillari, T.", + "Barisonzi, M.", + "Barklow, T.", + "Barlow, N.", + "Barnett, B. M.", + "Barnett, R. M.", + "Baroncelli, A.", + "Barr, A. J.", + "Barreiro, F.", + "Barreiro Guimarã es da Costa, J.", + "Barrillon, P.", + "Bartoldus, R.", + "Barton, A. E.", + "Bartsch, D.", + "Bartsch, V.", + "Bates, R. L.", + "Batkova, L.", + "Batley, J. R.", + "Battaglia, A.", + "Battistin, M.", + "Battistoni, G.", + "Bauer, F.", + "Bawa, H. S.", + "Beare, B.", + "Beau, T.", + "Beauchemin, P. H.", + "Beccherle, R.", + "Bechtle, P.", + "Beck, H. P.", + "Beckingham, M.", + "Becks, K. H.", + "Beddall, A. J.", + "Beddall, A.", + "Bedikian, S.", + "Bednyakov, V. A.", + "Bee, C. P.", + "Begel, M.", + "Behar Harpaz, S.", + "Behera, P. K.", + "Beimforde, M.", + "Belanger-Champagne, C.", + "Bell, P. J.", + "Bell, W. H.", + "Bella, G.", + "Bellagamba, L.", + "Bellina, F.", + "Bellomo, G.", + "Bellomo, M.", + "Belloni, A.", + "Beloborodova, O.", + "Belotskiy, K.", + "Beltramello, O.", + "Ben Ami, S.", + "Benary, O.", + "Benchekroun, D.", + "Benchouk, C.", + "Bendel, M.", + "Benedict, B. H.", + "Benekos, N.", + "Benhammou, Y.", + "Benjamin, D. P.", + "Benoit, M.", + "Bensinger, J. R.", + "Benslama, K.", + "Bentvelsen, S.", + "Berge, D.", + "Bergeaas Kuutmann, E.", + "Berger, N.", + "Berghaus, F.", + "Berglund, E.", + "Beringer, J.", + "Bernardet, K.", + "Bernat, P.", + "Bernhard, R.", + "Bernius, C.", + "Berry, T.", + "Bertin, A.", + "Bertinelli, F.", + "Bertolucci, F.", + "Besana, M. I.", + "Besson, N.", + "Bethke, S.", + "Bhimji, W.", + "Bianchi, R. M.", + "Bianco, M.", + "Biebel, O.", + "Bieniek, S. P.", + "Biesiada, J.", + "Biglietti, M.", + "Bilokon, H.", + "Bindi, M.", + "Binet, S.", + "Bingul, A.", + "Bini, C.", + "Biscarat, C.", + "Bitenc, U.", + "Black, K. M.", + "Blair, R. E.", + "Blanchard, J-B", + "Blanchot, G.", + "Blocker, C.", + "Blocki, J.", + "Blondel, A.", + "Blum, W.", + "Blumenschein, U.", + "Bobbink, G. J.", + "Bobrovnikov, V. B.", + "Bocci, A.", + "Boddy, C. R.", + "Boehler, M.", + "Boek, J.", + "Boelaert, N.", + "Böser, S.", + "Bogaerts, J. A.", + "Bogdanchikov, A.", + "Bogouch, A.", + "Bohm, C.", + "Boisvert, V.", + "Bold, T.", + "Boldea, V.", + "Bona, M.", + "Bondarenko, V. G.", + "Boonekamp, M.", + "Boorman, G.", + "Booth, C. N.", + "Booth, P.", + "Bordoni, S.", + "Borer, C.", + "Borisov, A.", + "Borissov, G.", + "Borjanovic, I.", + "Borroni, S.", + "Bos, K.", + "Boscherini, D.", + "Bosman, M.", + "Boterenbrood, H.", + "Botterill, D.", + "Bouchami, J.", + "Boudreau, J.", + "Bouhova-Thacker, E. V.", + "Boulahouache, C.", + "Bourdarios, C.", + "Bousson, N.", + "Boveia, A.", + "Boyd, J.", + "Boyko, I. R.", + "Bozhko, N. I.", + "Bozovic-Jelisavcic, I.", + "Bracinik, J.", + "Braem, A.", + "Brambilla, E.", + "Branchini, P.", + "Brandenburg, G. W.", + "Brandt, A.", + "Brandt, G.", + "Brandt, O.", + "Bratzler, U.", + "Brau, B.", + "Brau, J. E.", + "Braun, H. M.", + "Brelier, B.", + "Bremer, J.", + "Brenner, R.", + "Bressler, S.", + "Breton, D.", + "Brett, N. D.", + "Bright-Thomas, P. G.", + "Britton, D.", + "Brochu, F. M.", + "Brock, I.", + "Brock, R.", + "Brodbeck, T. J.", + "Brodet, E.", + "Broggi, F.", + "Bromberg, C.", + "Brooijmans, G.", + "Brooks, W. K.", + "Brown, G.", + "Brubaker, E.", + "Bruckman de Renstrom, P. A.", + "Bruncko, D.", + "Bruneliere, R.", + "Brunet, S.", + "Bruni, A.", + "Bruni, G.", + "Bruschi, M.", + "Buanes, T.", + "Bucci, F.", + "Buchanan, J.", + "Buchanan, N. J.", + "Buchholz, P.", + "Buckingham, R. M.", + "Buckley, A. G.", + "Buda, S. I.", + "Budagov, I. A.", + "Budick, B.", + "Büscher, V.", + "Bugge, L.", + "Buira-Clark, D.", + "Buis, E. J.", + "Bulekov, O.", + "Bunse, M.", + "Buran, T.", + "Burckhart, H.", + "Burdin, S.", + "Burgess, T.", + "Burke, S.", + "Busato, E.", + "Bussey, P.", + "Buszello, C. P.", + "Butin, F.", + "Butler, B.", + "Butler, J. M.", + "Buttar, C. M.", + "Butterworth, J. M.", + "Buttinger, W.", + "Byatt, T.", + "Cabrera Urbán, S.", + "Caccia, M.", + "Caforio, D.", + "Cakir, O.", + "Calafiura, P.", + "Calderini, G.", + "Calfayan, P.", + "Calkins, R.", + "Caloba, L. P.", + "Caloi, R.", + "Calvet, D.", + "Calvet, S.", + "Camacho Toro, R.", + "Camard, A.", + "Camarri, P.", + "Cambiaghi, M.", + "Cameron, D.", + "Cammin, J.", + "Campana, S.", + "Campanelli, M.", + "Canale, V.", + "Canelli, F.", + "Canepa, A.", + "Cantero, J.", + "Capasso, L.", + "Capeans Garrido, M. D. M.", + "Caprini, I.", + "Caprini, M.", + "Capriotti, D.", + "Capua, M.", + "Caputo, R.", + "Caramarcu, C.", + "Cardarelli, R.", + "Carli, T.", + "Carlino, G.", + "Carminati, L.", + "Caron, B.", + "Caron, S.", + "Carpentieri, C.", + "Carrillo Montoya, G. D.", + "Carter, A. A.", + "Carter, J. R.", + "Carvalho, J.", + "Casadei, D.", + "Casado, M. P.", + "Cascella, M.", + "Caso, C.", + "Castaneda Hernandez, A. M.", + "Castaneda-Miranda, E.", + "Castillo Gimenez, V.", + "Castro, N. F.", + "Cataldi, G.", + "Cataneo, F.", + "Catinaccio, A.", + "Catmore, J. R.", + "Cattai, A.", + "Cattani, G.", + "Caughron, S.", + "Cauz, D.", + "Cavallari, A.", + "Cavalleri, P.", + "Cavalli, D.", + "Cavalli-Sforza, M.", + "Cavasinni, V.", + "Cazzato, A.", + "Ceradini, F.", + "Cerqueira, A. S.", + "Cerri, A.", + "Cerrito, L.", + "Cerutti, F.", + "Cetin, S. A.", + "Cevenini, F.", + "Chafaq, A.", + "Chakraborty, D.", + "Chan, K.", + "Chapleau, B.", + "Chapman, J. D.", + "Chapman, J. W.", + "Chareyre, E.", + "Charlton, D. G.", + "Chavda, V.", + "Cheatham, S.", + "Chekanov, S.", + "Chekulaev, S. V.", + "Chelkov, G. A.", + "Chelstowska, M. A.", + "Chen, C.", + "Chen, H.", + "Chen, L.", + "Chen, S.", + "Chen, T.", + "Chen, X.", + "Cheng, S.", + "Cheplakov, A.", + "Chepurnov, V. F.", + "Cherkaoui El Moursli, R.", + "Chernyatin, V.", + "Cheu, E.", + "Cheung, S. L.", + "Chevalier, L.", + "Chevallier, F.", + "Chiefari, G.", + "Chikovani, L.", + "Childers, J. T.", + "Chilingarov, A.", + "Chiodini, G.", + "Chizhov, M. V.", + "Choudalakis, G.", + "Chouridou, S.", + "Christidi, I. A.", + "Christov, A.", + "Chromek-Burckhart, D.", + "Chu, M. L.", + "Chudoba, J.", + "Ciapetti, G.", + "Ciba, K.", + "Ciftci, A. K.", + "Ciftci, R.", + "Cinca, D.", + "Cindro, V.", + "Ciobotaru, M. D.", + "Ciocca, C.", + "Ciocio, A.", + "Cirilli, M.", + "Ciubancan, M.", + "Clark, A.", + "Clark, P. J.", + "Cleland, W.", + "Clemens, J. C.", + "Clement, B.", + "Clement, C.", + "Clifft, R. W.", + "Coadou, Y.", + "Cobal, M.", + "Coccaro, A.", + "Cochran, J.", + "Coe, P.", + "Cogan, J. G.", + "Coggeshall, J.", + "Cogneras, E.", + "Cojocaru, C. D.", + "Colas, J.", + "Colijn, A. P.", + "Collard, C.", + "Collins, N. J.", + "Collins-Tooth, C.", + "Collot, J.", + "Colon, G.", + "Coluccia, R.", + "Comune, G.", + "Conde Muiño, P.", + "Coniavitis, E.", + "Conidi, M. C.", + "Consonni, M.", + "Constantinescu, S.", + "Conta, C.", + "Conventi, F.", + "Cook, J.", + "Cooke, M.", + "Cooper, B. D.", + "Cooper-Sarkar, A. M.", + "Cooper-Smith, N. J.", + "Copic, K.", + "Cornelissen, T.", + "Corradi, M.", + "Corriveau, F.", + "Cortes-Gonzalez, A.", + "Cortiana, G.", + "Costa, G.", + "Costa, M. J.", + "Costanzo, D.", + "Costin, T.", + "Côté, D.", + "Coura Torres, R.", + "Courneyea, L.", + "Cowan, G.", + "Cowden, C.", + "Cox, B. E.", + "Cranmer, K.", + "Crescioli, F.", + "Cristinziani, M.", + "Crosetti, G.", + "Crupi, R.", + "Crépé-Renaudin, S.", + "Cuenca Almenar, C.", + "Cuhadar Donszelmann, T.", + "Cuneo, S.", + "Curatolo, M.", + "Curtis, C. J.", + "Cwetanski, P.", + "Czirr, H.", + "Czyczula, Z.", + "D'Auria, S.", + "D'Onofrio, M.", + "D'Orazio, A.", + "Da Rocha Gesualdi Mello, A.", + "Da Silva, P. V. M.", + "Da Via, C.", + "Dabrowski, W.", + "Dahlhoff, A.", + "Dai, T.", + "Dallapiccola, C.", + "Dallison, S. J.", + "Dam, M.", + "Dameri, M.", + "Damiani, D. S.", + "Danielsson, H. O.", + "Dankers, R.", + "Dannheim, D.", + "Dao, V.", + "Darbo, G.", + "Darlea, G. L.", + "Daum, C.", + "Dauvergne, J. P.", + "Davey, W.", + "Davidek, T.", + "Davidson, N.", + "Davidson, R.", + "Davies, M.", + "Davison, A. R.", + "Dawe, E.", + "Dawson, I.", + "Dawson, J. W.", + "Daya, R. K.", + "De, K.", + "de Asmundis, R.", + "De Castro, S.", + "De Castro Faria Salgado, P. E.", + "De Cecco, S.", + "de Graat, J.", + "De Groot, N.", + "de Jong, P.", + "De La Taille, C.", + "De la Torre, H.", + "De Lotto, B.", + "De Mora, L.", + "De Nooij, L.", + "De Oliveira Branco, M.", + "De Pedis, D.", + "de Saintignon, P.", + "De Salvo, A.", + "De Sanctis, U.", + "De Santo, A.", + "De Vivie De Regie, J. B.", + "Dean, S.", + "Dedovich, D. V.", + "Degenhardt, J.", + "Dehchar, M.", + "Deile, M.", + "Del Papa, C.", + "Del Peso, J.", + "Del Prete, T.", + "Dell'Acqua, A.", + "Dell'Asta, L.", + "Della Pietra, M.", + "della Volpe, D.", + "Delmastro, M.", + "Delpierre, P.", + "Delruelle, N.", + "Delsart, P. A.", + "Deluca, C.", + "Demers, S.", + "Demichev, M.", + "Demirkoz, B.", + "Deng, J.", + "Denisov, S. P.", + "Derendarz, D.", + "Derkaoui, J. E.", + "Derue, F.", + "Dervan, P.", + "Desch, K.", + "Devetak, E.", + "Deviveiros, P. O.", + "Dewhurst, A.", + "DeWilde, B.", + "Dhaliwal, S.", + "Dhullipudi, R.", + "Di Ciaccio, A.", + "Di Ciaccio, L.", + "Di Girolamo, A.", + "Di Girolamo, B.", + "Di Luise, S.", + "Di Mattia, A.", + "Di Micco, B.", + "Di Nardo, R.", + "Di Simone, A.", + "Di Sipio, R.", + "Diaz, M. A.", + "Diblen, F.", + "Diehl, E. B.", + "Dietl, H.", + "Dietrich, J.", + "Dietzsch, T. A.", + "Diglio, S.", + "Dindar Yagci, K.", + "Dingfelder, J.", + "Dionisi, C.", + "Dita, P.", + "Dita, S.", + "Dittus, F.", + "Djama, F.", + "Djilkibaev, R.", + "Djobava, T.", + "do Vale, M. A. B.", + "Do Valle Wemans, A.", + "Doan, T. K. O.", + "Dobbs, M.", + "Dobinson, R.", + "Dobos, D.", + "Dobson, E.", + "Dobson, M.", + "Dodd, J.", + "Dogan, O. B.", + "Doglioni, C.", + "Doherty, T.", + "Doi, Y.", + "Dolejsi, J.", + "Dolenc, I.", + "Dolezal, Z.", + "Dolgoshein, B. A.", + "Dohmae, T.", + "Donadelli, M.", + "Donega, M.", + "Donini, J.", + "Dopke, J.", + "Doria, A.", + "Dos Anjos, A.", + "Dosil, M.", + "Dotti, A.", + "Dova, M. T.", + "Dowell, J. D.", + "Doxiadis, A. D.", + "Doyle, A. T.", + "Drasal, Z.", + "Drees, J.", + "Dressnandt, N.", + "Drevermann, H.", + "Driouichi, C.", + "Dris, M.", + "Drohan, J. G.", + "Dubbert, J.", + "Dubbs, T.", + "Dube, S.", + "Duchovni, E.", + "Duckeck, G.", + "Dudarev, A.", + "Dudziak, F.", + "Dührssen, M.", + "Duerdoth, I. P.", + "Duflot, L.", + "Dufour, M-A", + "Dunford, M.", + "Duran Yildiz, H.", + "Duxfield, R.", + "Dwuznik, M.", + "Dydak, F.", + "Dzahini, D.", + "Düren, M.", + "Ebenstein, W. L.", + "Ebke, J.", + "Eckert, S.", + "Eckweiler, S.", + "Edmonds, K.", + "Edwards, C. A.", + "Efthymiopoulos, I.", + "Ehrenfeld, W.", + "Ehrich, T.", + "Eifert, T.", + "Eigen, G.", + "Einsweiler, K.", + "Eisenhandler, E.", + "Ekelof, T.", + "El Kacimi, M.", + "Ellert, M.", + "Elles, S.", + "Ellinghaus, F.", + "Ellis, K.", + "Ellis, N.", + "Elmsheuser, J.", + "Elsing, M.", + "Ely, R.", + "Emeliyanov, D.", + "Engelmann, R.", + "Engl, A.", + "Epp, B.", + "Eppig, A.", + "Erdmann, J.", + "Ereditato, A.", + "Eriksson, D.", + "Ernst, J.", + "Ernst, M.", + "Ernwein, J.", + "Errede, D.", + "Errede, S.", + "Ertel, E.", + "Escalier, M.", + "Escobar, C.", + "Espinal Curull, X.", + "Esposito, B.", + "Etienne, F.", + "Etienvre, A. I.", + "Etzion, E.", + "Evangelakou, D.", + "Evans, H.", + "Fabbri, L.", + "Fabre, C.", + "Facius, K.", + "Fakhrutdinov, R. M.", + "Falciano, S.", + "Falou, A. C.", + "Fang, Y.", + "Fanti, M.", + "Farbin, A.", + "Farilla, A.", + "Farley, J.", + "Farooque, T.", + "Farrington, S. M.", + "Farthouat, P.", + "Fasching, D.", + "Fassnacht, P.", + "Fassouliotis, D.", + "Fatholahzadeh, B.", + "Favareto, A.", + "Fayard, L.", + "Fazio, S.", + "Febbraro, R.", + "Federic, P.", + "Fedin, O. L.", + "Fedorko, I.", + "Fedorko, W.", + "Fehling-Kaschek, M.", + "Feligioni, L.", + "Fellmann, D.", + "Felzmann, C. U.", + "Feng, C.", + "Feng, E. J.", + "Fenyuk, A. B.", + "Ferencei, J.", + "Ferland, J.", + "Fernandes, B.", + "Fernando, W.", + "Ferrag, S.", + "Ferrando, J.", + "Ferrara, V.", + "Ferrari, A.", + "Ferrari, P.", + "Ferrari, R.", + "Ferrer, A.", + "Ferrer, M. L.", + "Ferrere, D.", + "Ferretti, C.", + "Ferretto Parodi, A.", + "Fiascaris, M.", + "Fiedler, F.", + "Filipčič, A.", + "Filippas, A.", + "Filthaut, F.", + "Fincke-Keeler, M.", + "Fiolhais, M. C. N.", + "Fiorini, L.", + "Firan, A.", + "Fischer, G.", + "Fischer, P.", + "Fisher, M. J.", + "Fisher, S. M.", + "Flammer, J.", + "Flechl, M.", + "Fleck, I.", + "Fleckner, J.", + "Fleischmann, P.", + "Fleischmann, S.", + "Flick, T.", + "Flores Castillo, L. R.", + "Flowerdew, M. J.", + "Föhlisch, F.", + "Fokitis, M.", + "Fonseca Martin, T.", + "Forbush, D. A.", + "Formica, A.", + "Forti, A.", + "Fortin, D.", + "Foster, J. M.", + "Fournier, D.", + "Foussat, A.", + "Fowler, A. J.", + "Fowler, K.", + "Fox, H.", + "Francavilla, P.", + "Franchino, S.", + "Francis, D.", + "Frank, T.", + "Franklin, M.", + "Franz, S.", + "Fraternali, M.", + "Fratina, S.", + "French, S. T.", + "Froeschl, R.", + "Froidevaux, D.", + "Frost, J. A.", + "Fukunaga, C.", + "Fullana Torregrosa, E.", + "Fuster, J.", + "Gabaldon, C.", + "Gabizon, O.", + "Gadfort, T.", + "Gadomski, S.", + "Gagliardi, G.", + "Gagnon, P.", + "Galea, C.", + "Gallas, E. J.", + "Gallas, M. V.", + "Gallo, V.", + "Gallop, B. J.", + "Gallus, P.", + "Galyaev, E.", + "Gan, K. K.", + "Gao, Y. S.", + "Gapienko, V. A.", + "Gaponenko, A.", + "Garberson, F.", + "Garcia-Sciveres, M.", + "García, C.", + "García Navarro, J. E.", + "Gardner, R. W.", + "Garelli, N.", + "Garitaonandia, H.", + "Garonne, V.", + "Garvey, J.", + "Gatti, C.", + "Gaudio, G.", + "Gaumer, O.", + "Gaur, B.", + "Gauthier, L.", + "Gavrilenko, I. L.", + "Gay, C.", + "Gaycken, G.", + "Gayde, J-C", + "Gazis, E. N.", + "Ge, P.", + "Gee, C. N. P.", + "Geerts, D. A. A.", + "Geich-Gimbel, Ch", + "Gellerstedt, K.", + "Gemme, C.", + "Gemmell, A.", + "Genest, M. H.", + "Gentile, S.", + "George, M.", + "George, S.", + "Gerlach, P.", + "Gershon, A.", + "Geweniger, C.", + "Ghazlane, H.", + "Ghez, P.", + "Ghodbane, N.", + "Giacobbe, B.", + "Giagu, S.", + "Giakoumopoulou, V.", + "Giangiobbe, V.", + "Gianotti, F.", + "Gibbard, B.", + "Gibson, A.", + "Gibson, S. M.", + "Gieraltowski, G. F.", + "Gilbert, L. M.", + "Gilchriese, M.", + "Gilewsky, V.", + "Gillberg, D.", + "Gillman, A. R.", + "Gingrich, D. M.", + "Ginzburg, J.", + "Giokaris, N.", + "Giordano, R.", + "Giorgi, F. M.", + "Giovannini, P.", + "Giraud, P. F.", + "Giugni, D.", + "Giusti, P.", + "Gjelsten, B. K.", + "Gladilin, L. K.", + "Glasman, C.", + "Glatzer, J.", + "Glazov, A.", + "Glitza, K. W.", + "Glonti, G. L.", + "Godfrey, J.", + "Godlewski, J.", + "Goebel, M.", + "Göpfert, T.", + "Goeringer, C.", + "Gössling, C.", + "Göttfert, T.", + "Goldfarb, S.", + "Goldin, D.", + "Golling, T.", + "Golovnia, S. N.", + "Gomes, A.", + "Gomez Fajardo, L. S.", + "Gonçalo, R.", + "Goncalves Pinto Firmino Da Costa, J.", + "Gonella, L.", + "Gonidec, A.", + "Gonzalez, S.", + "González de la Hoz, S.", + "Gonzalez Silva, M. L.", + "Gonzalez-Sevilla, S.", + "Goodson, J. J.", + "Goossens, L.", + "Gorbounov, P. A.", + "Gordon, H. A.", + "Gorelov, I.", + "Gorfine, G.", + "Gorini, B.", + "Gorini, E.", + "Gorišek, A.", + "Gornicki, E.", + "Gorokhov, S. A.", + "Goryachev, V. N.", + "Gosdzik, B.", + "Gosselink, M.", + "Gostkin, M. I.", + "Gouanère, M.", + "Gough Eschrich, I.", + "Gouighri, M.", + "Goujdami, D.", + "Goulette, M. P.", + "Goussiou, A. G.", + "Goy, C.", + "Grabowska-Bold, I.", + "Grabski, V.", + "Grafström, P.", + "Grah, C.", + "Grahn, K-J", + "Grancagnolo, F.", + "Grancagnolo, S.", + "Grassi, V.", + "Gratchev, V.", + "Grau, N.", + "Gray, H. M.", + "Gray, J. A.", + "Graziani, E.", + "Grebenyuk, O. G.", + "Greenfield, D.", + "Greenshaw, T.", + "Greenwood, Z. D.", + "Gregor, I. M.", + "Grenier, P.", + "Griesmayer, E.", + "Griffiths, J.", + "Grigalashvili, N.", + "Grillo, A. A.", + "Grinstein, S.", + "Gris, P. L. Y.", + "Grishkevich, Y. V.", + "Grivaz, J-F", + "Grognuz, J.", + "Groh, M.", + "Gross, E.", + "Grosse-Knetter, J.", + "Groth-Jensen, J.", + "Gruwe, M.", + "Grybel, K.", + "Guarino, V. J.", + "Guest, D.", + "Guicheney, C.", + "Guida, A.", + "Guillemin, T.", + "Guindon, S.", + "Guler, H.", + "Gunther, J.", + "Guo, B.", + "Guo, J.", + "Gupta, A.", + "Gusakov, Y.", + "Gushchin, V. N.", + "Gutierrez, A.", + "Gutierrez, P.", + "Guttman, N.", + "Gutzwiller, O.", + "Guyot, C.", + "Gwenlan, C.", + "Gwilliam, C. B.", + "Haas, A.", + "Haas, S.", + "Haber, C.", + "Hackenburg, R.", + "Hadavand, H. K.", + "Hadley, D. R.", + "Haefner, P.", + "Hahn, F.", + "Haider, S.", + "Hajduk, Z.", + "Hakobyan, H.", + "Haller, J.", + "Hamacher, K.", + "Hamal, P.", + "Hamilton, A.", + "Hamilton, S.", + "Han, H.", + "Han, L.", + "Hanagaki, K.", + "Hance, M.", + "Handel, C.", + "Hanke, P.", + "Hansen, C. J.", + "Hansen, J. R.", + "Hansen, J. B.", + "Hansen, J. D.", + "Hansen, P. H.", + "Hansson, P.", + "Hara, K.", + "Hare, G. A.", + "Harenberg, T.", + "Harper, D.", + "Harrington, R. D.", + "Harris, O. M.", + "Harrison, K.", + "Hartert, J.", + "Hartjes, F.", + "Haruyama, T.", + "Harvey, A.", + "Hasegawa, S.", + "Hasegawa, Y.", + "Hassani, S.", + "Hatch, M.", + "Hauff, D.", + "Haug, S.", + "Hauschild, M.", + "Hauser, R.", + "Havranek, M.", + "Hawes, B. M.", + "Hawkes, C. M.", + "Hawkings, R. J.", + "Hawkins, D.", + "Hayakawa, T.", + "Hayden, D.", + "Hayward, H. S.", + "Haywood, S. J.", + "Hazen, E.", + "He, M.", + "Head, S. J.", + "Hedberg, V.", + "Heelan, L.", + "Heim, S.", + "Heinemann, B.", + "Heisterkamp, S.", + "Helary, L.", + "Heldmann, M.", + "Heller, M.", + "Hellman, S.", + "Helsens, C.", + "Henderson, R. C. W.", + "Henke, M.", + "Henrichs, A.", + "Henriques Correia, A. M.", + "Henrot-Versille, S.", + "Henry-Couannier, F.", + "Hensel, C.", + "Henß, T.", + "Hernández Jiménez, Y.", + "Herrberg, R.", + "Hershenhorn, A. D.", + "Herten, G.", + "Hertenberger, R.", + "Hervas, L.", + "Hessey, N. P.", + "Hidvegi, A.", + "Higón-Rodriguez, E.", + "Hill, D.", + "Hill, J. C.", + "Hill, N.", + "Hiller, K. H.", + "Hillert, S.", + "Hillier, S. J.", + "Hinchliffe, I.", + "Hines, E.", + "Hirose, M.", + "Hirsch, F.", + "Hirschbuehl, D.", + "Hobbs, J.", + "Hod, N.", + "Hodgkinson, M. C.", + "Hodgson, P.", + "Hoecker, A.", + "Hoeferkamp, M. R.", + "Hoffman, J.", + "Hoffmann, D.", + "Hohlfeld, M.", + "Holder, M.", + "Holmes, A.", + "Holmgren, S. O.", + "Holy, T.", + "Holzbauer, J. L.", + "Homma, Y.", + "Hooft van Huysduynen, L.", + "Horazdovsky, T.", + "Horn, C.", + "Horner, S.", + "Horton, K.", + "Hostachy, J-Y", + "Hott, T.", + "Hou, S.", + "Houlden, M. A.", + "Hoummada, A.", + "Howarth, J.", + "Howell, D. F.", + "Hristova, I.", + "Hrivnac, J.", + "Hruska, I.", + "Hryn'ova, T.", + "Hsu, P. J.", + "Hsu, S-C", + "Huang, G. S.", + "Hubacek, Z.", + "Hubaut, F.", + "Huegging, F.", + "Huffman, T. B.", + "Hughes, E. W.", + "Hughes, G.", + "Hughes-Jones, R. E.", + "Huhtinen, M.", + "Hurst, P.", + "Hurwitz, M.", + "Husemann, U.", + "Huseynov, N.", + "Huston, J.", + "Huth, J.", + "Iacobucci, G.", + "Iakovidis, G.", + "Ibbotson, M.", + "Ibragimov, I.", + "Ichimiya, R.", + "Iconomidou-Fayard, L.", + "Idarraga, J.", + "Idzik, M.", + "Iengo, P.", + "Igonkina, O.", + "Ikegami, Y.", + "Ikeno, M.", + "Ilchenko, Y.", + "Iliadis, D.", + "Imbault, D.", + "Imhaeuser, M.", + "Imori, M.", + "Ince, T.", + "Inigo-Golfin, J.", + "Ioannou, P.", + "Iodice, M.", + "Ionescu, G.", + "Irles Quiles, A.", + "Ishii, K.", + "Ishikawa, A.", + "Ishino, M.", + "Ishmukhametov, R.", + "Issever, C.", + "Istin, S.", + "Itoh, Y.", + "Ivashin, A. V.", + "Iwanski, W.", + "Iwasaki, H.", + "Izen, J. M.", + "Izzo, V.", + "Jackson, B.", + "Jackson, J. N.", + "Jackson, P.", + "Jaekel, M. R.", + "Jain, V.", + "Jakobs, K.", + "Jakobsen, S.", + "Jakubek, J.", + "Jana, D. K.", + "Jankowski, E.", + "Jansen, E.", + "Jantsch, A.", + "Janus, M.", + "Jarlskog, G.", + "Jeanty, L.", + "Jelen, K.", + "Jen-La Plante, I.", + "Jenni, P.", + "Jeremie, A.", + "Jež, P.", + "Jézéquel, S.", + "Jha, M. K.", + "Ji, H.", + "Ji, W.", + "Jia, J.", + "Jiang, Y.", + "Jimenez Belenguer, M.", + "Jin, G.", + "Jin, S.", + "Jinnouchi, O.", + "Joergensen, M. D.", + "Joffe, D.", + "Johansen, L. G.", + "Johansen, M.", + "Johansson, K. E.", + "Johansson, P.", + "Johnert, S.", + "Johns, K. A.", + "Jon-And, K.", + "Jones, G.", + "Jones, R. W. L.", + "Jones, T. W.", + "Jones, T. J.", + "Jonsson, O.", + "Joram, C.", + "Jorge, P. M.", + "Joseph, J.", + "Ju, X.", + "Juranek, V.", + "Jussel, P.", + "Kabachenko, V. V.", + "Kabana, S.", + "Kaci, M.", + "Kaczmarska, A.", + "Kadlecik, P.", + "Kado, M.", + "Kagan, H.", + "Kagan, M.", + "Kaiser, S.", + "Kajomovitz, E.", + "Kalinin, S.", + "Kalinovskaya, L. V.", + "Kama, S.", + "Kanaya, N.", + "Kaneda, M.", + "Kanno, T.", + "Kantserov, V. A.", + "Kanzaki, J.", + "Kaplan, B.", + "Kapliy, A.", + "Kaplon, J.", + "Kar, D.", + "Karagoz, M.", + "Karnevskiy, M.", + "Karr, K.", + "Kartvelishvili, V.", + "Karyukhin, A. N.", + "Kashif, L.", + "Kasmi, A.", + "Kass, R. D.", + "Kastanas, A.", + "Kataoka, M.", + "Kataoka, Y.", + "Katsoufis, E.", + "Katzy, J.", + "Kaushik, V.", + "Kawagoe, K.", + "Kawamoto, T.", + "Kawamura, G.", + "Kayl, M. S.", + "Kazanin, V. A.", + "Kazarinov, M. Y.", + "Kazi, S. I.", + "Keates, J. R.", + "Keeler, R.", + "Kehoe, R.", + "Keil, M.", + "Kekelidze, G. D.", + "Kelly, M.", + "Kennedy, J.", + "Kenney, C. J.", + "Kenyon, M.", + "Kepka, O.", + "Kerschen, N.", + "Kerševan, B. P.", + "Kersten, S.", + "Kessoku, K.", + "Ketterer, C.", + "Khakzad, M.", + "Khalil-zada, F.", + "Khandanyan, H.", + "Khanov, A.", + "Kharchenko, D.", + "Khodinov, A.", + "Kholodenko, A. G.", + "Khomich, A.", + "Khoo, T. J.", + "Khoriauli, G.", + "Khovanskiy, N.", + "Khovanskiy, V.", + "Khramov, E.", + "Khubua, J.", + "Kilvington, G.", + "Kim, H.", + "Kim, M. S.", + "Kim, P. C.", + "Kim, S. H.", + "Kimura, N.", + "Kind, O.", + "King, B. T.", + "King, M.", + "King, R. S. B.", + "Kirk, J.", + "Kirsch, G. P.", + "Kirsch, L. E.", + "Kiryunin, A. E.", + "Kisielewska, D.", + "Kittelmann, T.", + "Kiver, A. M.", + "Kiyamura, H.", + "Kladiva, E.", + "Klaiber-Lodewigs, J.", + "Klein, M.", + "Klein, U.", + "Kleinknecht, K.", + "Klemetti, M.", + "Klier, A.", + "Klimentov, A.", + "Klingenberg, R.", + "Klinkby, E. B.", + "Klioutchnikova, T.", + "Klok, P. F.", + "Klous, S.", + "Kluge, E. -E", + "Kluge, T.", + "Kluit, P.", + "Kluth, S.", + "Kneringer, E.", + "Knobloch, J.", + "Knoops, E. B. F. G.", + "Knue, A.", + "Ko, B. R.", + "Kobayashi, T.", + "Kobel, M.", + "Koblitz, B.", + "Kocian, M.", + "Kocnar, A.", + "Kodys, P.", + "Köneke, K.", + "König, A. C.", + "Koenig, S.", + "König, S.", + "Köpke, L.", + "Koetsveld, F.", + "Koevesarki, P.", + "Koffas, T.", + "Koffeman, E.", + "Kohn, F.", + "Kohout, Z.", + "Kohriki, T.", + "Koi, T.", + "Kokott, T.", + "Kolachev, G. M.", + "Kolanoski, H.", + "Kolesnikov, V.", + "Koletsou, I.", + "Koll, J.", + "Kollar, D.", + "Kollefrath, M.", + "Kolya, S. D.", + "Komar, A. A.", + "Komaragiri, J. R.", + "Kondo, T.", + "Kono, T.", + "Kononov, A. I.", + "Konoplich, R.", + "Konstantinidis, N.", + "Kootz, A.", + "Koperny, S.", + "Kopikov, S. V.", + "Korcyl, K.", + "Kordas, K.", + "Koreshev, V.", + "Korn, A.", + "Korol, A.", + "Korolkov, I.", + "Korolkova, E. V.", + "Korotkov, V. A.", + "Kortner, O.", + "Kortner, S.", + "Kostyukhin, V. V.", + "Kotamäki, M. J.", + "Kotov, S.", + "Kotov, V. M.", + "Kourkoumelis, C.", + "Kouskoura, V.", + "Koutsman, A.", + "Kowalewski, R.", + "Kowalski, T. Z.", + "Kozanecki, W.", + "Kozhin, A. S.", + "Kral, V.", + "Kramarenko, V. A.", + "Kramberger, G.", + "Krasel, O.", + "Krasny, M. W.", + "Krasznahorkay, A.", + "Kraus, J.", + "Kreisel, A.", + "Krejci, F.", + "Kretzschmar, J.", + "Krieger, N.", + "Krieger, P.", + "Kroeninger, K.", + "Kroha, H.", + "Kroll, J.", + "Kroseberg, J.", + "Krstic, J.", + "Kruchonak, U.", + "Krüger, H.", + "Krumshteyn, Z. V.", + "Kruth, A.", + "Kubota, T.", + "Kuehn, S.", + "Kugel, A.", + "Kuhl, T.", + "Kuhn, D.", + "Kukhtin, V.", + "Kulchitsky, Y.", + "Kuleshov, S.", + "Kummer, C.", + "Kuna, M.", + "Kundu, N.", + "Kunkle, J.", + "Kupco, A.", + "Kurashige, H.", + "Kurata, M.", + "Kurochkin, Y. A.", + "Kus, V.", + "Kuykendall, W.", + "Kuze, M.", + "Kuzhir, P.", + "Kvasnicka, O.", + "Kvita, J.", + "Kwee, R.", + "La Rosa, A.", + "La Rotonda, L.", + "Labarga, L.", + "Labbe, J.", + "Lablak, S.", + "Lacasta, C.", + "Lacava, F.", + "Lacker, H.", + "Lacour, D.", + "Lacuesta, V. R.", + "Ladygin, E.", + "Lafaye, R.", + "Laforge, B.", + "Lagouri, T.", + "Lai, S.", + "Laisne, E.", + "Lamanna, M.", + "Lampen, C. L.", + "Lampl, W.", + "Lancon, E.", + "Landgraf, U.", + "Landon, M. P. J.", + "Landsman, H.", + "Lane, J. L.", + "Lange, C.", + "Lankford, A. J.", + "Lanni, F.", + "Lantzsch, K.", + "Lapin, V. V.", + "Laplace, S.", + "Lapoire, C.", + "Laporte, J. F.", + "Lari, T.", + "Larionov, A. V.", + "Larner, A.", + "Lasseur, C.", + "Lassnig, M.", + "Lau, W.", + "Laurelli, P.", + "Lavorato, A.", + "Lavrijsen, W.", + "Laycock, P.", + "Lazarev, A. B.", + "Lazzaro, A.", + "Le Dortz, O.", + "Le Guirriec, E.", + "Le Maner, C.", + "Le Menedeu, E.", + "Leahu, M.", + "Lebedev, A.", + "Lebel, C.", + "LeCompte, T.", + "Ledroit-Guillon, F.", + "Lee, H.", + "Lee, J. S. H.", + "Lee, S. C.", + "Lee, L.", + "Lefebvre, M.", + "Legendre, M.", + "Leger, A.", + "LeGeyt, B. C.", + "Legger, F.", + "Leggett, C.", + "Lehmacher, M.", + "Lehmann Miotto, G.", + "Lei, X.", + "Leite, M. A. L.", + "Leitner, R.", + "Lellouch, D.", + "Lellouch, J.", + "Leltchouk, M.", + "Lendermann, V.", + "Leney, K. J. C.", + "Lenz, T.", + "Lenzen, G.", + "Lenzi, B.", + "Leonhardt, K.", + "Leontsinis, S.", + "Leroy, C.", + "Lessard, J-R", + "Lesser, J.", + "Lester, C. G.", + "Leung Fook Cheong, A.", + "Levêque, J.", + "Levin, D.", + "Levinson, L. J.", + "Levitski, M. S.", + "Lewandowska, M.", + "Lewis, G. H.", + "Leyton, M.", + "Li, B.", + "Li, H.", + "Li, S.", + "Li, X.", + "Liang, Z.", + "Liang, Z.", + "Liberti, B.", + "Lichard, P.", + "Lichtnecker, M.", + "Lie, K.", + "Liebig, W.", + "Lifshitz, R.", + "Lilley, J. N.", + "Limbach, C.", + "Limosani, A.", + "Limper, M.", + "Lin, S. C.", + "Linde, F.", + "Linnemann, J. T.", + "Lipeles, E.", + "Lipinsky, L.", + "Lipniacka, A.", + "Liss, T. M.", + "Lissauer, D.", + "Lister, A.", + "Litke, A. M.", + "Liu, C.", + "Liu, D.", + "Liu, H.", + "Liu, J. B.", + "Liu, M.", + "Liu, S.", + "Liu, Y.", + "Livan, M.", + "Livermore, S. S. A.", + "Lleres, A.", + "Lloyd, S. L.", + "Lobodzinska, E.", + "Loch, P.", + "Lockman, W. S.", + "Lockwitz, S.", + "Loddenkoetter, T.", + "Loebinger, F. K.", + "Loginov, A.", + "Loh, C. W.", + "Lohse, T.", + "Lohwasser, K.", + "Lokajicek, M.", + "Loken, J.", + "Lombardo, V. P.", + "Long, R. E.", + "Lopes, L.", + "Lopez Mateos, D.", + "Losada, M.", + "Loscutoff, P.", + "Lo Sterzo, F.", + "Losty, M. J.", + "Lou, X.", + "Lounis, A.", + "Loureiro, K. F.", + "Love, J.", + "Love, P. A.", + "Lowe, A. J.", + "Lu, F.", + "Lu, J.", + "Lu, L.", + "Lubatti, H. J.", + "Luci, C.", + "Lucotte, A.", + "Ludwig, A.", + "Ludwig, D.", + "Ludwig, I.", + "Ludwig, J.", + "Luehring, F.", + "Luijckx, G.", + "Lumb, D.", + "Luminari, L.", + "Lund, E.", + "Lund-Jensen, B.", + "Lundberg, B.", + "Lundberg, J.", + "Lundquist, J.", + "Lungwitz, M.", + "Lupi, A.", + "Lutz, G.", + "Lynn, D.", + "Lys, J.", + "Lytken, E.", + "Ma, H.", + "Ma, L. L.", + "Macana Goia, J. A.", + "Maccarrone, G.", + "Macchiolo, A.", + "Maček, B.", + "Machado Miguens, J.", + "Macina, D.", + "Mackeprang, R.", + "Madaras, R. J.", + "Mader, W. F.", + "Maenner, R.", + "Maeno, T.", + "Mättig, P.", + "Mättig, S.", + "Magalhaes Martins, P. J.", + "Magnoni, L.", + "Magradze, E.", + "Magrath, C. A.", + "Mahalalel, Y.", + "Mahboubi, K.", + "Mahout, G.", + "Maiani, C.", + "Maidantchik, C.", + "Maio, A.", + "Majewski, S.", + "Makida, Y.", + "Makovec, N.", + "Mal, P.", + "Malecki, Pa", + "Malecki, P.", + "Maleev, V. P.", + "Malek, F.", + "Mallik, U.", + "Malon, D.", + "Maltezos, S.", + "Malyshev, V.", + "Malyukov, S.", + "Mameghani, R.", + "Mamuzic, J.", + "Manabe, A.", + "Mandelli, L.", + "Mandić, I.", + "Mandrysch, R.", + "Maneira, J.", + "Mangeard, P. S.", + "Manjavidze, I. D.", + "Mann, A.", + "Manning, P. M.", + "Manousakis-Katsikakis, A.", + "Mansoulie, B.", + "Manz, A.", + "Mapelli, A.", + "Mapelli, L.", + "March, L.", + "Marchand, J. F.", + "Marchese, F.", + "Marchesotti, M.", + "Marchiori, G.", + "Marcisovsky, M.", + "Marin, A.", + "Marino, C. P.", + "Marroquim, F.", + "Marshall, R.", + "Marshall, Z.", + "Martens, F. K.", + "Marti-Garcia, S.", + "Martin, A. J.", + "Martin, B.", + "Martin, B.", + "Martin, F. F.", + "Martin, J. P.", + "Martin, Ph", + "Martin, T. A.", + "Martin dit Latour, B.", + "Martinez, M.", + "Martinez Outschoorn, V.", + "Martyniuk, A. C.", + "Marx, M.", + "Marzano, F.", + "Marzin, A.", + "Masetti, L.", + "Mashimo, T.", + "Mashinistov, R.", + "Masik, J.", + "Maslennikov, A. L.", + "Maß, M.", + "Massa, I.", + "Massaro, G.", + "Massol, N.", + "Mastroberardino, A.", + "Masubuchi, T.", + "Mathes, M.", + "Matricon, P.", + "Matsumoto, H.", + "Matsunaga, H.", + "Matsushita, T.", + "Mattravers, C.", + "Maugain, J. M.", + "Maxfield, S. J.", + "Maximov, D. A.", + "May, E. N.", + "Mayne, A.", + "Mazini, R.", + "Mazur, M.", + "Mazzanti, M.", + "Mazzoni, E.", + "Mc Kee, S. P.", + "McCarn, A.", + "McCarthy, R. L.", + "McCarthy, T. G.", + "McCubbin, N. A.", + "McFarlane, K. W.", + "Mcfayden, J. A.", + "McGlone, H.", + "Mchedlidze, G.", + "McLaren, R. A.", + "Mclaughlan, T.", + "McMahon, S. J.", + "McPherson, R. A.", + "Meade, A.", + "Mechnich, J.", + "Mechtel, M.", + "Medinnis, M.", + "Meera-Lebbai, R.", + "Meguro, T.", + "Mehdiyev, R.", + "Mehlhase, S.", + "Mehta, A.", + "Meier, K.", + "Meinhardt, J.", + "Meirose, B.", + "Melachrinos, C.", + "Mellado Garcia, B. R.", + "Mendoza Navas, L.", + "Meng, Z.", + "Mengarelli, A.", + "Menke, S.", + "Menot, C.", + "Meoni, E.", + "Mercurio, K. M.", + "Mermod, P.", + "Merola, L.", + "Meroni, C.", + "Merritt, F. S.", + "Messina, A.", + "Metcalfe, J.", + "Mete, A. S.", + "Meuser, S.", + "Meyer, C.", + "Meyer, J-P", + "Meyer, J.", + "Meyer, J.", + "Meyer, T. C.", + "Meyer, W. T.", + "Miao, J.", + "Michal, S.", + "Micu, L.", + "Middleton, R. P.", + "Miele, P.", + "Migas, S.", + "Mijović, L.", + "Mikenberg, G.", + "Mikestikova, M.", + "Mikulec, B.", + "Mikuž, M.", + "Miller, D. W.", + "Miller, R. J.", + "Mills, W. J.", + "Mills, C.", + "Milov, A.", + "Milstead, D. A.", + "Milstein, D.", + "Minaenko, A. A.", + "Miñano, M.", + "Minashvili, I. A.", + "Mincer, A. I.", + "Mindur, B.", + "Mineev, M.", + "Ming, Y.", + "Mir, L. M.", + "Mirabelli, G.", + "Miralles Verge, L.", + "Misiejuk, A.", + "Mitrevski, J.", + "Mitrofanov, G. Y.", + "Mitsou, V. A.", + "Mitsui, S.", + "Miyagawa, P. S.", + "Miyazaki, K.", + "Mjörnmark, J. U.", + "Moa, T.", + "Mockett, P.", + "Moed, S.", + "Moeller, V.", + "Mönig, K.", + "Möser, N.", + "Mohapatra, S.", + "Mohn, B.", + "Mohr, W.", + "Mohrdieck-Möck, S.", + "Moisseev, A. M.", + "Moles-Valls, R.", + "Molina-Perez, J.", + "Moneta, L.", + "Monk, J.", + "Monnier, E.", + "Montesano, S.", + "Monticelli, F.", + "Monzani, S.", + "Moore, R. W.", + "Moorhead, G. F.", + "Mora Herrera, C.", + "Moraes, A.", + "Morais, A.", + "Morange, N.", + "Morello, G.", + "Moreno, D.", + "Moreno Llácer, M.", + "Morettini, P.", + "Morii, M.", + "Morin, J.", + "Morita, Y.", + "Morley, A. K.", + "Mornacchi, G.", + "Morone, M-C", + "Morozov, S. V.", + "Morris, J. D.", + "Moser, H. G.", + "Mosidze, M.", + "Moss, J.", + "Mount, R.", + "Mountricha, E.", + "Mouraviev, S. V.", + "Moyse, E. J. W.", + "Mudrinic, M.", + "Mueller, F.", + "Mueller, J.", + "Mueller, K.", + "Müller, T. A.", + "Muenstermann, D.", + "Muijs, A.", + "Muir, A.", + "Munwes, Y.", + "Murakami, K.", + "Murray, W. J.", + "Mussche, I.", + "Musto, E.", + "Myagkov, A. G.", + "Myska, M.", + "Nadal, J.", + "Nagai, K.", + "Nagano, K.", + "Nagasaka, Y.", + "Nairz, A. M.", + "Nakahama, Y.", + "Nakamura, K.", + "Nakano, I.", + "Nanava, G.", + "Napier, A.", + "Nash, M.", + "Nation, N. R.", + "Nattermann, T.", + "Naumann, T.", + "Navarro, G.", + "Neal, H. A.", + "Nebot, E.", + "Nechaeva, P. Yu", + "Negri, A.", + "Negri, G.", + "Nektarijevic, S.", + "Nelson, A.", + "Nelson, S.", + "Nelson, T. K.", + "Nemecek, S.", + "Nemethy, P.", + "Nepomuceno, A. A.", + "Nessi, M.", + "Nesterov, S. Y.", + "Neubauer, M. S.", + "Neusiedl, A.", + "Neves, R. M.", + "Nevski, P.", + "Newman, P. R.", + "Nickerson, R. B.", + "Nicolaidou, R.", + "Nicolas, L.", + "Nicquevert, B.", + "Niedercorn, F.", + "Nielsen, J.", + "Niinikoski, T.", + "Nikiforov, A.", + "Nikolaenko, V.", + "Nikolaev, K.", + "Nikolic-Audit, I.", + "Nikolopoulos, K.", + "Nilsen, H.", + "Nilsson, P.", + "Ninomiya, Y.", + "Nisati, A.", + "Nishiyama, T.", + "Nisius, R.", + "Nodulman, L.", + "Nomachi, M.", + "Nomidis, I.", + "Nomoto, H.", + "Nordberg, M.", + "Nordkvist, B.", + "Norton, P. R.", + "Novakova, J.", + "Nozaki, M.", + "Nožička, M.", + "Nozka, L.", + "Nugent, I. M.", + "Nuncio-Quiroz, A-E", + "Nunes Hanninger, G.", + "Nunnemann, T.", + "Nurse, E.", + "Nyman, T.", + "O'Brien, B. J.", + "O'Neale, S. W.", + "O'Neil, D. C.", + "O'Shea, V.", + "Oakham, F. G.", + "Oberlack, H.", + "Ocariz, J.", + "Ochi, A.", + "Oda, S.", + "Odaka, S.", + "Odier, J.", + "Ogren, H.", + "Oh, A.", + "Oh, S. H.", + "Ohm, C. C.", + "Ohshima, T.", + "Ohshita, H.", + "Ohska, T. K.", + "Ohsugi, T.", + "Okada, S.", + "Okawa, H.", + "Okumura, Y.", + "Okuyama, T.", + "Olcese, M.", + "Olchevski, A. G.", + "Oliveira, M.", + "Oliveira Damazio, D.", + "Oliver Garcia, E.", + "Olivito, D.", + "Olszewski, A.", + "Olszowska, J.", + "Omachi, C.", + "Onofre, A.", + "Onyisi, P. U. E.", + "Oram, C. J.", + "Ordonez, G.", + "Oreglia, M. J.", + "Orellana, F.", + "Oren, Y.", + "Orestano, D.", + "Orlov, I.", + "Oropeza Barrera, C.", + "Orr, R. S.", + "Ortega, E. O.", + "Osculati, B.", + "Ospanov, R.", + "Osuna, C.", + "Otero y Garzon, G.", + "Ottersbach, J. P.", + "Ouchrif, M.", + "Ould-Saada, F.", + "Ouraou, A.", + "Ouyang, Q." + ], + "availability" : "", + "contributing_org" : "ATLAS Collaboration", + "country_publication" : "United States", + "description" : "A search for new interactions and resonances produced in LHC proton-proton (pp) collisions at a centre-of-mass energy $\\sqrt{s}$= 7 TeV has been performed with the ATLAS detector. Using a data set with an integrated luminosity of 36 pb-1 dijet mass and angular distributions have been measured up to dijet masses of ~3.5 TeV and found to be in good agreement with Standard Model predictions. This analysis sets limits at 95% C.L. on various models for new physics: an excited quark is excluded with mass between 0.60 and 2.64 TeV, an axigluon hypothesis is excluded for axigluon masses between 0.60 and 2.10 TeV and Randall-Meade quantum black holes are excluded in models with six extra space-time dimensions for quantum gravity scales between 0.75 and 3.67 TeV. Production cross section limits as a function of dijet mass are set using a simplified Gaussian signal model to facilitate comparisons with other hypotheses. In conclusion, analysis of the dijet angular distribution using a novel technique 18 simultaneously employing the dijet mass excludes quark contact interactions with a compositeness scale ${\\Lambda}$ below 9.5 TeV.", + "doe_contract_number" : "AC02-76SF00515", + "doi" : "10.1088/1367-2630/13/5/053044", + "entry_date" : "2019-03-29T00:00:00Z", + "format" : "Medium: ED; Size: Article No. 053044", + "journal_issn" : "ISSN 1367-2630", + "journal_issue" : "5", + "journal_name" : "New Journal of Physics", + "journal_volume" : "13", + "language" : "English", + "links" : [ + { + "href" : "https://www.osti.gov/biblio/1502988", + "rel" : "citation" + }, + { + "href" : "https://www.osti.gov/servlets/purl/1502988", + "rel" : "fulltext" + } + ], + "osti_id" : "1502988", + "other_identifiers" : [ + "Journal ID: ISSN 1367-2630" + ], + "product_type" : "Journal Article", + "publication_date" : "2011-05-24T00:00:00Z", + "publisher" : "IOP Publishing", + "report_number" : "SLAC-PUB-17065", + "research_orgs" : [ + "SLAC National Accelerator Lab. (SLAC), Menlo Park, CA (United States)" + ], + "sponsor_orgs" : [ + "USDOE Office of Science (SC), High Energy Physics (HEP) (SC-25)" + ], + "subjects" : [ + "72 PHYSICS OF ELEMENTARY PARTICLES AND FIELDS", + "71 CLASSICAL AND QUANTUM MECHANICS, GENERAL PHYSICS", + "accelerators", + "baryon-baryon interactions", + "cyclic acceleratiors", + "distribution", + "hadron-hadron interactions", + "interactions", + "nucleon-nucleon interactions", + "particle interactons", + "proton-neutron interactions", + "storage rings", + "synchrotrons" + ], + "title" : "A search for new physics in dijet mass and angular distributions in pp collisions at $\\sqrt{s}$=7 TeV measured with the ATLAS detector" + } +] diff --git a/tests/unit/test_osti_single.py b/tests/unit/test_osti_single.py new file mode 100644 index 00000000..c5340f1d --- /dev/null +++ b/tests/unit/test_osti_single.py @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- +# +# This file is part of hepcrawl. +# Copyright (C) 2016, 2017, 2019 CERN. +# +# hepcrawl is a free software; you can redistribute it and/or modify it +# under the terms of the Revised BSD License; see LICENSE file for +# more details. + +from __future__ import absolute_import, division, print_function, unicode_literals + +import json + +import pytest + +from scrapy.http import TextResponse + +from inspire_schemas.utils import validate +from hepcrawl.spiders import osti_spider +from hepcrawl.testlib.fixtures import ( + fake_response_from_file, +) +from hepcrawl.utils import ParsedItem + + +@pytest.fixture +def parsed_record(): + """Return results generator from the osti spider. All fields, one record. + """ + res = fake_response_from_file('osti/sample_osti_record1.json', + response_type=TextResponse) + parser = osti_spider.OSTIParser(json.loads(res.body)[0]) + return parser + + +def test_record_schema(parsed_record): + """Test record validates against schema.""" + record = ParsedItem(parsed_record.parse(), 'hep').record + assert validate(record, 'hep') is None + + +def test_abstract(parsed_record): + """Test extracting abstract""" + expected = "The scaling variable ν = xy = 2(Eμ/M) sin2(1/2θμ) is useful for the description of deep-inelastic neutrino-nucleon scattering processes. This variable is determined solely by the momentum and angle of the outgoing lepton. The normalized scattering distribution in this variable is independent of incident lepton energy and flux, provided scale invariance is valid. Furthermore the sensitivity to various hypothetical scale-breaking mechanisms is discussed." + assert parsed_record.abstract == expected + + +def test_authors(parsed_record): + """Test extracting authors""" + expected = [{'full_name': 'Bjorken, J.D.', + 'raw_affiliations': [ + {'value': 'Stanford Univ., Stanford, CA (United States)', + 'source': 'OSTI'}]}, + {'full_name': 'Cline, D.', + 'raw_affiliations': [ + {'value': 'Univ. of Wisconsin, Madison, WI (United States)', + 'source': 'OSTI'}]}, + {'full_name': 'Mann, A.K.', + 'raw_affiliations': [ + {'value': 'Univ. of Pennsylvania, Philadelphia, PA (United States)', + 'source': 'OSTI'}]}] + assert parsed_record.authors == expected + + +def test_collaborations(parsed_record): + """Test extracting collaborations""" + expected = [''] + assert parsed_record.collaborations == expected + + +def test_date_published(parsed_record): + """Test extracting published date""" + expected = '1973-11-01' + assert parsed_record.date_published == expected + + +def test_document_type(parsed_record): + """Test extracting document type""" + expected = 'article' + assert parsed_record.document_type == expected + + +def test_dois(parsed_record): + """Test extracting DOIs""" + expected = [{'doi': '10.1103/PhysRevD.8.3207', + 'material': 'publication', + 'source': 'OSTI'}] + assert parsed_record.dois == expected + + +def test_osti_id(parsed_record): + """Test extracting OSTI id""" + expected = '1442851' + assert parsed_record.osti_id == expected + + +def test_journal_year(parsed_record): + """Test extracting journal year""" + expected = 1973 + assert parsed_record.journal_year == expected + + +def test_journal_title(parsed_record): + """Test extracting journal title""" + expected = 'Physical Review. D, Particles Fields' + assert parsed_record.journal_title == expected + + +def test_journal_issue(parsed_record): + """Test extracting journal issue""" + expected = '9' + assert parsed_record.journal_issue == expected + + +def test_journal_volume(parsed_record): + """Test extracting journal volume""" + expected = '8' + assert parsed_record.journal_volume == expected + + +def test_language(parsed_record): + """Test extracting language""" + expected = 'English' + assert parsed_record.language == expected + + +def test_pageinfo(parsed_record): + """Test extracting page information""" + expected = {'mediatype': 'ED', + 'artid': None, + 'page_start': '3207', + 'page_end': '3210', + 'numpages': None, + 'freeform': None, + 'remainder': ''} + assert parsed_record.pageinfo == expected + + +def test_publication_info(parsed_record): + """Test_extracting page info.""" + expected = {'artid': None, + 'journal_title': 'Physical Review. D, Particles Fields', + 'journal_issue': '9', + 'journal_volume': '8', + 'page_start': '3207', + 'page_end': '3210', + 'pubinfo_freetext': None, + 'year': 1973} + assert parsed_record.publication_info == expected + + +def test_report_numbers(parsed_record): + """Test extracting report numbers.""" + expected = ['SLAC-PUB-1244'] + assert parsed_record.report_numbers == expected + + +def test_title(parsed_record): + """Test extracting title.""" + expected = 'Flux-Independent Measurements of Deep-Inelastic Neutrino Processes' + assert parsed_record.title == expected + + +def test_source(parsed_record): + """Test returning proper source.""" + expected = 'OSTI' + assert parsed_record.source == expected + + +def test_get_authors_and_affiliations(parsed_record): + """Test parsing authors and affiliations.""" + + +def test_get_pageinfo(parsed_record): + """Test parsing page info."""