Exemple #1
0
    def get(self, request, dataset_id):
        dataset = DataSet.objects.filter(
            Q(id=dataset_id, type=REAL_WORLD),
            q_shared_or_user_is_owner(request)).first()
        if dataset is None:
            messages.error(request, dataset_not_found_msg(dataset_id))
            return redirect('vadetisweb:detection_real_world_datasets')

        selected_button = get_highcharts_range_button_preselector(
            dataset.granularity)

        detection_serializer = AlgorithmSerializer(
            context={'dataset': dataset})
        injection_serializer = InjectionSerializer(context={
            'dataset_selected': dataset_id,
            'request': request
        })
        threshold_serializer = ThresholdSerializer()

        return Response(
            {
                'dataset': dataset,
                'selected_button': selected_button,
                'detection_serializer': detection_serializer,
                'injection_serializer': injection_serializer,
                'threshold_serializer': threshold_serializer,
            },
            status=status.HTTP_200_OK)
Exemple #2
0
    def post(self, request, dataset_id):

        try:
            serializer = IsolationForestSerializer(context={
                'dataset_selected': dataset_id,
                'request': request
            },
                                                   data=request.data)

            if serializer.is_valid():
                df_from_json, df_class_from_json = get_datasets_from_json(
                    serializer.validated_data['dataset_series_json'])
                try:
                    data = {}
                    settings = get_settings(request)
                    data_series, info = isolation_forest_detection(
                        df_from_json, df_class_from_json,
                        serializer.validated_data, settings)

                    data['series'] = data_series
                    data['info'] = info
                    return Response(data)

                except Exception as e:
                    logging.debug(e)
                    return exception_message_response(e)
            else:
                return Response({'form_errors': serializer.errors},
                                status=status.HTTP_400_BAD_REQUEST)

        except DataSet.DoesNotExist:
            messages.error(request, dataset_not_found_msg(dataset_id))
            return redirect('vadetisweb:index')
    def get(self, request, dataset_id):
        dataset = DataSet.objects.filter(
            Q(id=dataset_id,
              type=SYNTHETIC), q_shared_or_user_is_owner(request)).first()
        if dataset is None:
            messages.error(request, dataset_not_found_msg(dataset_id))
            return redirect('vadetisweb:recommendation_synthetic_datasets')

        recommendation_serializer = RecommendationSerializer(
            context={'dataset': dataset})
        selected_button = get_highcharts_range_button_preselector(
            dataset.granularity)

        return Response(
            {
                'dataset': dataset,
                'selected_button': selected_button,
                'recommendation_serializer': recommendation_serializer,
            },
            status=status.HTTP_200_OK)
    def post(self, request, dataset_id, format=None):
        portlet_serializer = BasePortletSerializer(data=request.data)

        dataset = DataSet.objects.filter(
            Q(id=dataset_id), q_shared_or_user_is_owner(request)).first()
        if dataset is None:
            messages.error(request, dataset_not_found_msg(dataset_id))
            response = Response({}, status=status.HTTP_404_NOT_FOUND)
            response['Location'] = reverse('vadetisweb:index')
            return response

        if portlet_serializer.is_valid(
        ) and request.accepted_renderer.format == 'html':  # rendered template:
            validated_data = portlet_serializer.validated_data
            injection_serializer = InjectionSerializer(context={
                'dataset_selected': dataset_id,
                'request': request
            })
            return Response(
                {
                    'id':
                    validated_data['id'],
                    'title':
                    validated_data['title'],
                    'serializer_formid':
                    'anomaly_injection_form',
                    'serializer_url':
                    reverse('vadetisweb:injection_anomaly', args=[dataset.id]),
                    'serializer':
                    injection_serializer,
                    'serializer_submit_label':
                    'Update',
                },
                status=status.HTTP_200_OK)

        else:
            return Response({}, status=status.HTTP_400_BAD_REQUEST)
Exemple #5
0
    def post(self, request, dataset_id):
        dataset = DataSet.objects.filter(
            Q(id=dataset_id), q_shared_or_user_is_owner(request)).first()
        if dataset is None:
            messages.error(request, dataset_not_found_msg(dataset_id))
            return redirect('vadetisweb:index')

        serializer = AlgorithmSerializer(context={'dataset': dataset},
                                         data=request.data)
        if serializer.is_valid():
            algorithm = serializer.validated_data['algorithm']
            formid = 'anomaly_detection_form'

            if algorithm == LISA_PEARSON:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_lisa_person',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        LisaPearsonSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == LISA_DTW_PEARSON:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_lisa_dtw_person',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        LisaDtwPearsonSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == LISA_SPATIAL:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_lisa_geo',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        LisaGeoDistanceSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == RPCA_HUBER_LOSS:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_rpca_mestimator',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        RPCAMEstimatorLossSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == HISTOGRAM:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_histogram',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        HistogramSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == CLUSTER_GAUSSIAN_MIXTURE:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_cluster',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        ClusterSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == SVM:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_svm', args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        SVMSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            elif algorithm == ISOLATION_FOREST:
                return Response(
                    {
                        'dataset':
                        dataset,
                        'formid':
                        formid,
                        'url':
                        reverse('vadetisweb:detection_isolation_forest',
                                args=[dataset_id]),
                        'class':
                        'pt-0',
                        'serializer':
                        IsolationForestSerializer(context={
                            'dataset_selected': dataset_id,
                            'request': request
                        }),
                        'submit_label':
                        'Run',
                    },
                    status=status.HTTP_200_OK)

            else:
                return Response(
                    template_name='vadetisweb/parts/forms/empty.html',
                    status=status.HTTP_204_NO_CONTENT)
        else:
            logging.error('Algorithm selection form was not valid')
            return Response(template_name='vadetisweb/parts/forms/empty.html',
                            status=status.HTTP_204_NO_CONTENT)