示例#1
0
def test_long_name_and_name_variants_from_245__a_and_419__a():
    schema = load_schema('experiments')
    long_name_schema = schema['properties']['long_name']
    name_variants_schema = schema['properties']['name_variants']

    snippet = (
        '<record>'
        '  <datafield tag="245" ind1=" " ind2=" ">'
        r'    <subfield code="a">Proposal to measure the very rare kaon decay $K^+ \to \pi^+ \nu \bar{\nu}$</subfield>'
        '  </datafield>'
        '  <datafield tag="419" ind1=" " ind2=" ">'
        '    <subfield code="a">P-326</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1275752

    expected_long_name = r'Proposal to measure the very rare kaon decay $K^+ \to \pi^+ \nu \bar{\nu}$'
    expected_name_variants = [
        'P-326',
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['long_name'], long_name_schema) is None
    assert expected_long_name == result['long_name']

    assert validate(result['name_variants'], name_variants_schema) is None
    assert expected_name_variants == result['name_variants']
示例#2
0
def test_dates_from_046__q_s_and_046__r():
    schema = load_schema('experiments')
    date_proposed_schema = schema['properties']['date_proposed']
    date_approved_schema = schema['properties']['date_approved']
    date_started_schema = schema['properties']['date_started']

    snippet = (
        '<record>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="q">2009-08-19</subfield>'
        '    <subfield code="s">2009-11-30</subfield>'
        '  </datafield>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="r">2009-10-08</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1318099

    expected_date_proposed = '2009-08-19'
    expected_date_approved = '2009-10-08'
    expected_date_started = '2009-11-30'
    result = experiments.do(create_record(snippet))

    assert validate(result['date_proposed'], date_proposed_schema) is None
    assert expected_date_proposed == result['date_proposed']

    assert validate(result['date_approved'], date_approved_schema) is None
    assert expected_date_approved == result['date_approved']

    assert validate(result['date_started'], date_started_schema) is None
    assert expected_date_started == result['date_started']
示例#3
0
def test_description_from_multiple_520__a():
    schema = load_schema('experiments')
    subschema = schema['properties']['description']

    snippet = (
        '<record>'
        '  <datafield tag="520" ind1=" " ind2=" ">'
        '    <subfield code="a">DAMA is an observatory for rare processes which develops and uses several low-background set-ups at the Gran Sasso National Laboratory of the I.N.F.N. (LNGS). The main experimental set-ups are: i) DAMA/NaI (about 100 kg of highly radiopure NaI(Tl)), which completed its data taking on July 2002</subfield>'
        '  </datafield>'
        '  <datafield tag="520" ind1=" " ind2=" ">'
        '    <subfield code="a">ii) DAMA/LXe (about 6.5 kg liquid Kr-free Xenon enriched either in 129Xe or in 136Xe)</subfield>'
        '  </datafield>'
        '  <datafield tag="520" ind1=" " ind2=" ">'
        '    <subfield code="a">iii) DAMA/R&amp;D, devoted to tests on prototypes and to small scale experiments, mainly on the investigations of double beta decay modes in various isotopes. iv) the second generation DAMA/LIBRA set-up (about 250 kg highly radiopure NaI(Tl)) in operation since March 2003</subfield>'
        '  </datafield>'
        '  <datafield tag="520" ind1=" " ind2=" ">'
        '    <subfield code="a">v) the low background DAMA/Ge detector mainly devoted to sample measurements: in some measurements on rare processes the low-background Germanium detectors of the LNGS facility are also used. Moreover, a third generation R&amp;D is in progress towards a possible 1 ton set-up, DAMA proposed in 1996. In particular, the DAMA/NaI and the DAMA/LIBRA set-ups have investigated the presence of Dark Matter particles in the galactic halo by exploiting the Dark Matter annual modulation signature.</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1110568

    expected = (
        'DAMA is an observatory for rare processes which develops and uses several low-background set-ups at the Gran Sasso National Laboratory of the I.N.F.N. (LNGS). The main experimental set-ups are: i) DAMA/NaI (about 100 kg of highly radiopure NaI(Tl)), which completed its data taking on July 2002\n'
        'ii) DAMA/LXe (about 6.5 kg liquid Kr-free Xenon enriched either in 129Xe or in 136Xe)\n'
        'iii) DAMA/R&D, devoted to tests on prototypes and to small scale experiments, mainly on the investigations of double beta decay modes in various isotopes. iv) the second generation DAMA/LIBRA set-up (about 250 kg highly radiopure NaI(Tl)) in operation since March 2003\n'
        'v) the low background DAMA/Ge detector mainly devoted to sample measurements: in some measurements on rare processes the low-background Germanium detectors of the LNGS facility are also used. Moreover, a third generation R&D is in progress towards a possible 1 ton set-up, DAMA proposed in 1996. In particular, the DAMA/NaI and the DAMA/LIBRA set-ups have investigated the presence of Dark Matter particles in the galactic halo by exploiting the Dark Matter annual modulation signature.'
    )
    result = experiments.do(create_record(snippet))

    assert validate(result['description'], subschema) is None
    assert expected == result['description']
示例#4
0
def test_dates_from_046__q_and_046__r_and_046__x():
    schema = load_schema('experiments')
    date_proposed_schema = schema['properties']['date_proposed']
    date_approved_schema = schema['properties']['date_approved']

    snippet = (
        '<record>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="q">2010</subfield>'
        '  </datafield>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="r">2011-03-18</subfield>'
        '  </datafield>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="x">yes</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1108188

    expected_date_proposed = '2010'
    expected_date_approved = '2011-03-18'
    result = experiments.do(create_record(snippet))

    assert validate(result['date_proposed'], date_proposed_schema) is None
    assert expected_date_proposed == result['date_proposed']

    assert validate(result['date_approved'], date_approved_schema) is None
    assert expected_date_approved == result['date_approved']
示例#5
0
def test_legacy_name_and_institutions_from_119__a_u_z():
    schema = load_schema('experiments')
    legacy_name_schema = schema['properties']['legacy_name']
    institutions_schema = schema['properties']['institutions']

    snippet = (
        '<datafield tag="119" ind1=" " ind2=" ">'
        '  <subfield code="a">CERN-ALPHA</subfield>'
        '  <subfield code="u">CERN</subfield>'
        '  <subfield code="z">902725</subfield>'
        '</datafield>'
    )  # record/1108206

    expected_legacy_name = 'CERN-ALPHA'
    expected_institutions = [
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/902725',
            },
            'value': 'CERN',
        },
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['legacy_name'], legacy_name_schema) is None
    assert expected_legacy_name == result['legacy_name']

    assert validate(result['institutions'], institutions_schema) is None
    assert expected_institutions == result['institutions']
示例#6
0
def test_dates_from_046__s_and_046__t_and_046__x():
    schema = load_schema('experiments')
    date_started_schema = schema['properties']['date_started']
    date_completed_schema = schema['properties']['date_completed']

    snippet = (
        '<record>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="s">1996</subfield>'
        '  </datafield>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="t">2002</subfield>'
        '  </datafield>'
        '  <datafield tag="046" ind1=" " ind2=" ">'
        '    <subfield code="x">yes</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1108324

    expected_date_started = '1996'
    expected_date_completed = '2002'
    result = experiments.do(create_record(snippet))

    assert validate(result['date_started'], date_started_schema) is None
    assert expected_date_started == result['date_started']

    assert validate(result['date_completed'], date_completed_schema) is None
    assert expected_date_completed == result['date_completed']
示例#7
0
def test_inspire_classification_from_372__a_ignores_non_numerical_values():
    snippet = ('<datafield tag="372" ind1=" " ind2=" ">'
               '  <subfield code="a">ATLAS</subfield>'
               '</datafield>')  # record/1108515

    result = experiments.do(create_record(snippet))

    assert 'inspire_classification' not in result
示例#8
0
def test_related_records_from_510__a_w_0_discards_successors():
    snippet = ('<datafield tag="510" ind1=" " ind2=" ">'
               '  <subfield code="0">1262631</subfield>'
               '  <subfield code="a">LZ</subfield>'
               '  <subfield code="w">b</subfield>'
               '</datafield>')  # record/1108192

    result = experiments.do(create_record(snippet))

    assert 'related_records' not in result
示例#9
0
def test_long_name_from_245__a():
    schema = load_schema('experiments')
    subschema = schema['properties']['long_name']

    snippet = ('<datafield tag="245" ind1=" " ind2=" ">'
               '  <subfield code="a">The ALPHA experiment</subfield>'
               '</datafield>')  # record/1108206

    expected = 'The ALPHA experiment'
    result = experiments.do(create_record(snippet))

    assert validate(result['long_name'], subschema) is None
    assert expected == result['long_name']
示例#10
0
def test_deleted_from_980__c():
    schema = load_schema('hep')
    subschema = schema['properties']['deleted']

    snippet = ('<datafield tag="980" ind1=" " ind2=" ">'
               '  <subfield code="c">DELETED</subfield>'
               '</datafield>')  # synthetic data

    expected = True
    result = experiments.do(create_record(snippet))

    assert validate(result['deleted'], subschema) is None
    assert expected == result['deleted']
示例#11
0
def test_dates_from_046__c_x():
    schema = load_schema('experiments')
    subschema = schema['properties']['date_cancelled']

    snippet = ('<datafield tag="046" ind1=" " ind2=" ">'
               '  <subfield code="c">2000</subfield>'
               '  <subfield code="x">no</subfield>'
               '</datafield>')  # record/1110624

    expected = '2000'
    result = experiments.do(create_record(snippet))

    assert validate(result['date_cancelled'], subschema) is None
    assert expected == result['date_cancelled']
示例#12
0
def test_name_variants_from_419__a():
    schema = load_schema('experiments')
    subschema = schema['properties']['name_variants']

    snippet = ('<datafield tag="419" ind1=" " ind2=" ">'
               '  <subfield code="a">ALPHA</subfield>'
               '</datafield>')  # record/1108206

    expected = [
        'ALPHA',
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['name_variants'], subschema) is None
    assert expected == result['name_variants']
示例#13
0
def test_inspire_classification_from_372__a_9():
    schema = load_schema('experiments')
    subschema = schema['properties']['inspire_classification']

    snippet = ('<datafield tag="372" ind1=" " ind2=" ">'
               '  <subfield code="9">INSPIRE</subfield>'
               '  <subfield code="a">5.3</subfield>'
               '</datafield>')  # record/1110577

    expected = [
        '5.3',
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['inspire_classification'], subschema) is None
    assert expected == result['inspire_classification']
示例#14
0
def test_description_from_520__a():
    schema = load_schema('experiments')
    subschema = schema['properties']['description']

    snippet = (
        '<datafield tag="520" ind1=" " ind2=" ">'
        '  <subfield code="a">The Muon Accelerator Program (MAP) was created in 2010 to unify the DOE supported R&amp;D in the U.S. aimed at developing the concepts and technologies required for Muon Colliders and Neutrino Factories. These muon based facilities have the potential to discover and explore new exciting fundamental physics, but will require the development of demanding technologies and innovative concepts. The MAP aspires to prove the feasibility of a Muon Collider within a few years, and to make significant contributions to the international effort devoted to developing Neutrino Factories. MAP was formally approved on March 18, 2011.</subfield>'
        '</datafield>')  # record/1108188

    expected = (
        'The Muon Accelerator Program (MAP) was created in 2010 to unify the DOE supported R&D in the U.S. aimed at developing the concepts and technologies required for Muon Colliders and Neutrino Factories. These muon based facilities have the potential to discover and explore new exciting fundamental physics, but will require the development of demanding technologies and innovative concepts. The MAP aspires to prove the feasibility of a Muon Collider within a few years, and to make significant contributions to the international effort devoted to developing Neutrino Factories. MAP was formally approved on March 18, 2011.'
    )

    result = experiments.do(create_record(snippet))

    assert validate(result['description'], subschema) is None
    assert expected == result['description']
示例#15
0
def test_accelerator_and_legacy_name_and_experiment_and_institutions_from_119__a_b_c_d_u_z(
):
    schema = load_schema('experiments')
    accelerator_schema = schema['properties']['accelerator']
    legacy_name_schema = schema['properties']['legacy_name']
    experiment_schema = schema['properties']['experiment']
    institutions_schema = schema['properties']['institutions']

    snippet = ('<datafield tag="119" ind1=" " ind2=" ">'
               '  <subfield code="a">ASAS-SN</subfield>'
               '  <subfield code="b">NON</subfield>'
               '  <subfield code="c">ASAS-SN</subfield>'
               '  <subfield code="d">ASAS-SN</subfield>'
               '  <subfield code="u">Ohio State U.</subfield>'
               '  <subfield code="z">903092</subfield>'
               '</datafield>')  # record/1617971

    expected_accelerator = {'value': 'NON'}
    expected_legacy_name = 'ASAS-SN'
    expected_experiment = {
        'short_name': 'ASAS-SN',
        'value': 'ASAS-SN',
    }
    expected_institutions = [
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/903092',
            },
            'value': 'Ohio State U.',
        },
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['accelerator'], accelerator_schema) is None
    assert expected_accelerator == result['accelerator']

    assert validate(result['legacy_name'], legacy_name_schema) is None
    assert expected_legacy_name == result['legacy_name']

    assert validate(result['experiment'], experiment_schema) is None
    assert expected_experiment == result['experiment']

    assert validate(result['institutions'], institutions_schema) is None
    assert expected_institutions == result['institutions']
示例#16
0
def test_core_from_multiple_980__a():
    schema = load_schema('experiments')
    subschema = schema['properties']['core']

    snippet = ('<record>'
               '  <datafield tag="980" ind1=" " ind2=" ">'
               '    <subfield code="a">CORE</subfield>'
               '  </datafield>'
               '  <datafield tag="980" ind1=" " ind2=" ">'
               '    <subfield code="a">EXPERIMENT</subfield>'
               '  </datafield>'
               '</record>')  # record/1332131

    expected = True
    result = experiments.do(create_record(snippet))

    assert validate(result['core'], subschema) is None
    assert expected == result['core']
示例#17
0
def test_related_records_from_510__a_w_0_accepts_successors():
    schema = load_schema('experiments')
    subschema = schema['properties']['related_records']
    snippet = ('<datafield tag="510" ind1=" " ind2=" ">'
               '  <subfield code="0">1262631</subfield>'
               '  <subfield code="a">LZ</subfield>'
               '  <subfield code="w">b</subfield>'
               '</datafield>')  # record/1108192

    expected = [{
        'curated_relation': True,
        'record': {
            '$ref': 'http://localhost:5000/api/experiments/1262631',
        },
        'relation': 'successor',
    }]
    result = experiments.do(create_record(snippet))
    assert validate(result['related_records'], subschema) is None
    assert expected == result['related_records']
示例#18
0
def test_project_type_from_double_980__a_recognizes_accelerators():
    schema = load_schema('experiments')
    subschema = schema['properties']['project_type']

    snippet = ('<record>'
               '  <datafield tag="980" ind1=" " ind2=" ">'
               '    <subfield code="a">ACCELERATOR</subfield>'
               '  </datafield>'
               '  <datafield tag="980" ind1=" " ind2=" ">'
               '    <subfield code="a">EXPERIMENT</subfield>'
               '  </datafield>'
               '</record>')  # record/1607855

    expected = [
        'accelerator',
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['project_type'], subschema) is None
    assert expected == result['project_type']
示例#19
0
def test_collaboration_from_710__g_0():
    schema = load_schema('experiments')
    subschema = schema['properties']['collaboration']

    snippet = ('<datafield tag="710" ind1=" " ind2=" ">'
               '  <subfield code="g">DarkSide</subfield>'
               '  <subfield code="0">1108199</subfield>'
               '</datafield>')  # record/1108199

    expected = {
        'curated_relation': True,
        'record': {
            '$ref': 'http://localhost:5000/api/experiments/1108199',
        },
        'value': 'DarkSide',
    }
    result = experiments.do(create_record(snippet))

    assert validate(result['collaboration'], subschema) is None
    assert expected == result['collaboration']
示例#20
0
def test_related_records_from_double_510__a_w_0_accepts_predecessors():
    schema = load_schema('experiments')
    subschema = schema['properties']['related_records']

    snippet = (
        '<record>'
        '  <datafield tag="510" ind1=" " ind2=" ">'
        '    <subfield code="0">1108293</subfield>'
        '    <subfield code="a">XENON</subfield>'
        '    <subfield code="w">a</subfield>'
        '  </datafield>'
        '  <datafield tag="510" ind1=" " ind2=" ">'
        '    <subfield code="0">1386527</subfield>'
        '    <subfield code="a">XENON100</subfield>'
        '    <subfield code="w">a</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1386519

    expected = [
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/experiments/1108293',
            },
            'relation': 'predecessor',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/experiments/1386527',
            },
            'relation': 'predecessor',
        },
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['related_records'], subschema) is None
    assert expected == result['related_records']
示例#21
0
def test_legacy_name_and_institutions_from_119__a_and_multiple_119__u_z():
    schema = load_schema('experiments')
    legacy_name_schema = schema['properties']['legacy_name']
    institutions_schema = schema['properties']['institutions']

    snippet = (
        '<record>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="a">LATTICE-UKQCD</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Cambridge U.</subfield>'
        '    <subfield code="z">902712</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Edinburgh U.</subfield>'
        '    <subfield code="z">902787</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Glasgow U.</subfield>'
        '    <subfield code="z">902823</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Liverpool U.</subfield>'
        '    <subfield code="z">902964</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Oxford U.</subfield>'
        '    <subfield code="z">903112</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Plymouth U.</subfield>'
        '    <subfield code="z">905043</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Southampton U.</subfield>'
        '    <subfield code="z">903212</subfield>'
        '  </datafield>'
        '  <datafield tag="119" ind1=" " ind2=" ">'
        '    <subfield code="u">Swansea U.</subfield>'
        '    <subfield code="z">903240</subfield>'
        '  </datafield>'
        '</record>'
    )  # record/1228417

    expected_legacy_name = 'LATTICE-UKQCD'
    expected_institutions = [
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/902712',
            },
            'value': 'Cambridge U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/902787',
            },
            'value': 'Edinburgh U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/902823',
            },
            'value': 'Glasgow U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/902964',
            },
            'value': 'Liverpool U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/903112',
            },
            'value': 'Oxford U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/905043',
            },
            'value': 'Plymouth U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/903212',
            },
            'value': 'Southampton U.',
        },
        {
            'curated_relation': True,
            'record': {
                '$ref': 'http://localhost:5000/api/institutions/903240',
            },
            'value': 'Swansea U.',
        },
    ]
    result = experiments.do(create_record(snippet))

    assert validate(result['legacy_name'], legacy_name_schema) is None
    assert expected_legacy_name == result['legacy_name']

    assert validate(result['institutions'], institutions_schema) is None
    assert expected_institutions == result['institutions']