def __init__(self, sample, eps, minpts, amount_clusters = None, ccore = True, **kwargs):
self.__sample_pointer = sample      <EOL>self.__eps = eps                    <EOL>self.__minpts = minpts              <EOL>self.__amount_clusters = amount_clusters<EOL>self.__ordering = None<EOL>self.__clusters = None<EOL>self.__noise = None<EOL>self.__optics_objects = None<EOL>self.__data_type = kwargs.get('<STR_LIT>', '<STR_LIT>')<EOL>self.__kdtree = None<EOL>self.__ccore = ccore<EOL>self.__neighbor_searcher = self.__create_neighbor_searcher(self.__data_type)<EOL>if self.__ccore:<EOL><INDENT>self.__ccore = ccore_library.workable()<EOL><DEDENT>
!
        @brief Constructor of clustering algorithm OPTICS.

        @param[in] sample (list): Input data that is presented as a list of points (objects), where each point is represented by list or tuple.
        @param[in] eps (double): Connectivity radius between points, points may be connected if distance between them less than the radius.
        @param[in] minpts (uint): Minimum number of shared neighbors that is required for establishing links between points.
        @param[in] amount_clusters (uint): Optional parameter where amount of clusters that should be allocated is specified.
                    In case of usage 'amount_clusters' connectivity radius can be greater than real, in other words, there is place for mistake
                    in connectivity radius usage.
        @param[in] ccore (bool): if True than DLL CCORE (C++ solution) will be used for solving the problem.
        @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'data_type').

        <b>Keyword Args:</b><br>
            - data_type (string): Data type of input sample 'data' that is processed by the algorithm ('points', 'distance_matrix').