code: def _get_asym_comb(self,d):
          
          
          # get data
          d0 = d[0]; d1 = d[2]; d2 = d[1]; d3 = d[3]
          
          # pre-calcs
          r_denom = d0*d3
          r_denom[r_denom==0] = np.nan
          r = np.sqrt((d1*d2/r_denom))
          r[r==-1] = np.nan
      
          # combined asymmetry
          asym_comb = (r-1)/(r+1)
          
          # check for div by zero
          d0[d0==0] = np.nan                  
          d1[d1==0] = np.nan
          d2[d2==0] = np.nan
          d3[d3==0] = np.nan
          
          # error in combined asymmetry
          asym_comb_err = r*np.sqrt(1/d1 + 1/d0 + 1/d3 + 1/d2)/np.square(r+1)
          
          # replace nan with zero 
          asym_comb[np.isnan(asym_comb)] = 0.
          asym_comb_err[np.isnan(asym_comb_err)] = 0.
          
          return [asym_comb,asym_comb_err]
docs: Find the combined asymmetry for slr runs. Elegant 4-counter method.