Metadata-Version: 2.1
Name: dimodmock
Version: 1.0.0
Summary: Utilities for mocking dimod Samplers
Home-page: UNKNOWN
Author: Konrad Jałowiecki
Author-email: dexter2206@gmail.com
License: UNKNOWN
Description: [![Build Status](https://travis-ci.org/dexter2206/dimod-mock.svg?branch=master)](https://travis-ci.org/dexter2206/dimod-mock)
        
        # dimod-mock
        
        dimod-mock is a package for mocking dimod-based samplers, including the structured ones.
        It lets you easily test your routines before trying them out on sophisticated samplers or real hardware.
        
        # Installation
        
        To install run
        
        ```
        pip install dimodmock
        ```
        
        # Usage
        
        ## Mocking simple samplers
        
        Suppose you created some instance of your sampler (derived from `dimod.Sampler`). This is how you create its mock
        
        ```python
        import dimodmock
        
        sampler = ... # Create your sampler here
        mock = dimodmock.SamplerMock.from_sampler(sampler)
        ```
        
        The mock object created this way has the following properties identical to the source sampler
        - `properties`
        - `parameters`
        
        The following methods are implemented:
        - `sample`
        - `sample_qubo`
        - `sample_ising`
        
        and have the same interface as the source sampler. In particular, call to those methods will fail
        if unknown parameters are passed as keyword arguments. The returned samples are choosen randomly at uniform.
        By default, the returned samplesets have one sample. See below for overriding this behaviour.
        
        ## Mocking structured samplers
        
        You can also mock structured samplers. In this case use `dimodmock.StructuredMock.from_sampler`.
        In addition to the characteristics described above, the `StructuredMock` has also the following properties, identical
        to the source sampler:
        - `edgelist`
        - `nodelist`
        
        Also, `sample`, `sample_qubo`, `sample_ising` methods respect the samplers structure, so trying to solve
        mismatching instance will fail.
        
        ## Support for `num_reads`
        
        By default, samplesets returned by all mocks contain only one sample. However, if the source sampler supports `num_reads`
        property (which is true in particular for `DWaveSampler`), it will be respected by the mock and the correct number
        of samples will be returned.
        
        ## Advanced usage
        It is also possible to create mocks by specifying their properties in their initializer. For `SimpleMock` you need to specify 
        `properties` and `parameters`. For `StructuredMock` you also need to specify `edgelist` and `nodelist`.
        
        For instance, suppose you want to create a mock of a structured sampler defined on full graph of 3 nodes,
        having a `max_num_reads` property and `num_reads` parameter. Here is how to do it:
        
        ```python
        from dimodmock import StructuredSampler
        
        mock = StructuredSampler(
            nodelist=[0, 1, 2], 
            edgelist=[(0, 1), (1, 2), (2, 0)], 
            properties={"max_num_reads": 10},
            parameters={"num_reads": ["max_num_reads"]},
        )
        ```
        
        
        # Caveats
        
        Currently mocks don't validate keyword arguments passed to `sample*` methods. 
        So, in the example above, mock will happily accept `num_reads=100`. In the future, additional validation might be
        implemented.
        
        
        # Reporting issues
        Please report any issues you encounter using Github's issue tracker.
        
Keywords: dimod mock testing
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
