def test_enumerated_defaults():
    """Make sure deprecated arguments and defaults work as expected."""
    assert EnumeratedProcessor("f", "b").max_candidates == 1000
    assert EnumeratedProcessor("f", "b",
                               max_candidates=12).max_candidates == 12
    assert EnumeratedProcessor("f", "b", max_size=12).max_candidates == 12

    with pytest.raises(ValueError):
        EnumeratedProcessor("f", "b", max_size=1, max_candidates=1)
示例#2
0
def test_enumerated_serialization(valid_enumerated_data):
    """Ensure a serialized EnumeratedProcessor looks sane."""
    processor: EnumeratedProcessor = EnumeratedProcessor.build(
        valid_enumerated_data)
    serialized = processor.dump()
    serialized['id'] = valid_enumerated_data['id']
    assert serialized == valid_serialization_output(valid_enumerated_data)
示例#3
0
def test_simple_enumerated_deserialization(valid_enumerated_data):
    """Ensure a deserialized EnumeratedProcessor looks sane."""
    processor: EnumeratedProcessor = EnumeratedProcessor.build(
        valid_enumerated_data)
    assert processor.name == 'my enumerated processor'
    assert processor.description == 'enumerates all the things'
    assert processor.max_size == 10
示例#4
0
"""Tests for citrine.informatics.processors serialization."""
import pytest

from citrine.informatics.processors import Processor, GridProcessor, EnumeratedProcessor, \
    MonteCarloProcessor


@pytest.fixture(params=[
    MonteCarloProcessor("test", "mc optimizer test"),
    EnumeratedProcessor("test", "test_enumeration", max_size=64),
    GridProcessor("test", "test_grid", grid_sizes={
        "foo": 2,
        "bar": 5
    })
])
def processor(request):
    return request.param


def test_deser_from_parent(processor):
    # Serialize and deserialize the processor, making sure they are round-trip serializable
    data = processor.dump()
    data.update({"status": "READY"})
    deserialized = Processor.build(data)
    assert processor == deserialized
    "{} passed!".format(processor)  # check str method


def test_invalid_eq(processor):
    other = None
    assert not processor == other
from citrine.informatics.objectives import ScalarMaxObjective, ScalarMinObjective
from citrine.informatics.processors import GridProcessor, EnumeratedProcessor
from citrine.informatics.scores import LIScore, EIScore
from citrine.informatics.reports import ModelSummary, FeatureImportanceReport

informatics_string_data = [
    (ScalarRangeConstraint('z'), "<ScalarRangeConstraint 'z'>"),
    (CategoricalConstraint('x', []), "<CategoricalConstraint 'x'>"),
    (ProductDesignSpace('my design space', 'does some things',
                        []), "<ProductDesignSpace 'my design space'>"),
    (EnumeratedDesignSpace('enumerated', 'desc', [],
                           []), "<EnumeratedDesignSpace 'enumerated'>"),
    (ScalarMaxObjective('z', 1.0, 10.0), "<ScalarMaxObjective 'z'>"),
    (ScalarMinObjective('z', 1.0, 10.0), "<ScalarMinObjective 'z'>"),
    (GridProcessor('my thing', 'does a thing',
                   dict(x=1)), "<GridProcessor 'my thing'>"),
    (EnumeratedProcessor('my enumerated thing', 'enumerates',
                         10), "<EnumeratedProcessor 'my enumerated thing'>"),
    (LIScore("LI(z)", "score for z", [], []), "<LIScore 'LI(z)'>"),
    (EIScore("EI(x)", "score for x", [], [], []), "<EIScore 'EI(x)'>"),
    (FeatureImportanceReport("reflectivity",
                             {}), "<FeatureImportanceReport 'reflectivity'>"),
    (ModelSummary("my model", "ML Model", [], [], {}, [],
                  "predictor name"), "<ModelSummary 'my model'>"),
]


@pytest.mark.parametrize('obj,repr', informatics_string_data)
def test_str_representation(obj, repr):
    assert str(obj) == repr
def enumerated_processor() -> EnumeratedProcessor:
    """Build an EnumeratedProcessor for testing."""
    return EnumeratedProcessor('my enumerated thing', 'enumerates the things',
                               10)