code: def from_independent_strains(cls, strains, stresses, eq_stress=None,
                                   vasp=False, tol=1e-10):
          
          strain_states = [tuple(ss) for ss in np.eye(6)]
          ss_dict = get_strain_state_dict(strains, stresses, eq_stress=eq_stress)
          if not set(strain_states) <= set(ss_dict.keys()):
              raise ValueError("Missing independent strain states: "
                               "{}".format(set(strain_states) - set(ss_dict)))
          if len(set(ss_dict.keys()) - set(strain_states)) > 0:
              warnings.warn("Extra strain states in strain-stress pairs "
                            "are neglected in independent strain fitting")
          c_ij = np.zeros((6, 6))
          for i in range(6):
              istrains = ss_dict[strain_states[i]]["strains"]
              istresses = ss_dict[strain_states[i]]["stresses"]
              for j in range(6):
                  c_ij[i, j] = np.polyfit(istrains[:, i], istresses[:, j], 1)[0]
          if vasp:
              c_ij *= -0.1  # Convert units/sign convention of vasp stress tensor
          c = cls.from_voigt(c_ij)
          c = c.zeroed(tol)
          return c
docs: Constructs the elastic tensor least-squares fit of independent strains
          Args:
              strains (list of Strains): list of strain objects to fit
              stresses (list of Stresses): list of stress objects to use in fit
                  corresponding to the list of strains
              eq_stress (Stress): equilibrium stress to use in fitting
              vasp (boolean): flag for whether the stress tensor should be
                  converted based on vasp units/convention for stress
              tol (float): tolerance for removing near-zero elements of the
                  resulting tensor