code: def _predict_states(freqs):
      
      from hmmlearn import hmm
      freqs = np.column_stack([np.array(freqs)])
      model = hmm.GaussianHMM(2, covariance_type="full")
      model.fit(freqs)
      states = model.predict(freqs)
      freqs_by_state = collections.defaultdict(list)
      for i, state in enumerate(states):
          freqs_by_state[state].append(freqs[i])
      if np.median(freqs_by_state[0]) > np.median(freqs_by_state[1]):
          states = [0 if s == 1 else 1 for s in states]
      return states
docs: Use frequencies to predict states across a chromosome.
  
      Normalize so heterozygote blocks are assigned state 0 and homozygous
      are assigned state 1.