<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def LOS_PRMin(Ds, dus, kPOut=None, Eps=1.e-12, Test=True):
 """ Compute the point on the LOS where the major radius is minimum """

    if Test:
        assert Ds.ndim in [1,2] and 3 in Ds.shape and Ds.shape==dus.shape
        assert kPOut is None or (Ds.ndim==1 and not hasattr(kPOut,'__iter__')) or (Ds.ndim==2 and kPOut.shape==(Ds.size/3,))

    v = Ds.ndim==1
    if v:
        Ds = Ds.reshape((3,1))
        dus = dus.reshape((3,1))
        if kPOut is not None:
            kPOut = np.array([kPOut])

    kRMin = np.nan*np.ones((Ds.shape[1],))
    uparN = np.sqrt(dus[0,:]**2 + dus[1,:]**2)

    # Case with u vertical
    ind = uparN>Eps
    kRMin[~ind] = 0.

    # Else
    kRMin[ind] = -(dus[0,ind]*Ds[0,ind]+dus[1,ind]*Ds[1,ind])/uparN[ind]**2

    # Check
    kRMin[kRMin<=0.] = 0.
    if kPOut is not None:
        kRMin[kRMin>kPOut] = kPOut[kRMin>kPOut]

    if v:
        kRMin = kRMin[0]
    return kRMin