code: def load(fp, cls=BinaryQuadraticModel, vartype=None):
      
      pattern = re.compile(_LINE_REGEX)
      vartype_pattern = re.compile(_VARTYPE_HEADER_REGEX)
  
      triplets = []
      for line in fp:
          triplets.extend(pattern.findall(line))
  
          vt = vartype_pattern.findall(line)
          if vt:
              if vartype is None:
                  vartype = vt[0]
              else:
                  if isinstance(vartype, str):
                      vartype = Vartype[vartype]
                  else:
                      vartype = Vartype(vartype)
                  if Vartype[vt[0]] != vartype:
                      raise ValueError("vartypes from headers and/or inputs do not match")
  
      if vartype is None:
          raise ValueError("vartype must be provided either as a header or as an argument")
  
      bqm = cls.empty(vartype)
  
      for u, v, bias in triplets:
          if u == v:
              bqm.add_variable(int(u), float(bias))
          else:
              bqm.add_interaction(int(u), int(v), float(bias))
  
      return bqm
docs: Load a COOrdinate formatted binary quadratic model from a file.