def test_marc21_856_indicators(): """Test MARC21 856 field special indicator values.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record from dojson.contrib.to_marc21 import to_marc21 RECORD_8564 = ''' <datafield tag="856" ind1="4" ind2=" "> <subfield code="s">272681</subfield> <subfield code="u">https://zenodo.org/record/17575/files/...</subfield> <subfield code="z">0</subfield> </datafield> ''' RECORD_8567 = ''' <datafield tag="856" ind1="7" ind2=" "> <subfield code="s">272681</subfield> <subfield code="u">https://zenodo.org/record/17575/files/...</subfield> <subfield code="z">0</subfield> <subfield code="2">Awesome access method</subfield> </datafield> ''' expected_8564 = { 'electronic_location_and_access': [ {'public_note': ('0',), 'access_method': 'HTTP', 'uniform_resource_identifier': ( 'https://zenodo.org/record/17575/files/...',), 'file_size': ('272681',)} ] } expected_8567 = { 'electronic_location_and_access': [ {'public_note': ('0',), 'access_method': 'Awesome access method', 'uniform_resource_identifier': ( 'https://zenodo.org/record/17575/files/...',), 'file_size': ('272681',)} ] } blob = create_record(RECORD_8564) data = marc21.do(blob) assert expected_8564 == data back_blob = to_marc21.do(data) assert blob == back_blob blob = create_record(RECORD_8567) data = marc21.do(blob) assert expected_8567 == data back_blob = to_marc21.do(data) assert blob == back_blob
def records(): """Load records.""" import pkg_resources import uuid from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob from invenio_pidstore import current_pidstore from invenio_records.api import Record # pkg resources the demodata data_path = pkg_resources.resource_filename( 'invenio_records', 'data/marc21/bibliographic.xml' ) with open(data_path) as source: indexer = RecordIndexer() with db.session.begin_nested(): for index, data in enumerate(split_blob(source.read()), start=1): # create uuid rec_uuid = uuid.uuid4() # do translate record = marc21.do(create_record(data)) # create PID current_pidstore.minters['recid_minter']( rec_uuid, record ) # create record indexer.index(Record.create(record, id_=rec_uuid)) db.session.commit()
def load_records(app, filename, schema, tries=5): """Try to index records.""" indexer = RecordIndexer() records = [] with app.app_context(): with mock.patch('invenio_records.api.Record.validate', return_value=None): data_filename = pkg_resources.resource_filename( 'invenio_records', filename) records_data = load(data_filename) with db.session.begin_nested(): for item in records_data: record_id = uuid.uuid4() item_dict = dict(marc21.do(item)) item_dict['$schema'] = schema recid_minter(record_id, item_dict) oaiid_minter(record_id, item_dict) record = Record.create(item_dict, id_=record_id) indexer.index(record) records.append(record.id) db.session.commit() # Wait for indexer to finish for i in range(tries): response = current_search_client.search() if response['hits']['total'] >= len(records): break sleep(5) return records
def load_records(app, filename, schema, tries=5): """Try to index records.""" indexer = RecordIndexer() records = [] with app.app_context(): with mock.patch("invenio_records.api.Record.validate", return_value=None): data_filename = pkg_resources.resource_filename( "invenio_records", filename) records_data = load(data_filename) with db.session.begin_nested(): for item in records_data: record_id = uuid.uuid4() item_dict = dict(marc21.do(item)) item_dict["$schema"] = schema recid_minter(record_id, item_dict) oaiid_minter(record_id, item_dict) record = current_oaiserver.record_cls.create(item_dict, id_=record_id) indexer.index(record) records.append(record.id) db.session.commit() # Wait for indexer to finish for i in range(tries): response = current_search_client.search() if response["hits"]["total"] >= len(records): break current_search.flush_and_refresh("_all") return records
def load_records(app, filename, schema, tries=5): """Try to index records.""" indexer = RecordIndexer() records = [] with app.app_context(): with mock.patch('invenio_records.api.Record.validate', return_value=None): data_filename = pkg_resources.resource_filename( 'invenio_records', filename) records_data = load(data_filename) with db.session.begin_nested(): for item in records_data: record_id = uuid.uuid4() item_dict = dict(marc21.do(item)) item_dict['$schema'] = schema recid_minter(record_id, item_dict) oaiid_minter(record_id, item_dict) record = Record.create(item_dict, id_=record_id) indexer.index(record) records.append(record.id) db.session.commit() # Wait for indexer to finish for i in range(tries): response = current_search_client.search() if response['hits']['total'] >= len(records): break current_search.flush_and_refresh('_all') return records
def test_tomarc21_from_liberal_xml(): """Test MARC21 loading and recreating from XML.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record from dojson.contrib.to_marc21 import to_marc21 from dojson.errors import MissingRule def liberal(exc, output, key, value): """When a key cannot be translated, simply use the number instead.""" if exc.__class__ is MissingRule: if key == '__order__': return if isinstance(output, list): output.append((key, value)) else: output[key] = value else: raise exc for name, record in LIBERAL_RECORDS.items(): blob = create_record(record) data = marc21.do(blob, False, {MissingRule: liberal}) back_blob = to_marc21.do(data, False, {MissingRule: liberal}) assert blob == back_blob, name
def test_marc21_856_indicators(): """Test MARC21 856 field special indicator values.""" records = { 8564: [ ''' <datafield tag="856" ind1="4" ind2=" "> <subfield code="s">272681</subfield> <subfield code="u">https://zenodo.org/record/17575/files/...</subfield> <subfield code="z">0</subfield> </datafield> ''', { '__order__': ['electronic_location_and_access'], 'electronic_location_and_access': [ { '__order__': ('file_size', 'uniform_resource_identifier', 'public_note', 'access_method', 'relationship'), 'public_note': ('0',), 'access_method': 'HTTP', 'relationship': 'No information provided', 'uniform_resource_identifier': ( 'https://zenodo.org/record/17575/files/...',), 'file_size': ('272681',) } ] } ], 8567: [ ''' <datafield tag="856" ind1="7" ind2=" "> <subfield code="s">272681</subfield> <subfield code="u">https://zenodo.org/record/17575/files/...</subfield> <subfield code="z">0</subfield> <subfield code="2">Awesome access method</subfield> </datafield> ''', { '__order__': ['electronic_location_and_access'], 'electronic_location_and_access': [ { '__order__': ('file_size', 'uniform_resource_identifier', 'public_note', 'access_method', 'relationship'), 'public_note': ('0',), 'access_method': 'Awesome access method', 'relationship': 'No information provided', 'uniform_resource_identifier': ( 'https://zenodo.org/record/17575/files/...',), 'file_size': ('272681',) } ] } ] } for name, (record, expected) in records.items(): blob = create_record(record) data = marc21.do(blob) # this ordering is required to use __eq__ from GroupableOrderedDict assert data == expected, name back_blob = to_marc21.do(data) assert blob == back_blob, name
def convert_marcxml(source): """Convert MARC XML to JSON.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob for data in split_blob(source.read()): yield marc21.do(create_record(data))
def records(): """Load records.""" import pkg_resources import uuid from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob from invenio_pidstore import current_pidstore from invenio_records.api import Record # pkg resources the demodata data_path = pkg_resources.resource_filename( 'invenio_records', 'data/marc21/bibliographic.xml') with open(data_path) as source: indexer = RecordIndexer() with db.session.begin_nested(): for index, data in enumerate(split_blob(source.read()), start=1): # create uuid rec_uuid = uuid.uuid4() # do translate record = marc21.do(create_record(data)) # create PID current_pidstore.minters['recid'](rec_uuid, record) # create record indexer.index(Record.create(record, id_=rec_uuid)) db.session.commit()
def records(): """Load records.""" import pkg_resources from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob from flask_login import login_user, logout_user from invenio_accounts.models import User from invenio_deposit.api import Deposit users = User.query.all() # pkg resources the demodata data_path = pkg_resources.resource_filename( 'invenio_records', 'data/marc21/bibliographic.xml') with open(data_path) as source: with current_app.test_request_context(): indexer = RecordIndexer() with db.session.begin_nested(): for index, data in enumerate(split_blob(source.read()), start=1): login_user(users[index % len(users)]) # do translate record = marc21.do(create_record(data)) # create record indexer.index(Deposit.create(record)) logout_user() db.session.commit()
def records(): """Load records.""" import pkg_resources import uuid from flask_login import login_user, logout_user from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob from invenio_accounts.models import User from invenio_deposit.api import Deposit users = User.query.all() # pkg resources the demodata data_path = pkg_resources.resource_filename( 'invenio_records', 'data/marc21/bibliographic.xml' ) with open(data_path) as source: with current_app.test_request_context(): indexer = RecordIndexer() with db.session.begin_nested(): for index, data in enumerate(split_blob(source.read()), start=1): login_user(users[index % len(users)]) # do translate record = marc21.do(create_record(data)) # create record indexer.index(Deposit.create(record)) logout_user() db.session.commit()
def test_marc21_from_xml(): """Test MARC21 loading from XML.""" blob = create_record(RECORD) data = marc21.do(blob) assert 'former_title' not in data
def test_simple_record_from_xml(): """Test simple record loading from XML.""" blob = create_record(RECORD_SIMPLE) data = marc21.do(blob) expected = {'main_entry_personal_name': {'personal_name': 'Donges, Jonathan F'}} assert data == expected
def test_invenio_collection_marc21_tag(): """Test invenio-collection marc21 tag.""" source = {'980__': [{'a': 'colla'}, {'b': 'collb'}]} data = marc21.do(source) assert data['collections'][0]['primary'] == 'colla' assert data['collections'][1]['secondary'] == 'collb' original = to_marc21.do(data) assert source['980__'] == list(original['980__'])
def test_marc21_field_247_matching(): """Test MARC21 0247/247 field matching.""" data = marc21.do({ '0247_': [{'a': 'A'}], '247__': [{'a': 'B'}], }) assert 'A' == data['other_standard_identifier'][0]['standard_number_or_code'] assert 'B' == data['former_title'][0]['title']
def test_marc21_from_xml(): """Test MARC21 loading from XML.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record blob = create_record(RECORD) data = marc21.do(blob) assert 'former_title' not in data
def test_tomarc21_from_xml(): """Test MARC21 loading and recreating from XML.""" for name, record in RECORDS.items(): blob = create_record(record) data = marc21.do(blob) back_blob = to_marc21.do(data) assert blob == back_blob, name
def test_invenio_collection_marc21_tag(): """Test invenio-collection marc21 tag.""" source = {'980__': [{'a': 'colla'}, {'b': 'collb'}]} data = marc21.do(source) assert data['collections'][0]['primary'] == 'colla' assert data['collections'][1]['secondary'] == 'collb' original = to_marc21.do(data) assert source['980__'] == original['980__']
def test_records_marc21_tojson_tomarc21(): """Test records marc21 - json - marc21.""" for name, record in RECORDS.items(): blob = create_record(record) data = marc21.do(blob) text = json.dumps(data) back_blob = to_marc21.do(json.loads(text)) assert blob == back_blob, name
def test_marc21_field_247_matching(): """Test MARC21 0247/247 field matching.""" from dojson.contrib.marc21 import marc21 data = marc21.do({ '0247_': [{'a': 'A'}], '247__': [{'a': 'B'}], }) assert data['other_standard_identifier'][0]['standard_number_or_code'] \ == 'A' assert data['former_title'][0]['title'] == 'B' assert len(data) == 2
def test_records_marc21_tojson_tomarc21(): """Test records marc21 - json - marc21.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record from dojson.contrib.to_marc21 import to_marc21 for name, record in RECORDS.items(): blob = create_record(record) data = marc21.do(blob) back_blob = to_marc21.do(data) assert blob == back_blob, name
def test_tomarc21_from_xml(): """Test MARC21 loading and recreating from XML.""" from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record from dojson.contrib.to_marc21 import to_marc21 for name, record in RECORDS.items(): blob = create_record(record) data = marc21.do(blob) back_blob = to_marc21.do(data) assert blob == back_blob, name
def records(): """Load records.""" import pkg_resources from invenio_records.api import Record from dojson.contrib.marc21 import marc21 from dojson.contrib.marc21.utils import create_record, split_blob # pkg resources the demodata data_path = pkg_resources.resource_filename( 'invenio_records', 'data/marc21/bibliographic.xml' ) with open(data_path) as source: with db.session.begin_nested(): for data in split_blob(source.read()): Record.create(marc21.do(create_record(data)))
def test_accented_unicode_letterst_test(self): """Record - accented Unicode letters.""" xml = """<record> <datafield tag="041" ind1=" " ind2=" "> <subfield code="a">eng</subfield> </datafield> <datafield tag="100" ind1=" " ind2=" "> <subfield code="a">Döè1, John</subfield> </datafield> <datafield tag="245" ind1=" " ind2=" "> <subfield code="a">Пушкин</subfield> </datafield> </record> """ rec = marc21.do(create_record(xml)) assert rec["main_entry_personal_name"]["personal_name"] == "Döè1, John" assert rec["title_statement"]["title"] == "Пушкин"
def test_accented_unicode_letterst_test(self): """Record - accented Unicode letters.""" xml = '''<record> <datafield tag="041" ind1=" " ind2=" "> <subfield code="a">eng</subfield> </datafield> <datafield tag="100" ind1=" " ind2=" "> <subfield code="a">Döè1, John</subfield> </datafield> <datafield tag="245" ind1=" " ind2=" "> <subfield code="a">Пушкин</subfield> </datafield> </record> ''' rec = marc21.do(create_record(xml)) assert rec['main_entry_personal_name']['personal_name'] == 'Döè1, John' assert rec['title_statement']['title'] == 'Пушкин'
def test_marc21_field_247_matching(): """Test MARC21 0247/247 field matching.""" from dojson.contrib.marc21 import marc21 data = marc21.do({ '0247_': [{ 'a': 'A' }], '247__': [{ 'a': 'B' }], }) assert data['other_standard_identifier'][0]['standard_number_or_code'] \ == 'A' assert data['former_title'][0]['title'] == 'B' assert len(data) == 2
def load_records(es_app, filename, schema): """Try to index records.""" indexer = RecordIndexer() with es_app.test_request_context(): data_filename = pkg_resources.resource_filename("invenio_records", filename) records_data = load(data_filename) records = [] for item in records_data: item_dict = dict(marc21.do(item)) item_dict["$schema"] = schema record = Record.create(item_dict) records.append(record) db.session.commit() es_records = [] for record in records: es_records.append(indexer.index(record)) for record in es_records: search.client.get(index=record["_index"], doc_type=record["_type"], id=record["_id"])
def load_records(es_app, filename, schema): """Try to index records.""" indexer = RecordIndexer() with es_app.test_request_context(): data_filename = pkg_resources.resource_filename( 'invenio_records', filename) records_data = load(data_filename) records = [] for item in records_data: item_dict = dict(marc21.do(item)) item_dict['$schema'] = schema record = Record.create(item_dict) records.append(record) db.session.commit() es_records = [] for record in records: es_records.append(indexer.index(record)) for record in es_records: search.client.get(index=record['_index'], doc_type=record['_type'], id=record['_id'])
def test_toxml_from_xml(): """Test MARC21 loading from XML and recreating to XML.""" for name, record in RECORDS.items(): blob = create_record(record) rec = marc21.do(blob) back_blob = to_marc21.do(rec) assert blob == back_blob xml = dumps([back_blob]) options = {'xml_declaration': True, 'encoding': 'utf8', 'pretty_print': True} recordxml = ('<collection xmlns="http://www.loc.gov/MARC21/slim">' + record + '</collection>') expected = etree.tostring(objectify.fromstring(recordxml), **options) actual = etree.tostring(objectify.fromstring(xml), **options) assert expected == actual
def load_records(es_app, filename, schema): """Try to index records.""" indexer = RecordIndexer() with es_app.test_request_context(): data_filename = pkg_resources.resource_filename("invenio_records", filename) records_data = load(data_filename) records = [] for item in records_data: item_dict = dict(marc21.do(item)) item_dict["$schema"] = schema record = Record.create(item_dict) records.append(record) db.session.commit() es_records = [] for record in records: es_records.append(indexer.index(record)) from invenio_search import current_search for record in es_records: current_search.client.get( index=record["_index"], doc_type=record["_type"], id=record["_id"] )
def load_records(es_app, filename, schema): """Try to index records.""" indexer = RecordIndexer() with es_app.test_request_context(): data_filename = pkg_resources.resource_filename( 'invenio_records', filename) records_data = load(data_filename) records = [] for item in records_data: item_dict = dict(marc21.do(item)) item_dict['$schema'] = schema record = Record.create(item_dict) records.append(record) db.session.commit() es_records = [] for record in records: es_records.append(indexer.index(record)) from invenio_search import current_search for record in es_records: current_search.client.get(index=record['_index'], doc_type=record['_type'], id=record['_id'])
def test_rec_json_creation_from_marcxml(self): """Record - recjson from marcxml""" xml = """ <record> <datafield tag="037" ind1=" " ind2=" "> <subfield code="a">astro-ph/9812226</subfield> </datafield> <datafield tag="041" ind1=" " ind2=" "> <subfield code="a">eng</subfield> </datafield> <datafield tag="100" ind1=" " ind2=" "> <subfield code="a">Efstathiou, G P</subfield> <subfield code="u">Cambridge University</subfield> </datafield> <datafield tag="245" ind1=" " ind2=" "> <subfield code="a">Constraints on $\Omega_{\Lambda}$ and $\Omega_{m}$from Distant Type 1a Supernovae and Cosmic Microwave Background Anisotropies</subfield> </datafield> <datafield tag="260" ind1=" " ind2=" "> <subfield code="c">14 Dec 1998</subfield> </datafield> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">6 p</subfield> </datafield> <datafield tag="520" ind1=" " ind2=" "> <subfield code="a">We perform a combined likelihood analysis of the latest cosmic microwave background anisotropy data and distant Type 1a Supernova data of Perlmutter etal (1998a). Our analysis is restricted tocosmological models where structure forms from adiabatic initial fluctuations characterised by a power-law spectrum with negligible tensor component. Marginalizing over other parameters, our bestfit solution gives Omega_m = 0.25 (+0.18, -0.12) and Omega_Lambda = 0.63 (+0.17, -0.23) (95 % confidence errors) for the cosmic densities contributed by matter and a cosmological constantrespectively. The results therefore strongly favour a nearly spatially flat Universe with a non-zero cosmological constant.</subfield> </datafield> <datafield tag="595" ind1=" " ind2=" "> <subfield code="a">LANL EDS</subfield> </datafield> <datafield tag="650" ind1="1" ind2="7"> <subfield code="2">SzGeCERN</subfield> <subfield code="a">Astrophysics and Astronomy</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="a">Lasenby, A N</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="a">Hobson, M P</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="a">Ellis, R S</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="a">Bridle, S L</subfield> </datafield> <datafield tag="856" ind1="0" ind2=" "> <subfield code="f">George Efstathiou <[email protected]></subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.pdf</subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.fig1.ps.gz</subfield> <subfield code="t">Additional</subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.fig3.ps.gz</subfield> <subfield code="t">Additional</subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.fig5.ps.gz</subfield> <subfield code="t">Additional</subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.fig6.ps.gz</subfield> <subfield code="t">Additional</subfield> </datafield> <datafield tag="FFT" ind1=" " ind2=" "> <subfield code="a">http://invenio-software.org/download/invenio-demo-site-files/9812226.fig7.ps.gz</subfield> <subfield code="t">Additional</subfield> </datafield> <datafield tag="909" ind1="C" ind2="0"> <subfield code="y">1998</subfield> </datafield> <datafield tag="909" ind1="C" ind2="0"> <subfield code="b">11</subfield> </datafield> <datafield tag="909" ind1="C" ind2="1"> <subfield code="c">1998-12-14</subfield> <subfield code="l">50</subfield> <subfield code="m">2001-04-07</subfield> <subfield code="o">BATCH</subfield> </datafield> <datafield tag="909" ind1="C" ind2="4"> <subfield code="p">Mon. Not. R. Astron. Soc.</subfield> </datafield> <datafield tag="909" ind1="C" ind2="O"> <subfield code="i">SLAC</subfield> <subfield code="s">4162242</subfield> </datafield> <datafield tag="909" ind1="C" ind2="5"> <subfield code="b">CER</subfield> </datafield> <datafield tag="909" ind1="C" ind2="S"> <subfield code="s">n</subfield> <subfield code="w">200231</subfield> </datafield> <datafield tag="980" ind1=" " ind2=" "> <subfield code="a">PREPRINT</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Bond, J.R. 1996, Theory and Observations of the Cosmic Background Radiation, in "Cosmology and Large Scale Structure", Les Houches Session LX, August 1993, eds. R. Schaeffer, J. Silk, M. Spiro and J. Zinn-Justin, Elsevier SciencePress, Amsterdam, p469</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Bond J.R., Efstathiou G., Tegmark M., 1997</subfield> <subfield code="p">L33</subfield> <subfield code="t">Mon. Not. R. Astron. Soc.</subfield> <subfield code="v">291</subfield> <subfield code="y">1997</subfield> <subfield code="s">Mon. Not. R. Astron. Soc. 291 (1997) L33</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Bond, J.R., Jaffe, A. 1997, in Proc. XXXI Rencontre de Moriond, ed. F. Bouchet, Edition Fronti eres, in press</subfield> <subfield code="r">astro-ph/9610091</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Bond J.R., Jaffe A.H. and Knox L.E., 1998</subfield> <subfield code="r">astro-ph/9808264</subfield> <subfield code="s">Astrophys.J. 533 (2000) 19</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Burles S., Tytler D., 1998a, to appear in the Proceedings of the Second Oak Ridge Symposium on Atomic & Nuclear Astrophysics, ed. A. Mezzacappa, Institute of Physics, Bristol</subfield> <subfield code="r">astro-ph/9803071</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Burles S., Tytler D., 1998b, Astrophys. J.in press</subfield> <subfield code="r">astro-ph/9712109</subfield> <subfield code="s">Astrophys.J. 507 (1998) 732</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Caldwell, R.R., Dave, R., Steinhardt P.J., 1998</subfield> <subfield code="p">1582</subfield> <subfield code="t">Phys. Rev. Lett.</subfield> <subfield code="v">80</subfield> <subfield code="y">1998</subfield> <subfield code="s">Phys. Rev. Lett. 80 (1998) 1582</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Carroll S.M., Press W.H., Turner E.L., 1992, Ann. Rev. Astr. Astrophys., 30, 499. Chaboyer B., 1998</subfield> <subfield code="r">astro-ph/9808200</subfield> <subfield code="s">Phys.Rept. 307 (1998) 23</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Devlin M.J., De Oliveira-Costa A., Herbig T., Miller A.D., Netterfield C.B., Page L., Tegmark M., 1998, submitted to Astrophys. J</subfield> <subfield code="r">astro-ph/9808043</subfield> <subfield code="s">Astrophys. J. 509 (1998) L69-72</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Efstathiou G. 1996, Observations of Large-Scale Structure in the Universe, in "Cosmology and Large Scale Structure", Les Houches Session LX, August 1993, eds. R. Schaeffer, J. Silk, M. Spiro and J. Zinn-Justin, Elsevier SciencePress, Amsterdam, p135. Efstathiou G., Bond J.R., Mon. Not. R. Astron. Soc.in press</subfield> <subfield code="r">astro-ph/9807130</subfield> <subfield code="s">Astrophys. J. 518 (1999) 2-23</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Evrard G., 1998, submitted to Mon. Not. R. Astron. Soc</subfield> <subfield code="r">astro-ph/9701148</subfield> <subfield code="s">Mon.Not.Roy.Astron.Soc. 292 (1997) 289</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Freedman J.B., Mould J.R., Kennicutt R.C., Madore B.F., 1998</subfield> <subfield code="r">astro-ph/9801090</subfield> <subfield code="s">Astrophys. J. 480 (1997) 705</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Garnavich P.M. et al. 1998</subfield> <subfield code="r">astro-ph/9806396</subfield> <subfield code="s">Astrophys.J. 509 (1998) 74-79</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Goobar A., Perlmutter S., 1995</subfield> <subfield code="p">14</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">450</subfield> <subfield code="y">1995</subfield> <subfield code="s">Astrophys. J. 450 (1995) 14</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Hamuy M., Phillips M.M., Maza J., Suntzeff N.B., Schommer R.A., Aviles R. 1996</subfield> <subfield code="p">2391</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">112</subfield> <subfield code="y">1996</subfield> <subfield code="s">Astrophys. J. 112 (1996) 2391</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Hancock S., Gutierrez C.M., Davies R.D., Lasenby A.N., Rocha G., Rebolo R., Watson R.A., Tegmark M., 1997</subfield> <subfield code="p">505</subfield> <subfield code="t">Mon. Not. R. Astron. Soc.</subfield> <subfield code="v">298</subfield> <subfield code="y">1997</subfield> <subfield code="s">Mon. Not. R. Astron. Soc. 298 (1997) 505</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Hancock S., Rocha G., Lasenby A.N., Gutierrez C.M., 1998</subfield> <subfield code="p">L1</subfield> <subfield code="t">Mon. Not. R. Astron. Soc.</subfield> <subfield code="v">294</subfield> <subfield code="y">1998</subfield> <subfield code="s">Mon. Not. R. Astron. Soc. 294 (1998) L1</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Herbig T., De Oliveira-Costa A., Devlin M.J., Miller A.D., Page L., Tegmark M., 1998, submitted to Astrophys. J</subfield> <subfield code="r">astro-ph/9808044</subfield> <subfield code="s">Astrophys.J. 509 (1998) L73-76</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Lineweaver C.H., 1998. Astrophys. J.505, L69. Lineweaver, C.H., Barbosa D., 1998a</subfield> <subfield code="p">624</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">446</subfield> <subfield code="y">1998</subfield> <subfield code="s">Astrophys. J. 446 (1998) 624</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Lineweaver, C.H., Barbosa D., 1998b</subfield> <subfield code="p">799</subfield> <subfield code="t">Astron. Astrophys.</subfield> <subfield code="v">329</subfield> <subfield code="y">1998</subfield> <subfield code="s">Astron. Astrophys. 329 (1998) 799</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">De Oliveira-Costa A., Devlin M.J., Herbig T., Miller A.D., Netterfield C.B. Page L., Tegmark M., 1998, submitted to Astrophys. J</subfield> <subfield code="r">astro-ph/9808045</subfield> <subfield code="s">Astrophys. J. 509 (1998) L77-80</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Ostriker J.P., Steinhardt P.J., 1995</subfield> <subfield code="p">600</subfield> <subfield code="t">Nature</subfield> <subfield code="v">377</subfield> <subfield code="y">1995</subfield> <subfield code="s">Nature 377 (1995) 600</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Peebles P.J.E., 1993, Principles of Physical Cosmology, Princeton University Press, Princeton, New Jersey. Perlmutter S, et al., 1995, In Presentations at the NATO ASI in Aiguablava, Spain, LBL-38400; also published in Thermonuclear Supernova, P. Ruiz-Lapuente, R. Cana and J. Isern (eds), Dordrecht, Kluwer, 1997, p749. Perlmutter S, et al., 1997</subfield> <subfield code="p">565</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">483</subfield> <subfield code="y">1997</subfield> <subfield code="s">Astrophys. J. 483 (1997) 565</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Perlmutter S. et al., 1998a, Astrophys. J.in press. (P98)</subfield> <subfield code="r">astro-ph/9812133</subfield> <subfield code="s">Astrophys. J. 517 (1999) 565-586</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Perlmutter S. et al., 1998b, In Presentation at the January 1988 Meeting of the American Astronomical Society, Washington D.C., LBL-42230, available at www-supernova.lbl.gov; B.A.A.S., volume : 29 (1997) 1351Perlmutter S, et al., 1998c</subfield> <subfield code="p">51</subfield> <subfield code="t">Nature</subfield> <subfield code="v">391</subfield> <subfield code="y">1998</subfield> <subfield code="s">Nature 391 (1998) 51</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Ratra B., Peebles P.J.E., 1988</subfield> <subfield code="p">3406</subfield> <subfield code="t">Phys. Rev., D</subfield> <subfield code="v">37</subfield> <subfield code="y">1988</subfield> <subfield code="s">Phys. Rev. D 37 (1988) 3406</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Riess A. et al. 1998, Astrophys. J.in press</subfield> <subfield code="r">astro-ph/9805201</subfield> <subfield code="s">Astron. J. 116 (1998) 1009-1038</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Seljak U., Zaldarriaga M. 1996</subfield> <subfield code="p">437</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">469</subfield> <subfield code="y">1996</subfield> <subfield code="s">Astrophys. J. 469 (1996) 437</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Seljak U. & Zaldarriaga M., 1998</subfield> <subfield code="r">astro-ph/9811123</subfield> <subfield code="s">Phys. Rev. D60 (1999) 043504</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Tegmark M., 1997</subfield> <subfield code="p">3806</subfield> <subfield code="t">Phys. Rev. Lett.</subfield> <subfield code="v">79</subfield> <subfield code="y">1997</subfield> <subfield code="s">Phys. Rev. Lett. 79 (1997) 3806</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Tegmark M. 1998, submitted to Astrophys. J</subfield> <subfield code="r">astro-ph/9809201</subfield> <subfield code="s">Astrophys. J. 514 (1999) L69-L72</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Tegmark, M., Eisenstein D.J., Hu W., Kron R.G., 1998</subfield> <subfield code="r">astro-ph/9805117</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Wambsganss J., Cen R., Ostriker J.P., 1998</subfield> <subfield code="p">29</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">494</subfield> <subfield code="y">1998</subfield> <subfield code="s">Astrophys. J. 494 (1998) 29</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Webster M., Bridle S.L., Hobson M.P., Lasenby A.N., Lahav O., Rocha, G., 1998, Astrophys. J.in press</subfield> <subfield code="r">astro-ph/9802109</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">White M., 1998, Astrophys. J.in press</subfield> <subfield code="r">astro-ph/9802295</subfield> <subfield code="s">Astrophys. J. 506 (1998) 495</subfield> </datafield> <datafield tag="999" ind1="C" ind2="5"> <subfield code="m">Zaldarriaga, M., Spergel D.N., Seljak U., 1997</subfield> <subfield code="p">1</subfield> <subfield code="t">Astrophys. J.</subfield> <subfield code="v">488</subfield> <subfield code="y">1997</subfield> <subfield code="s">Astrophys. J. 488 (1997) 1</subfield> </datafield> </record> """ r = marc21.do(create_record(xml)) assert 'main_entry_personal_name' in r assert 'added_entry_personal_name' in r assert r['main_entry_personal_name']['personal_name'] == "Efstathiou, G P" assert len(r['added_entry_personal_name']) == 4 assert 'title_statement' in r assert r['title_statement']['title'] == "Constraints on $\Omega_{\Lambda}$ and $\Omega_{m}$from Distant Type 1a Supernovae and Cosmic Microwave Background Anisotropies" assert 'summary' in r assert r['summary'][0]['summary'] == "We perform a combined likelihood analysis of the latest cosmic microwave background anisotropy data and distant Type 1a Supernova data of Perlmutter etal (1998a). Our analysis is restricted tocosmological models where structure forms from adiabatic initial fluctuations characterised by a power-law spectrum with negligible tensor component. Marginalizing over other parameters, our bestfit solution gives Omega_m = 0.25 (+0.18, -0.12) and Omega_Lambda = 0.63 (+0.17, -0.23) (95 % confidence errors) for the cosmic densities contributed by matter and a cosmological constantrespectively. The results therefore strongly favour a nearly spatially flat Universe with a non-zero cosmological constant."