<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def isInside(self, pts, In='(X,Y,Z)', log='any'):
 """ Return a 2D array of bool Equivalent to applying isInside to each Struct Check self.lStruct[0].isInside? for details Arg log determines how Struct with multiple Limits are treated - 'all' : True only if pts belong to all elements - 'any' : True if pts belong to any element """

        msg = "Arg pts must be a 1D or 2D np.ndarray !"
        assert isinstance(pts,np.ndarray) and pts.ndim in [1,2], msg
        msg = "Arg log must be in ['any','all']"
        assert log in ['any','all'], msg
        if pts.ndim==1:
            msg = "Arg pts must contain the coordinates of a point !"
            assert pts.size in [2,3], msg
            pts = pts.reshape((pts.size,1)).astype(float)
        else:
            msg = "Arg pts must contain the coordinates of points !"
            assert pts.shape[0] in [2,3], pts
        nP = pts.shape[1]

        ind = np.zeros((self._dStruct['nObj'],nP), dtype=bool)
        lStruct = self.lStruct
        for ii in range(0,self._dStruct['nObj']):
            indi = _GG._Ves_isInside(pts,
                                     lStruct[ii].Poly,
                                     Lim=lStruct[ii].Lim,
                                     nLim=lStruct[ii].noccur,
                                     VType=lStruct[ii].Id.Type,
                                     In=In, Test=True)
            if lStruct[ii].noccur>1:
                if log=='any':
                    indi = np.any(indi,axis=0)
                else:
                    indi = np.all(indi,axis=0)
            ind[ii,:] = indi
        return ind