Esempio n. 1
0
def test_big_pipeline():
    pytest.importorskip('pygraphviz')
    filename = join(get_test_data_path(), 'video', 'obama_speech.mp4')
    video = VideoStim(filename)
    visual_nodes = [(FrameSamplingFilter(every=15), [
        (TesseractConverter(), [LengthExtractor()]),
        VibranceExtractor(),
        'BrightnessExtractor',
    ])]
    audio_nodes = [(VideoToAudioConverter(),
                    [WitTranscriptionConverter(),
                     'LengthExtractor'], 'video_to_audio')]
    graph = Graph()
    graph.add_nodes(visual_nodes)
    graph.add_nodes(audio_nodes)
    results = graph.run(video, merge=False)
    result = merge_results(results, format='wide', extractor_names='multi')
    # Test that pygraphviz outputs a file
    drawfile = next(tempfile._get_candidate_names())
    graph.draw(drawfile)
    assert exists(drawfile)
    os.remove(drawfile)
    assert ('LengthExtractor', 'text_length') in result.columns
    assert ('VibranceExtractor', 'vibrance') in result.columns
    # assert not result[('onset', '')].isnull().any()
    assert 'text[negotiations]' in result['stim_name'].values
    assert 'frame[90]' in result['stim_name'].values
Esempio n. 2
0
def test_small_pipeline_json_spec3():
    pytest.importorskip('pytesseract')
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    stim = ImageStim(filename)
    nodes = {
        "roots": [{
            "transformer": "GoogleVisionAPITextConverter",
            "parameters": {
                "num_retries": 5,
                "max_results": 10
            },
            "children": [{
                "transformer": "LengthExtractor"
            }]
        }]
    }
    graph = Graph(nodes)
    result = list(graph.run([stim], merge=False))
    history = result[0].history.to_df()
    assert history.shape == (2, 8)
    assert history.iloc[0]['result_class'] == 'TextStim'
    result = merge_results(result, format='wide', extractor_names='multi')
    assert (0, 'text[Exit\n]') in result['stim_name'].values
    assert ('LengthExtractor', 'text_length') in result.columns
    assert result[('LengthExtractor', 'text_length')].values[0] == 4
Esempio n. 3
0
def test_graph_smoke_test():
    filename = join(get_test_data_path(), 'image', 'obama.jpg')
    stim = ImageStim(filename)
    nodes = [(BrightnessExtractor(), [], 'brightness_node')]
    graph = Graph(nodes)
    result = graph.run(stim, format='wide', extractor_names='multi')
    brightness = result[('brightness_node', 'brightness')].values[0]
    assert_almost_equal(brightness, 0.556134, 5)
Esempio n. 4
0
def test_stim_results():
    stim = TextStim(text='some, example the text.')
    g = Graph()
    g.add_nodes(
        ['PunctuationRemovalFilter', 'TokenRemovalFilter', 'TokenizingFilter'],
        mode='vertical')
    final_stims = g.run(stim, merge=False)
    assert len(final_stims) == 2
    assert final_stims[1].text == 'text'

    n = Node('PunctuationRemovalFilter', name='punc')
    g = Graph([n])
    g.add_nodes(['TokenizingFilter', 'LengthExtractor'], parent=n)
    results = g.run(stim)
    assert isinstance(results, pd.DataFrame)
    assert results['LengthExtractor#text_length'][0] == 21
    with pytest.raises(ValueError):
        g.run(stim, invalid_results='fail')
Esempio n. 5
0
def test_convert_to_long_graph():
    image_dir = join(get_test_data_path(), 'image')
    stim = ImageStim(join(image_dir, 'obama.jpg'))
    ext = GoogleVisionAPIFaceExtractor()
    g = Graph([ext])
    timeline = g.run(stim)
    long_timeline = to_long_format(timeline)
    assert 'feature' in long_timeline.columns
    assert 'extractor' in long_timeline.columns
    assert 'history' in long_timeline.columns
Esempio n. 6
0
def test_save_graph():
    graph = Graph(
        spec=join(get_test_data_path(), 'graph', 'simple_graph.json'))
    filename = tempfile.mkstemp()[1]
    graph.save(filename)
    assert os.path.exists(filename)
    same_graph = Graph(spec=filename)
    os.remove(filename)
    assert graph.to_json() == same_graph.to_json()
    img = join(get_test_data_path(), 'image', 'button.jpg')
    res = same_graph.run(img)
    assert res['LengthExtractor#text_length'][0] == 4
Esempio n. 7
0
def test_adding_nodes():
    graph = Graph()
    graph.add_children(['VibranceExtractor', 'BrightnessExtractor'])
    assert len(graph.roots) == 2
    assert len(graph.nodes) == 2
    for r in graph.roots:
        assert len(r.children) == 0
    img = ImageStim(join(get_test_data_path(), 'image', 'button.jpg'))
    results = graph.run(img, merge=False)
    assert len(results) == 2
    assert_almost_equal(results[0].to_df()['vibrance'][0], 841.577274, 5)
    assert_almost_equal(results[1].to_df()['brightness'][0], 0.746965, 5)

    graph = Graph()
    graph.add_chain(['PunctuationRemovalFilter', 'LengthExtractor'])
    txt = TextStim(text='the.best.text.')
    results = graph.run(txt, merge=False)
    assert len(results) == 1
    assert results[0].to_df()['text_length'][0] == 11

    with pytest.raises(ValueError):
        graph.add_nodes(['LengthExtractor'], mode='invalid')
Esempio n. 8
0
def test_small_pipeline2():
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    nodes = [BrightnessExtractor(), VibranceExtractor()]
    graph = Graph(nodes)
    result = list(graph.run([filename], merge=False))
    history = result[0].history.to_df()
    assert history.shape == (1, 8)
    result = merge_results(result, format='wide', extractor_names='multi')
    assert ('BrightnessExtractor', 'brightness') in result.columns
    brightness = result[('BrightnessExtractor', 'brightness')].values[0]
    vibrance = result[('VibranceExtractor', 'vibrance')].values[0]
    assert_almost_equal(brightness, 0.746965, 5)
    assert ('VibranceExtractor', 'vibrance') in result.columns
    assert_almost_equal(vibrance, 841.577274, 5)
Esempio n. 9
0
def test_small_pipeline():
    pytest.importorskip('pytesseract')
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    stim = ImageStim(filename)
    nodes = [(TesseractConverter(), [LengthExtractor()])]
    graph = Graph(nodes)
    result = list(graph.run([stim], merge=False))
    history = result[0].history.to_df()
    assert history.shape == (2, 8)
    assert history.iloc[0]['result_class'] == 'TextStim'
    result = merge_results(result, format='wide', extractor_names='prepend')
    assert (0, 'text[Exit]') in result['stim_name'].values
    assert 'LengthExtractor#text_length' in result.columns
    assert result['LengthExtractor#text_length'].values[0] == 4
Esempio n. 10
0
def test_small_pipeline_json_spec2():
    pytest.importorskip('pytesseract')
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    stim = ImageStim(filename)
    spec = join(get_test_data_path(), 'graph', 'simple_graph.json')
    graph = Graph(spec=spec)
    result = list(graph.run([stim], merge=False))
    history = result[0].history.to_df()
    assert history.shape == (2, 8)
    assert history.iloc[0]['result_class'] == 'TextStim'
    result = merge_results(result, format='wide', extractor_names='multi')
    assert (0, 'text[Exit]') in result['stim_name'].values
    assert ('LengthExtractor', 'text_length') in result.columns
    assert result[('LengthExtractor', 'text_length')].values[0] == 4
Esempio n. 11
0
def test_big_pipeline_json():
    pytest.importorskip('pygraphviz')
    filename = join(get_test_data_path(), 'video', 'obama_speech.mp4')
    video = VideoStim(filename)
    nodes = {
        "roots": [{
            "transformer":
            "FrameSamplingFilter",
            "parameters": {
                "every": 15
            },
            "children": [{
                "transformer": "TesseractConverter",
                "children": [{
                    "transformer": "LengthExtractor"
                }]
            }, {
                "transformer": "VibranceExtractor"
            }, {
                "transformer": "BrightnessExtractor"
            }]
        }, {
            "transformer":
            "VideoToAudioConverter",
            "children": [{
                "transformer": "WitTranscriptionConverter",
                "children": [{
                    "transformer": "LengthExtractor"
                }]
            }]
        }]
    }
    graph = Graph(nodes)
    results = graph.run(video, merge=False)
    result = merge_results(results, format='wide', extractor_names='multi')
    # Test that pygraphviz outputs a file
    drawfile = next(tempfile._get_candidate_names())
    graph.draw(drawfile)
    assert exists(drawfile)
    os.remove(drawfile)
    assert ('LengthExtractor', 'text_length') in result.columns
    assert ('VibranceExtractor', 'vibrance') in result.columns
    # assert not result[('onset', '')].isnull().any()
    assert 'text[negotiations]' in result['stim_name'].values
    assert 'frame[90]' in result['stim_name'].values
Esempio n. 12
0
def test_to_json():
    nodes = {
        "roots": [{
            "transformer":
            "FrameSamplingFilter",
            "parameters": {
                "every": 15
            },
            "children": [{
                "transformer": "TesseractConverter",
                "children": [{
                    "transformer": "LengthExtractor"
                }]
            }, {
                "transformer": "VibranceExtractor"
            }, {
                "transformer": "BrightnessExtractor"
            }]
        }, {
            "transformer":
            "VideoToAudioConverter",
            "children": [{
                "transformer": "WitTranscriptionConverter",
                "children": [{
                    "transformer": "LengthExtractor"
                }]
            }]
        }]
    }
    graph = Graph(nodes)
    assert graph.to_json() == nodes
    graph = Graph(
        spec=join(get_test_data_path(), 'graph', 'simple_graph.json'))
    simple_graph = {
        "roots": [{
            "transformer": "TesseractConverter",
            "children": [{
                "transformer": "LengthExtractor"
            }]
        }]
    }
    assert graph.to_json() == simple_graph
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    res = graph.run(filename)
    assert res['LengthExtractor#text_length'][0] == 4
Esempio n. 13
0
def test_big_pipeline():
    filename = join(get_test_data_path(), 'video', 'obama_speech.mp4')
    video = VideoStim(filename)
    visual_nodes = [(FrameSamplingConverter(every=15), [
                        (TesseractConverter(), [LengthExtractor()]),
                        VibranceExtractor(), 'BrightnessExtractor',
                    ])]
    audio_nodes = [(VideoToAudioConverter(), [
                        WitTranscriptionConverter(), 'LengthExtractor'],
                        'video_to_audio')]
    graph = Graph()
    graph.add_nodes(visual_nodes)
    graph.add_nodes(audio_nodes)
    result = graph.run(video)
    assert ('LengthExtractor', 'text_length') in result.columns
    assert ('VibranceExtractor', 'vibrance') in result.columns
    # assert not result[('onset', '')].isnull().any()
    assert 'text[negotiations]' in result['stim'].values
    assert 'frame[90]' in result['stim'].values
Esempio n. 14
0
def test_small_pipeline_json_spec():
    pytest.importorskip('pytesseract')
    filename = join(get_test_data_path(), 'image', 'button.jpg')
    stim = ImageStim(filename)
    nodes = {
        "roots": [{
            "transformer":
            "TesseractConverter",
            "children": [{
                "transformer": "LengthExtractor",
                "children": []
            }]
        }]
    }
    graph = Graph(nodes)
    result = list(graph.run([stim], merge=False))
    history = result[0].history.to_df()
    assert history.shape == (2, 8)
    assert history.iloc[0]['result_class'] == 'TextStim'
    result = merge_results(result)
    assert (0, 'text[Exit]') in result['stim_name'].values
    assert ('LengthExtractor', 'text_length') in result.columns
    assert result[('LengthExtractor', 'text_length')].values[0] == 4