<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sample(self, bqm, chain_strength=1.0, chain_break_fraction=True, **parameters):
 """Sample the binary quadratic model. Note: At the initial sample(..) call, it will find a suitable embedding and initialize the remaining attributes before sampling the bqm. All following sample(..) calls will reuse that initial embedding. Args: bqm (:obj:`dimod.BinaryQuadraticModel`):
 Binary quadratic model to be sampled from. chain_strength (float, optional, default=1.0):
 Magnitude of the quadratic bias (in SPIN-space) applied between variables to create chains. Note that the energy penalty of chain breaks is 2 * `chain_strength`. chain_break_fraction (bool, optional, default=True):
 If True, a ‘chain_break_fraction’ field is added to the unembedded response which report what fraction of the chains were broken before unembedding. **parameters: Parameters for the sampling method, specified by the child sampler. Returns: :class:`dimod.SampleSet` """

        if self.embedding is None:
            # Find embedding
            child = self.child   # Solve the problem on the child system
            __, target_edgelist, target_adjacency = child.structure
            source_edgelist = list(bqm.quadratic) + [(v, v) for v in bqm.linear]  # Add self-loops for single variables
            embedding = minorminer.find_embedding(source_edgelist, target_edgelist)

            # Initialize properties that need embedding
            super(LazyFixedEmbeddingComposite, self)._set_graph_related_init(embedding=embedding)

        return super(LazyFixedEmbeddingComposite, self).sample(bqm, chain_strength=chain_strength,
                                                               chain_break_fraction=chain_break_fraction, **parameters)