code: def test_dlt_mixed_signs_and_order(make_weekly_data, regressor_signs):
      df, _, _ = make_weekly_data
      raw_regressor_col = ["a", "b", "c", "d", "e", "f"]
      new_regressor_col = [
          raw_regressor_col[idx] for idx in [1, 2, 0, 5, 3, 4]
      ]
      new_regressor_signs = [
          regressor_signs[idx] for idx in [1, 2, 0, 5, 3, 4]
      ]
  
      # mixing ordering of cols in df of prediction
      new_df = df[["response", "week"] + new_regressor_col]
  
      dlt = DLT(
          response_col="response",
          date_col="week",
          regressor_col=raw_regressor_col,
          regressor_sign=regressor_signs,
          seasonality=52,
          seed=8888,
          num_warmup=4000,
          num_sample=4000,
          estimator="stan-mcmc",
      )
      dlt.fit(df)
      coef_df = dlt.get_regression_coefs().set_index("regressor")
      coefs = coef_df.loc[raw_regressor_col, "coefficient"].values
  
      predicted_df_v1 = dlt.predict(df, decompose=True)
      predicted_df_v2 = dlt.predict(new_df, decompose=True)
  
      # mixing ordering of signs
      dlt_new = DLT(
          response_col="response",
          date_col="week",
          regressor_col=new_regressor_col,
          regressor_sign=new_regressor_signs,
          seasonality=52,
          seed=8888,
          num_warmup=4000,
          num_sample=4000,
          estimator="stan-mcmc",
      )
      dlt_new.fit(df)
      new_coef_df = dlt_new.get_regression_coefs().set_index(
          "regressor"
      )
      new_coefs = new_coef_df.loc[
          raw_regressor_col, "coefficient"
      ].values
  
      # coefficients should be as close as  <= 0.01
      assert np.allclose(coefs, new_coefs, atol=1e-2)
  
      predicted_df_v3 = dlt_new.predict(df, decompose=True)
      predicted_df_v4 = dlt_new.predict(new_df, decompose=True)
  
      # relative ratio of regression comp to acutal
      pred_v1 = (
          predicted_df_v1["regression"].values / df["response"].values
      )
      pred_v2 = (
          predicted_df_v2["regression"].values / df["response"].values
      )
      pred_v3 = (
          predicted_df_v3["regression"].values / df["response"].values
      )
      pred_v4 = (
          predicted_df_v4["regression"].values / df["response"].values
      )
  
      # they should be all identical; ordering of signs or columns in prediction df should show not material difference
      # exclude the first one which is used for initialization and hence more unstable
      # exchange columns in prediction should have minimal variance
      assert np.allclose(pred_v1[1:], pred_v2[1:], atol=1e-3)
      assert np.allclose(pred_v3[1:], pred_v4[1:], atol=1e-3)
      # exchange columns in input of fitting should have less variance
      assert np.allclose(pred_v1[1:], pred_v3[1:], atol=1e-1)
  
imports: from copy import copy
  import pytest
  import numpy
  from orbit.models import DLT
  from orbit.constants.constants import PredictionKeys
  from orbit.exceptions import ModelException, PredictionException
label_desc: Use image node_id 11 for calling a global function with example usage: test_dlt_mixed_signs_and_order(make_weekly_data, regressor_signs) without return types