Exemple #1
0
def SearchSimilarPatterns(similar_patterns_request):
    """Searches through a file for similar patterns.

  Args:
    similar_patterns_request: SimilarPatternsRequest instance defining the
      search to perform.
  Returns:
    SimilarPatternsResponse instance with the found similar patterns, and no
      extra headers.
  Raises:
    ValueError: No channel selected.
  """
    requested_channels = similar_patterns_request.channel_data_ids

    if not requested_channels:
        raise ValueError('Must select at least one channel')

    file_params = similar_patterns_request.file_params
    waveform_data_source = GetWaveformDataSource(file_params)

    filter_params = similar_patterns_request.filter_params

    data = waveform_data_service.GetChunkDataAsNumpy(waveform_data_source,
                                                     requested_channels,
                                                     filter_params.low_cut,
                                                     filter_params.high_cut,
                                                     filter_params.notch)

    sampling_freq = waveform_data_service.GetSamplingFrequency(
        waveform_data_source, requested_channels)

    seen_events = similar_patterns_request.seen_events
    settings = similar_patterns_request.settings

    similar_patterns_response = similarity.CreateSimilarPatternsResponse(
        data, similar_patterns_request.start_time,
        similar_patterns_request.duration, seen_events, sampling_freq,
        settings)

    return similar_patterns_response, {}
Exemple #2
0
def GetSimilarityCurve(similarity_curve_request):
    """Calculates a similarity curve across a file.

  Args:
    similarity_curve_request: SimilarityCurveRequest instance defining the
      request to perform.

  Returns:
    SimilarityCurveResponse instance with the curve, and no extra headers.
  Raises:
    ValueError: No channel selected.
  """
    requested_channels = similarity_curve_request.channel_data_ids

    if not requested_channels:
        raise ValueError('Must select at least one channel')

    file_params = similarity_curve_request.file_params
    waveform_data_source = GetWaveformDataSource(file_params)

    filter_params = similarity_curve_request.filter_params

    data = waveform_data_service.GetChunkDataAsNumpy(waveform_data_source,
                                                     requested_channels,
                                                     filter_params.low_cut,
                                                     filter_params.high_cut,
                                                     filter_params.notch)

    sampling_freq = waveform_data_service.GetSamplingFrequency(
        waveform_data_source, requested_channels)

    similarity_curve_response = similarity.CreateSimilarityCurveResponse(
        data, similarity_curve_request.start_time,
        similarity_curve_request.duration, sampling_freq)

    return similarity_curve_response, {}