def transform_joe(t, a1, a2, theta):
 def _check_args(a1, a2, theta):
  condth = (theta > 0)
  conda1 = ((a1 > 0) and (a1 <= 1))
  conda2 = ((a2 > 0) and (a2 <= 1))
  return (condth and conda1 and conda2)
 if (not np.all(_check_args(a1, a2, theta))):
  raise ValueError('invalid args')
 transf = (1 - ((((a1 * (1 - t)) ** ((-1.0) / theta)) + ((a2 * t) ** ((-1.0) / theta))) ** (- theta)))
 return transf

def transform_joe ( t , a1 , a2 , theta ) : def _check_args ( a1 , a2 , theta ) : condth = ( theta > 0 ) conda1 = ( ( a1 > 0 ) and ( a1 <= 1 ) ) conda2 = ( ( a2 > 0 ) and ( a2 <= 1 ) ) return ( condth and conda1 and conda2 ) if ( not np . all ( _check_args ( a1 , a2 , theta ) ) ) : raise ValueError ( 'invalid args' ) transf = ( 1 - ( ( ( ( a1 * ( 1 - t ) ) ** ( ( - 1.0 ) / theta ) ) + ( ( a2 * t ) ** ( ( - 1.0 ) / theta ) ) ) ** ( - theta ) ) ) return transf
asymmetric negative logistic model of joe 1990 special case: a1=a2=1 : symmetric negative logistic of galambos 1978 restrictions: - theta in - a1 .