docs: def calcHairpin(seq, mv_conc=50.0, dv_conc=0.0, dntp_conc=0.8, dna_conc=50.0,
                  temp_c=37, max_loop=30):
      ''' Calculate the hairpin formation thermodynamics of a DNA sequence.
  
      **Note that the maximum length of `seq` is 60 bp.** This is a cap suggested
      by the Primer3 team as the longest reasonable sequence length for which
      a two-state NN model produces reliable results (see primer3/src/libnano/thal.h:50).
  
      Args:
          seq (str): DNA sequence to analyze for hairpin formation
  
          mv_conc (float/int, optional): Monovalent cation conc. (mM)
          dv_conc (float/int, optional): Divalent cation conc. (mM)
          dntp_conc (float/int, optional): dNTP conc. (mM)
          dna_conc (float/int, optional): DNA conc. (nM)
          temp_c (int, optional): Simulation temperature for dG (Celsius)
          max_loop(int, optional): Maximum size of loops in the structure
  
      Returns:
          A `ThermoResult` object with thermodynamic characteristics of the
          hairpin formation.
  
      Raises:
          ``RuntimeError``
  
      '''
      _setThermoArgs(**locals())
      return _THERMO_ANALYSIS.calcHairpin(seq).checkExc()