|
- import unittest
- import os.path
- import sys
-
- COMMON_PRIMITIVES_DIR = os.path.join(os.path.dirname(__file__), 'common-primitives')
- # NOTE: This insertion should appear before any code attempting to resolve or load primitives,
- # so the git submodule version of `common-primitives` is looked at first.
- sys.path.insert(0, COMMON_PRIMITIVES_DIR)
-
- TEST_PRIMITIVES_DIR = os.path.join(os.path.dirname(__file__), 'data', 'primitives')
- sys.path.insert(0, TEST_PRIMITIVES_DIR)
-
- from common_primitives.dataset_to_dataframe import DatasetToDataFramePrimitive
-
- from test_primitives.file_reader import DummyImageReaderPrimitive
-
- from d3m import container, utils
-
-
- class TestDummyImageReaderPrimitive(unittest.TestCase):
- def test_basic(self):
- dataset_doc_path = os.path.abspath(
- os.path.join(os.path.dirname(__file__), 'data', 'datasets', 'image_dataset_1', 'datasetDoc.json')
- )
-
- dataset = container.Dataset.load('file://{dataset_doc_path}'.format(dataset_doc_path=dataset_doc_path))
-
- dataframe_hyperparams_class = DatasetToDataFramePrimitive.metadata.get_hyperparams()
- dataframe_primitive = DatasetToDataFramePrimitive(
- hyperparams=dataframe_hyperparams_class.defaults().replace({'dataframe_resource': '0'})
- )
- dataframe = dataframe_primitive.produce(inputs=dataset).value
-
- image_hyperparams_class = DummyImageReaderPrimitive.metadata.get_hyperparams()
- image_primitive = DummyImageReaderPrimitive(
- hyperparams=image_hyperparams_class.defaults().replace({'return_result': 'replace'})
- )
- images_names = image_primitive.produce(inputs=dataframe).value
-
- self.assertEqual(images_names.iloc[0]['filename'][0], '001_HandPhoto_left_01.jpg')
- self.assertEqual(images_names.iloc[1]['filename'][0], 'cifar10_bird_1.png')
- self.assertEqual(images_names.iloc[2]['filename'][0], 'cifar10_bird_2.png')
- self.assertEqual(images_names.iloc[3]['filename'][0], 'mnist_0_2.png')
- self.assertEqual(images_names.iloc[4]['filename'][0], 'mnist_1_1.png')
-
- self._test_metadata(images_names.metadata)
-
- def _test_metadata(self, metadata):
- self.assertEqual(
- utils.to_json_structure(metadata.to_internal_simple_structure()),
- [
- {
- 'metadata': {
- 'dimension': {
- 'length': 5,
- 'name': 'rows',
- 'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularRow'],
- },
- 'schema': 'https://metadata.datadrivendiscovery.org/schemas/v0/container.json',
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/Table',
- 'https://metadata.datadrivendiscovery.org/types/FilesCollection',
- ],
- 'structural_type': 'd3m.container.pandas.DataFrame',
- },
- 'selector': [],
- },
- {
- 'metadata': {
- 'dimension': {
- 'length': 1,
- 'name': 'columns',
- 'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularColumn'],
- }
- },
- 'selector': ['__ALL_ELEMENTS__'],
- },
- {
- 'metadata': {
- 'dimension': {
- 'length': 1,
- 'name': 'rows',
- 'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularRow'],
- },
- 'location_base_uris': '__NO_VALUE__',
- 'media_types': '__NO_VALUE__',
- 'name': 'filename',
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- 'structural_type': 'd3m.container.numpy.ndarray',
- },
- 'selector': ['__ALL_ELEMENTS__', 0],
- },
- {
- 'metadata': {
- 'dimension': {
- 'length': 1,
- 'name': 'columns',
- 'semantic_types': ['https://metadata.datadrivendiscovery.org/types/TabularColumn'],
- }
- },
- 'selector': ['__ALL_ELEMENTS__', 0, '__ALL_ELEMENTS__'],
- },
- {
- 'metadata': {'structural_type': 'str'},
- 'selector': ['__ALL_ELEMENTS__', 0, '__ALL_ELEMENTS__', '__ALL_ELEMENTS__'],
- },
- {
- 'metadata': {
- 'image_reader_metadata': {'foobar': 42},
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- },
- 'selector': [0, 0],
- },
- {
- 'metadata': {
- 'image_reader_metadata': {'foobar': 42},
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- },
- 'selector': [1, 0],
- },
- {
- 'metadata': {
- 'image_reader_metadata': {'foobar': 42},
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- },
- 'selector': [2, 0],
- },
- {
- 'metadata': {
- 'image_reader_metadata': {'foobar': 42},
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- },
- 'selector': [3, 0],
- },
- {
- 'metadata': {
- 'image_reader_metadata': {'foobar': 42},
- 'semantic_types': [
- 'https://metadata.datadrivendiscovery.org/types/PrimaryKey',
- 'http://schema.org/ImageObject',
- 'https://metadata.datadrivendiscovery.org/types/Table',
- ],
- },
- 'selector': [4, 0],
- },
- ],
- )
-
-
- if __name__ == '__main__':
- unittest.main()
|