code: def test_linear_skat_on_big_matrix():
      # dat <- as.matrix(read.csv('hail/src/test/resources/skat_genotype_matrix.csv', header=FALSE))
      # cov = read.csv('hail/src/test/resources/skat_phenotypes.csv', header=FALSE)
      # weights <- rep(1, 100)
      # null_model <- SKAT_Null_Model(cov$V1 ~ 1, out_type="C")
      # result <- SKAT(dat, null_model, method="davies", weights=weights)
      #
      # cat(result$p.value, result$Q)
      #
      #
      # SKAT expects rows to be samples, so we transpose from the original input
      expected_p_value = 4.072862e-57
      expected_Q_value = 125247
  
      mt = hl.import_matrix_table(
          resource("skat_genotype_matrix_variants_are_rows.csv"),
          delimiter=",",
          row_fields={"row_idx": hl.tint64},
          row_key=["row_idx"],
      )
      mt = mt.key_cols_by(col_id=hl.int64(mt.col_id))
  
      ht = hl.import_table(
          resource("skat_phenotypes.csv"),
          no_header=True,
          types={"f0": hl.tfloat},
      )
      ht = ht.add_index("idx")
      ht = ht.key_by("idx")
      mt = mt.annotate_cols(pheno=ht[mt.col_key].f0)
      mt = mt.annotate_globals(group=1)
      ht = hl._linear_skat(
          mt.group, hl.literal(1), mt.pheno, mt.x, [1.0]
      )
      results = ht.collect()
  
      assert len(results) == 1
      result = results[0]
      assert result.size == 100
      assert result.q_stat == pytest.approx(expected_Q_value, rel=5e-7)
      assert result.p_value == pytest.approx(expected_p_value, rel=5e-8)
      assert result.fault == 0
  
imports: import hail
  import pytest
  from hail.utils import FatalError, HailUserError
  from ..helpers import resource, test_timeout, qobtest
label_desc: Use image node_id 9 for calling a global function with example usage: test_linear_skat_on_big_matrix() without return types