From 671b346af1e0551b9b841bfd2c526106fcecb860 Mon Sep 17 00:00:00 2001 From: Giannis Doukas Date: Thu, 9 Jul 2020 17:23:14 +0100 Subject: [PATCH 1/5] add CWLPNGPlot type --- examples/intro.ipynb | 71 +++++++++++++++++++-------------- ipython2cwl/cwltoolextractor.py | 20 ++++++---- ipython2cwl/iotypes.py | 19 +++++++++ test-requirements.txt | 2 +- tests/test_cwltoolextractor.py | 42 +++++++++++++++++++ tests/test_system_tests.py | 2 +- 6 files changed, 116 insertions(+), 40 deletions(-) diff --git a/examples/intro.ipynb b/examples/intro.ipynb index 6934942..5b9f0a5 100644 --- a/examples/intro.ipynb +++ b/examples/intro.ipynb @@ -31,11 +31,27 @@ "dataset: CWLFilePathInput = 'example.csv'" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To expose a variable a variable as a CWL output we can use the basic output data types or the dumpables. \n", + "\n", + "Let's suppose that the Jupyter Notebook user wants to save the image to a file we can use the CWLFilePathOutput annotation. " + ] + }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "type figure: \n" + ] + }, { "data": { "image/png": "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\n", @@ -52,20 +68,34 @@ "source": [ "data = pd.read_csv(dataset)\n", "# original data\n", - "fig = data.plot()\n", - "\n", "original_image: CWLFilePathOutput = 'original_data.png'\n", "fig.figure.savefig(original_image)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's say that the Jupyter Notebook user does not want to store the image but in the CWL we want that as an output file. We can use the PNGPlot annotation. The ipython2cwl will store that image to a png file for you in a file with the name `new_data.png`. \n", + "\n", + "> For more complicated use cases check CWLDumpable in the [docs](https://ipython2cwl.readthedocs.io/)" + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 28, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Figure(432x288)\n" + ] + }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -78,35 +108,16 @@ ], "source": [ "# transform data\n", + "import matplotlib.pyplot as plt\n", "data.sort_values(by='Random B', ascending=False, inplace=True, ignore_index=True)\n", - "fig = data.plot()\n", - "\n", - "after_transform_data: CWLFilePathOutput = 'new_data.png'\n", - "fig.figure.savefig(after_transform_data)" + "new_data: 'CWLPNGPlot' = plt.plot(data)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\r\n", - " File \"/Users/dks/.pyenv/versions/3.6.10/bin/jupyter-jn2cwl\", line 33, in \r\n", - " sys.exit(load_entry_point('ipython2cwl', 'console_scripts', 'jupyter-jn2cwl')())\r\n", - " File \"/Users/dks/Workspaces/IPython2CWL/ipython2cwl/ipython2cwl.py\", line 32, in main\r\n", - " converter = AnnotatedIPython2CWLToolConverter(script_code)\r\n", - " File \"/Users/dks/Workspaces/IPython2CWL/ipython2cwl/cwltoolextractor.py\", line 133, in __init__\r\n", - " self._tree = ast.fix_missing_locations(extractor.visit(ast.parse(self._code)))\r\n", - " File \"/Users/dks/.pyenv/versions/3.6.10/lib/python3.6/ast.py\", line 35, in parse\r\n", - " return compile(source, filename, mode, PyCF_ONLY_AST)\r\n", - "TypeError: compile() arg 1 must be a string, bytes or AST object\r\n" - ] - } - ], + "outputs": [], "source": [ "# !jupyter-jn2cwl -o compiled_tool intro.ipynb" ] @@ -175,9 +186,7 @@ " }\n", "}\n", "INFO Final process status is success\n", - "`\n", - "\n", - "Currently, in the presented version of the ipython2cwl the tool does not support magic commands but that feature will be added in soon!! for the reason if we write commands in the format \"!ipython2cwl intro.ipynb\" it will not work!" + "`" ] } ], diff --git a/ipython2cwl/cwltoolextractor.py b/ipython2cwl/cwltoolextractor.py index 573ac94..485fc56 100644 --- a/ipython2cwl/cwltoolextractor.py +++ b/ipython2cwl/cwltoolextractor.py @@ -15,7 +15,7 @@ from nbformat.notebooknode import NotebookNode # type: ignore from .iotypes import CWLFilePathInput, CWLBooleanInput, CWLIntInput, CWLStringInput, CWLFilePathOutput, \ - CWLDumpableFile, CWLDumpableBinaryFile, CWLDumpable + CWLDumpableFile, CWLDumpableBinaryFile, CWLDumpable, CWLPNGPlot from .requirements_manager import RequirementsManager with open(os.sep.join([os.path.abspath(os.path.dirname(__file__)), 'templates', 'template.dockerfile'])) as f: @@ -61,9 +61,16 @@ class AnnotatedVariablesExtractor(ast.NodeTransformer): } dumpable_mapper = { - (CWLDumpableFile.__name__,): "with open('{var_name}', 'w') as f:\n\tf.write({var_name})", - (CWLDumpableBinaryFile.__name__,): "with open('{var_name}', 'wb') as f:\n\tf.write({var_name})", + (CWLDumpableFile.__name__,): ( + "with open('{var_name}', 'w') as f:\n\tf.write({var_name})", lambda node: node.target.id + ), + (CWLDumpableBinaryFile.__name__,): ( + "with open('{var_name}', 'wb') as f:\n\tf.write({var_name})", lambda node: node.target.id + ), (CWLDumpable.__name__, CWLDumpable.dump.__name__): None, + (CWLPNGPlot.__name__,): ( + 'import matplotlib.pyplot as plt\nplt.savefig("{var_name}.png")', + lambda node: str(node.target.id) + '.png'), } def __init__(self, *args, **kwargs): @@ -103,12 +110,11 @@ def _visit_input_ann_assign(self, node, annotation): return None def _visit_default_dumper(self, node, dumper): - dump_tree = ast.parse(dumper.format(var_name=node.target.id)) - self.to_dump.append(dump_tree.body) + dump_tree = ast.parse(dumper[0].format(var_name=node.target.id)) self.extracted_variables.append(_VariableNameTypePair( - node.target.id, None, None, None, False, True, node.target.id) + node.target.id, None, None, None, False, True, dumper[1](node)) ) - return self.conv_AnnAssign_to_Assign(node) + return [self.conv_AnnAssign_to_Assign(node), *dump_tree.body] def _visit_user_defined_dumper(self, node): load_ctx = ast.Load() diff --git a/ipython2cwl/iotypes.py b/ipython2cwl/iotypes.py index 6ae99db..b27c40d 100644 --- a/ipython2cwl/iotypes.py +++ b/ipython2cwl/iotypes.py @@ -158,3 +158,22 @@ class CWLDumpableBinaryFile(CWLDumpable): and at the CWL, the data, will be mapped as a output. """ pass + + +class CWLPNGPlot(CWLDumpable): + """Use that annotation to define that after the assigment of that variable the plt.savefig() should + be called + + >>> import matplotlib.pyplot as plt + >>> data = [1,2,3] + >>> new_data: 'CWLPNGPlot' = plt.plot(data) + + the converter will tranform these lines to + + >>> import matplotlib.pyplot as plt + >>> data = [1,2,3] + >>> new_data: 'CWLPNGPlot' = plt.plot(data) + >>> plt.savefig('new_data.png') + + """ + pass diff --git a/test-requirements.txt b/test-requirements.txt index 34e0730..c83ee12 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4,6 +4,6 @@ coveralls>=2.0.0 virtualenv>=3.1.0 gitpython>=3.1.3 docker>=4.2.1 -git+https://github.com/giannisdoukas/cwltool.git#egg=cwltool +cwltool==3.0.20200706173533 pandas==1.0.5 mypy diff --git a/tests/test_cwltoolextractor.py b/tests/test_cwltoolextractor.py index 3c50fa6..247c638 100644 --- a/tests/test_cwltoolextractor.py +++ b/tests/test_cwltoolextractor.py @@ -474,3 +474,45 @@ def test_AnnotatedIPython2CWLToolConverter_custom_dumpables(self): os.remove(f) except FileNotFoundError: pass + + def test_AnnotatedIPython2CWLToolConverter_CWLPNGPlot(self): + code = os.linesep.join([ + "import matplotlib.pyplot as plt", + "new_data: 'CWLPNGPlot' = plt.plot([1,2,3,4])", + ]) + converter = AnnotatedIPython2CWLToolConverter(code) + new_script = converter._wrap_script_to_method( + converter._tree, + converter._variables + ) + try: + os.remove('new_data.png') + except FileNotFoundError: + pass + exec(new_script) + locals()['main']() + self.assertTrue(os.path.isfile('new_data.png')) + os.remove('new_data.png') + + tool = converter.cwl_command_line_tool() + self.assertDictEqual( + { + 'cwlVersion': "v1.1", + 'class': 'CommandLineTool', + 'baseCommand': 'notebookTool', + 'hints': { + 'DockerRequirement': {'dockerImageId': 'jn2cwl:latest'} + }, + 'arguments': ['--'], + 'inputs': {}, + 'outputs': { + 'new_data': { + 'type': 'File', + 'outputBinding': { + 'glob': 'new_data.png' + } + } + }, + }, + tool + ) diff --git a/tests/test_system_tests.py b/tests/test_system_tests.py index d48b4fd..2ca482b 100644 --- a/tests/test_system_tests.py +++ b/tests/test_system_tests.py @@ -29,8 +29,8 @@ def test_repo2cwl(self): self.assertListEqual(['example1.cwl'], [f for f in os.listdir(output_dir) if not f.startswith('.')]) with open(os.path.join(output_dir, 'example1.cwl')) as f: - print(20 * '=') print('workflow file') + print(20 * '=') print(f.read()) print(20 * '=') From 698bd3197419f0f7673c39504a2443c3fa0dbfc7 Mon Sep 17 00:00:00 2001 From: Giannis Doukas Date: Thu, 9 Jul 2020 18:23:53 +0100 Subject: [PATCH 2/5] add figure annotation --- examples/intro.ipynb | 84 +++++++++++++------------------- examples/new_data.png | Bin 24051 -> 22656 bytes ipython2cwl/cwltoolextractor.py | 24 ++++++--- ipython2cwl/iotypes.py | 30 +++++++++++- tests/test_cwltoolextractor.py | 42 ++++++++++++++++ 5 files changed, 123 insertions(+), 57 deletions(-) diff --git a/examples/intro.ipynb b/examples/intro.ipynb index 5b9f0a5..c7cdf8c 100644 --- a/examples/intro.ipynb +++ b/examples/intro.ipynb @@ -17,6 +17,7 @@ "metadata": {}, "outputs": [], "source": [ + "%matplotlib inline\n", "import pandas as pd\n", "import matplotlib\n", "from ipython2cwl.iotypes import CWLFilePathInput, CWLFilePathOutput" @@ -42,16 +43,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "type figure: \n" - ] - }, { "data": { "image/png": "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\n", @@ -67,6 +61,8 @@ ], "source": [ "data = pd.read_csv(dataset)\n", + "fig = data.plot()\n", + "\n", "# original data\n", "original_image: CWLFilePathOutput = 'original_data.png'\n", "fig.figure.savefig(original_image)" @@ -83,16 +79,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 4, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Figure(432x288)\n" - ] - }, { "data": { "image/png": "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\n", @@ -110,6 +99,7 @@ "# transform data\n", "import matplotlib.pyplot as plt\n", "data.sort_values(by='Random B', ascending=False, inplace=True, ignore_index=True)\n", + "plt.figure()\n", "new_data: 'CWLPNGPlot' = plt.plot(data)" ] }, @@ -119,7 +109,8 @@ "metadata": {}, "outputs": [], "source": [ - "# !jupyter-jn2cwl -o compiled_tool intro.ipynb" + "#! jupyter-repo2cwl . -o .\n", + "#!open new_data.png" ] }, { @@ -128,61 +119,54 @@ "source": [ "To compile the presented jupyter notebook to a CWL CommandLineTool run the following commands:\n", "```sh\n", - "mkdir tool\n", - "jupyter-jn2cwl -o tool/tool.tar intro.ipynb\n", - "```\n", - "The tar file contains all the required files. Now we can extract them and build the docker image. \n", - "\n", - "```sh\n", - "cd tool\n", - "tar -xvf tool.tar\n", - "docker build . -t jn2cwl:latest .\n", + "jupyter-repo2cwl . -o .\n", "```\n", "\n", "To test the tool as a cwl we can execute the following command:\n", "```sh\n", - "cwltool tool.cwl --dataset ../example.csv\n", + "cwltool intro.cwl --dataset example.csv\n", "```\n", "\n", "`\n", - "INFO /Users/dks/.pyenv/versions/3.6.10/bin/cwltool 3.0.20200530110633\n", - "INFO Resolved 'tool.cwl' to 'file:///Users/dks/Workspaces/IPython2CWL/examples/compiled_tool/tool.cwl'\n", - "INFO [job tool.cwl] /private/tmp/docker_tmpq5oemdog$ docker \\\n", + "INFO /Users/dks/.pyenv/versions/3.6.10/bin/cwltool 3.0.20200706173533\n", + "INFO Resolved 'intro.cwl' to 'file:///Users/dks/Workspaces/IPython2CWL/examples/intro.cwl'\n", + "INFO [job intro.cwl] /private/tmp/docker_tmp7wzg7cbi$ docker \\\n", " run \\\n", " -i \\\n", - " --mount=type=bind,source=/private/tmp/docker_tmpq5oemdog,target=/mWoQja \\\n", - " --mount=type=bind,source=/private/tmp/docker_tmpombd7mgl,target=/tmp \\\n", - " --mount=type=bind,source=/Users/dks/Workspaces/IPython2CWL/examples/example.csv,target=/var/lib/cwl/stgf1649a28-7fa0-4a19-9b59-54d4839f363e/example.csv,readonly \\\n", - " --workdir=/mWoQja \\\n", + " --mount=type=bind,source=/private/tmp/docker_tmp7wzg7cbi,target=/Oxibvb \\\n", + " --mount=type=bind,source=/private/tmp/docker_tmpje9_oz4b,target=/tmp \\\n", + " --mount=type=bind,source=/Users/dks/Workspaces/IPython2CWL/examples/example.csv,target=/var/lib/cwl/stg5a294c1c-b254-4c5b-b925-ccabe08460ca/example.csv,readonly \\\n", + " --workdir=/Oxibvb \\\n", " --read-only=true \\\n", " --net=none \\\n", " --user=501:20 \\\n", " --rm \\\n", " --env=TMPDIR=/tmp \\\n", - " --env=HOME=/mWoQja \\\n", - " --cidfile=/private/tmp/docker_tmprs7uv65u/20200622183924-428346.cid \\\n", - " jn2cwl:latest \\\n", - " notebookTool \\\n", + " --env=HOME=/Oxibvb \\\n", + " --cidfile=/private/tmp/docker_tmp2wk9z9z0/20200709182229-968352.cid \\\n", + " r2d-2fvar-2ffolders-2fk8-2f800hfw-5fn2md-5f2zb44lhhtqqr0000gn-2ft-2frepo2cwl-5f3n29rdzx-2frepo1594315330 \\\n", + " /app/cwl/bin/intro \\\n", + " -- \\\n", " --dataset \\\n", - " /var/lib/cwl/stgf1649a28-7fa0-4a19-9b59-54d4839f363e/example.csv\n", - "INFO [job tool.cwl] Max memory used: 198MiB\n", - "INFO [job tool.cwl] completed success\n", + " /var/lib/cwl/stg5a294c1c-b254-4c5b-b925-ccabe08460ca/example.csv\n", + "INFO [job intro.cwl] Max memory used: 227MiB\n", + "INFO [job intro.cwl] completed success\n", "{\n", - " \"after_transform_data\": {\n", - " \"location\": \"file:///Users/dks/Workspaces/IPython2CWL/examples/compiled_tool/new_data.png\",\n", + " \"new_data\": {\n", + " \"location\": \"file:///Users/dks/Workspaces/IPython2CWL/examples/new_data.png\",\n", " \"basename\": \"new_data.png\",\n", " \"class\": \"File\",\n", - " \"checksum\": \"sha1$d4d3a83c00d744931753c9aa93981d4a599ed391\",\n", - " \"size\": 40115,\n", - " \"path\": \"/Users/dks/Workspaces/IPython2CWL/examples/compiled_tool/new_data.png\"\n", + " \"checksum\": \"sha1$5d1154b55c741efc5adcd5e200abf626345dda3c\",\n", + " \"size\": 22656,\n", + " \"path\": \"/Users/dks/Workspaces/IPython2CWL/examples/new_data.png\"\n", " },\n", " \"original_image\": {\n", - " \"location\": \"file:///Users/dks/Workspaces/IPython2CWL/examples/compiled_tool/original_data.png\",\n", + " \"location\": \"file:///Users/dks/Workspaces/IPython2CWL/examples/original_data.png\",\n", " \"basename\": \"original_data.png\",\n", " \"class\": \"File\",\n", - " \"checksum\": \"sha1$48966757640d677f3065b4e79ece68e5d4b324dd\",\n", - " \"size\": 52590,\n", - " \"path\": \"/Users/dks/Workspaces/IPython2CWL/examples/compiled_tool/original_data.png\"\n", + " \"checksum\": \"sha1$f5dd2d7ce249b247b48bc31018aa793a342dd120\",\n", + " \"size\": 31326,\n", + " \"path\": \"/Users/dks/Workspaces/IPython2CWL/examples/original_data.png\"\n", " }\n", "}\n", "INFO Final process status is success\n", diff --git a/examples/new_data.png b/examples/new_data.png index bb756b7490588acb8112cb9cd24b930804f9757e..a97e7d3147100c24030184e58bc8eb57d90a586c 100644 GIT binary patch literal 22656 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%0D(vO-y{>D8-SfkW_RbR>iLp4h-ji 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 literal 24051 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 O{$wN+#VbUO0{;X3KSq@R diff --git a/ipython2cwl/cwltoolextractor.py b/ipython2cwl/cwltoolextractor.py index 485fc56..8e58d76 100644 --- a/ipython2cwl/cwltoolextractor.py +++ b/ipython2cwl/cwltoolextractor.py @@ -15,7 +15,7 @@ from nbformat.notebooknode import NotebookNode # type: ignore from .iotypes import CWLFilePathInput, CWLBooleanInput, CWLIntInput, CWLStringInput, CWLFilePathOutput, \ - CWLDumpableFile, CWLDumpableBinaryFile, CWLDumpable, CWLPNGPlot + CWLDumpableFile, CWLDumpableBinaryFile, CWLDumpable, CWLPNGPlot, CWLPNGFigure from .requirements_manager import RequirementsManager with open(os.sep.join([os.path.abspath(os.path.dirname(__file__)), 'templates', 'template.dockerfile'])) as f: @@ -62,14 +62,19 @@ class AnnotatedVariablesExtractor(ast.NodeTransformer): dumpable_mapper = { (CWLDumpableFile.__name__,): ( - "with open('{var_name}', 'w') as f:\n\tf.write({var_name})", lambda node: node.target.id + (None, "with open('{var_name}', 'w') as f:\n\tf.write({var_name})",), + lambda node: node.target.id ), (CWLDumpableBinaryFile.__name__,): ( - "with open('{var_name}', 'wb') as f:\n\tf.write({var_name})", lambda node: node.target.id + (None, "with open('{var_name}', 'wb') as f:\n\tf.write({var_name})"), + lambda node: node.target.id ), (CWLDumpable.__name__, CWLDumpable.dump.__name__): None, (CWLPNGPlot.__name__,): ( - 'import matplotlib.pyplot as plt\nplt.savefig("{var_name}.png")', + (None, '{var_name}[-1].figure.savefig("{var_name}.png")'), + lambda node: str(node.target.id) + '.png'), + (CWLPNGFigure.__name__,): ( + ('import matplotlib.pyplot as plt\nplt.figure()', '{var_name}[-1].figure.savefig("{var_name}.png")'), lambda node: str(node.target.id) + '.png'), } @@ -110,11 +115,18 @@ def _visit_input_ann_assign(self, node, annotation): return None def _visit_default_dumper(self, node, dumper): - dump_tree = ast.parse(dumper[0].format(var_name=node.target.id)) + if dumper[0][0] is None: + pre_code_body = [] + else: + pre_code_body = ast.parse(dumper[0][0].format(var_name=node.target.id)).body + if dumper[0][1] is None: + post_code_body = [] + else: + post_code_body = ast.parse(dumper[0][1].format(var_name=node.target.id)).body self.extracted_variables.append(_VariableNameTypePair( node.target.id, None, None, None, False, True, dumper[1](node)) ) - return [self.conv_AnnAssign_to_Assign(node), *dump_tree.body] + return [*pre_code_body, self.conv_AnnAssign_to_Assign(node), *post_code_body] def _visit_user_defined_dumper(self, node): load_ctx = ast.Load() diff --git a/ipython2cwl/iotypes.py b/ipython2cwl/iotypes.py index b27c40d..08a5dd0 100644 --- a/ipython2cwl/iotypes.py +++ b/ipython2cwl/iotypes.py @@ -162,7 +162,7 @@ class CWLDumpableBinaryFile(CWLDumpable): class CWLPNGPlot(CWLDumpable): """Use that annotation to define that after the assigment of that variable the plt.savefig() should - be called + be called. >>> import matplotlib.pyplot as plt >>> data = [1,2,3] @@ -175,5 +175,33 @@ class CWLPNGPlot(CWLDumpable): >>> new_data: 'CWLPNGPlot' = plt.plot(data) >>> plt.savefig('new_data.png') + + Note that by default if you have multiple plot statements in the same notebook will be written + in the same file. If you want to write them in separates you have to do it in separate figures. + To do that in your notebook you have to create a new figure before the plot command or use the CWLPNGFigure. + + >>> import matplotlib.pyplot as plt + >>> data = [1,2,3] + >>> plt.figure() + >>> new_data: 'CWLPNGPlot' = plt.plot(data) """ pass + + +class CWLPNGFigure(CWLDumpable): + """The same with CWLPNGPlot but creates new figures before plotting. Use that annotation of you don't want + to write multiple graphs in the same image + + >>> import matplotlib.pyplot as plt + >>> data = [1,2,3] + >>> new_data: 'CWLPNGPlot' = plt.plot(data) + + the converter will tranform these lines to + + >>> import matplotlib.pyplot as plt + >>> data = [1,2,3] + >>> plt.figure() + >>> new_data: 'CWLPNGPlot' = plt.plot(data) + >>> plt.savefig('new_data.png') + + """ diff --git a/tests/test_cwltoolextractor.py b/tests/test_cwltoolextractor.py index 247c638..724a030 100644 --- a/tests/test_cwltoolextractor.py +++ b/tests/test_cwltoolextractor.py @@ -516,3 +516,45 @@ def test_AnnotatedIPython2CWLToolConverter_CWLPNGPlot(self): }, tool ) + + def test_AnnotatedIPython2CWLToolConverter_CWLPNGFigure(self): + code = os.linesep.join([ + "import matplotlib.pyplot as plt", + "new_data: 'CWLPNGFigure' = plt.plot([1,2,3,4])", + ]) + converter = AnnotatedIPython2CWLToolConverter(code) + new_script = converter._wrap_script_to_method( + converter._tree, + converter._variables + ) + try: + os.remove('new_data.png') + except FileNotFoundError: + pass + exec(new_script) + locals()['main']() + self.assertTrue(os.path.isfile('new_data.png')) + os.remove('new_data.png') + + tool = converter.cwl_command_line_tool() + self.assertDictEqual( + { + 'cwlVersion': "v1.1", + 'class': 'CommandLineTool', + 'baseCommand': 'notebookTool', + 'hints': { + 'DockerRequirement': {'dockerImageId': 'jn2cwl:latest'} + }, + 'arguments': ['--'], + 'inputs': {}, + 'outputs': { + 'new_data': { + 'type': 'File', + 'outputBinding': { + 'glob': 'new_data.png' + } + } + }, + }, + tool + ) \ No newline at end of file From 6b91b654931d80b75b34961c0e693cdb7f831d3d Mon Sep 17 00:00:00 2001 From: Giannis Doukas Date: Thu, 9 Jul 2020 18:25:57 +0100 Subject: [PATCH 3/5] add matplotlib in test requirements --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test-requirements.txt b/test-requirements.txt index c83ee12..8afa0bd 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7,3 +7,4 @@ docker>=4.2.1 cwltool==3.0.20200706173533 pandas==1.0.5 mypy +matplotlib \ No newline at end of file From fb066551b39bf326a67b1f93f501d93b088cbe25 Mon Sep 17 00:00:00 2001 From: Giannis Doukas Date: Thu, 9 Jul 2020 18:30:30 +0100 Subject: [PATCH 4/5] fix link in docs --- examples/requirements.txt | 2 ++ ipython2cwl/iotypes.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 examples/requirements.txt diff --git a/examples/requirements.txt b/examples/requirements.txt new file mode 100644 index 0000000..5d56fdd --- /dev/null +++ b/examples/requirements.txt @@ -0,0 +1,2 @@ +pandas +matplotlib diff --git a/ipython2cwl/iotypes.py b/ipython2cwl/iotypes.py index 08a5dd0..2d92687 100644 --- a/ipython2cwl/iotypes.py +++ b/ipython2cwl/iotypes.py @@ -189,7 +189,7 @@ class CWLPNGPlot(CWLDumpable): class CWLPNGFigure(CWLDumpable): - """The same with CWLPNGPlot but creates new figures before plotting. Use that annotation of you don't want + """The same with :class:`~ipython2cwl.iotypes.CWLPNGPlot` but creates new figures before plotting. Use that annotation of you don't want to write multiple graphs in the same image >>> import matplotlib.pyplot as plt From 90305e9fc972a9000fd948980106356aff58fc42 Mon Sep 17 00:00:00 2001 From: Giannis Doukas Date: Thu, 9 Jul 2020 19:55:42 +0100 Subject: [PATCH 5/5] fix code style --- ipython2cwl/iotypes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipython2cwl/iotypes.py b/ipython2cwl/iotypes.py index 2d92687..0adf544 100644 --- a/ipython2cwl/iotypes.py +++ b/ipython2cwl/iotypes.py @@ -189,8 +189,8 @@ class CWLPNGPlot(CWLDumpable): class CWLPNGFigure(CWLDumpable): - """The same with :class:`~ipython2cwl.iotypes.CWLPNGPlot` but creates new figures before plotting. Use that annotation of you don't want - to write multiple graphs in the same image + """The same with :class:`~ipython2cwl.iotypes.CWLPNGPlot` but creates new figures before plotting. Use that + annotation of you don't want to write multiple graphs in the same image >>> import matplotlib.pyplot as plt >>> data = [1,2,3]