code: def test_fit_model_via_design_matrix_with_weights(data_with_weights):
      """Tests ``fit_model_via_design_matrix`` with weights."""
      df = data_with_weights["df"]
      design_mat_info = data_with_weights["design_mat_info"]
      x_train = design_mat_info["x_mat"]
      y_train = design_mat_info["y"]
      sample_weight = df["w"]
  
      # Ridge without weights
      ml_model = fit_model_via_design_matrix(
          x_train=x_train,
          y_train=y_train,
          fit_algorithm="ridge",
          sample_weight=None,
      )
  
      assert np.round(ml_model.intercept_, 0) == 15.0
      assert ml_model.coef_[0].round() == 0.0
      assert ml_model.coef_[1].round() == 0.0
  
      # Ridge with weights
      # Here we expect to get the coeffcients from: ``y[(n//2):] = 20 + -20 * x2[(n//2):]``
      # This is becauase the weights are zero in the first half
      # Therefore only the second equation (given above) will be relevant
      ml_model = fit_model_via_design_matrix(
          x_train=x_train,
          y_train=y_train,
          fit_algorithm="ridge",
          sample_weight=sample_weight,
      )
  
      """
      # commented out graphical test
      # we expect to see two trends for y w.r.t x2
      from plotly import graph_objects as go
      trace = go.Scatter(
                  x=df["x2"].values,
                  y=df["y"].values,
                  mode="markers")
      data = [trace]
      fig = go.Figure(data)
      fig.show()
      """
      assert np.round(ml_model.intercept_, 0) == 20.0
      assert ml_model.coef_[0].round() == 0.0
      assert ml_model.coef_[1].round() == -2.0
  
imports: import warnings
  import numpy
  import pandas
  import pytest
  import scipy
  from pandas.testing import assert_frame_equal
  from patsy import dmatrices
  from greykite.algo.common.ml_models import breakdown_regression_based_prediction
  from greykite.algo.common.ml_models import design_mat_from_formula
  from greykite.algo.common.ml_models import fit_ml_model
  from greykite.algo.common.ml_models import fit_ml_model_with_evaluation
  from greykite.algo.common.ml_models import fit_model_via_design_matrix
  from greykite.algo.common.ml_models import get_h_mat
  from greykite.algo.common.ml_models import get_intercept_col_from_design_mat
  from greykite.algo.common.ml_models import predict_ml
  from greykite.algo.common.ml_models import predict_ml_with_uncertainty
  from greykite.algo.uncertainty.conditional.conf_interval import predict_ci
  from greykite.common.constants import ERR_STD_COL
  from greykite.common.constants import QUANTILE_SUMMARY_COL
  from greykite.common.constants import TimeFeaturesEnum
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.evaluation import calc_pred_err
  from greykite.common.features.timeseries_features import build_time_features_df
  from greykite.common.features.timeseries_features import fourier_series_multi_fcn
  from greykite.common.features.timeseries_features import get_fourier_col_name
  from greykite.common.python_utils import assert_equal
  from greykite.common.testing_utils import gen_sliced_df
label_desc: Use image node_id 9 for calling a global function with example usage: test_fit_model_via_design_matrix_with_weights(data_with_weights) without return types