Closed motey closed 1 week ago
@mlazaratos After assessment with Justus we concluded that this is needs a new feature. At the moment we are not able to upload parameter specific files. This new feature needs some major modification on backend and frontend :/ Modification happens in Branch issue1-fix
@motey Built from that branch and face the default interface mask with "MetaKegg is a tool for everyone..."
and in console
INFO: 127.0.0.1:37510 - "POST /api/pipeline HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 406, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in call await super().call(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response await self.app(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/starlette/routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function return await dependant.call(*values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/slowapi/extension.py", line 734, in async_wrapper response = await func(args, **kwargs) # type: ignore ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/fastapi_routes.py", line 165, in initialize_a_metakegg_pipeline_run_definition pipeline_params = MetaKeggPipelineInputParamsValues( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/pydantic/main.py", line 212, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for MetaKeggPipelineInputParamsValues global_params.input_file_path Field required [type=missing, input_value={'input_label': []}, input_type=dict] For further information visit https://errors.pydantic.dev/2.9/v/missing
@mlazaratos PLease have some patience with us :) as we said its a "major" modification and it just "happens". When its "happened" we will inform you here. I think we need at least 2 days for this.
Backend work mostly done will hand over issue to frontend/justus
Sorry, I thought it was adressed. It's already impressive how fast you work on this.
@JTaeger Backend tests are now running successful. All major bugs for the new feature should be smashed in the backend. The fun is yours now :)
@motey I know it's WIP but just reporting in case you didn't catch it yet. In the latest commit 48810b48521b6777746dc93bbdbdd6213dcb43c7 the input file gets immediately deleted after uploading
We just merged the changes into the main branch. @mlazaratos can you please give it a testrun and validate the new feature. You can close the issue here if successful
@motey @JTaeger
Connected to https://github.com/DZD-eV-Diabetes-Research/meta-kegg-web-wrapper/issues/2#issue-2683697736
I tried Multiple inputs before going to methylation. In multiple inputs I had input_label -> 1,2,3
Upload input file and methylation file (very nice). add Methylation Genes param and hit run and get the error
There seems to be an error: object of type 'bool' has no len()
PipelineDefinition: { "ticket": { "id": "81853bbe-a410-4af3-9a3f-586931ecf882" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [ "1", "2", "3" ],
I noticed similar behavior with the parameter "Benjamini Threshold"
If I input 1 file and perform "Gene expression" with "Benjamini Threshold" = 0.00001 (value that will fail the input) I get the error ""
If I then proceed to another pipeline, the field "Benjamini Threshold" appears empty, but the value that I put in before is still passed, and is not flushed, or takes the default.
It seems like the values are retained if ones switches between pipelines and not reassign manually. In the case of input_label is not reassignable in other tabs.
@motey @JTaeger
Follow up:
If I refresh with a new ticket, I still get the same error, but probably due to "input_label": [] ?
There seems to be an error: object of type 'bool' has no len()
Detailed error Traceback (most recent call last): File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 46, in run self._run_pipeline() File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 196, in _run_pipeline self._method_params = self._gather_analyse_method_params( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 125, in _gather_analyse_method_params and len( ^^^^ TypeError: object of type 'bool' has no len()
PipelineDefinition: { "ticket": { "id": "4d12b38b-2da3-4aff-82e4-21e98d4beec8" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false }, "method_specific_params": { "methylation_genes": "methylation_gene_symbol", "benjamini_threshold": null } }, "pipeline_analyses_method": { "name": "single_input_with_methylation", "display_name": "Methylated genes", "internal_id": 5, "desc": "Perform Single Input Analysis with Methylation." }, "pipeline_input_file_names": { "input_file_path": [ "single_input_genes.xlsx" ], "methylation_path": [ "methylation.csv" ] }, "pipeline_output_zip_file_name": null, "created_at_utc": "2024-11-22T16:12:55.929641Z", "started_at_utc": "2024-11-22T16:13:23.007075Z", "finished_at_utc": null } metakegg.PipelineAsync Params: { "input_file_path": [ "/tmp/mekewe_cache/4d12b38b2da34aff82e421e98d4beec8/input/input_file_path/single_input_genes.xlsx" ], "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false } metakegg.PipelineAsync.single_input_with_methylation Params: NotInitialized
@motey @JTaeger
Connected to #2 (comment)
I tried Multiple inputs before going to methylation. In multiple inputs I had input_label -> 1,2,3
Upload input file and methylation file (very nice). add Methylation Genes param and hit run and get the error
There seems to be an error: object of type 'bool' has no len()
PipelineDefinition: { "ticket": { "id": "81853bbe-a410-4af3-9a3f-586931ecf882" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [ "1", "2", "3" ],
I noticed similar behavior with the parameter "Benjamini Threshold"
If I input 1 file and perform "Gene expression" with "Benjamini Threshold" = 0.00001 (value that will fail the input) I get the error ""
If I then proceed to another pipeline, the field "Benjamini Threshold" appears empty, but the value that I put in before is still passed, and is not flushed, or takes the default.
It seems like the values are retained if ones switches between pipelines and not reassign manually. In the case of input_label is not reassignable in other tabs.
Could you please more precise/formal how to reproduce this error.
@motey
Reproducing a simplified case of this
I noticed similar behavior with the parameter "Benjamini Threshold"
If I input 1 file and perform "Gene expression" with "Benjamini Threshold" = 0.00001 (value that will fail the input) I get the error ""
If I then proceed to another pipeline, the field "Benjamini Threshold" appears empty, but the value that I put in before is still passed, and is not flushed, or takes the default.
It seems like the values are retained if ones switches between pipelines and not reassign manually. In the case of input_label is not reassignable in other tabs.
Built from commit 35a3e3fef1c92ded449f611b76a83a7fc33fcf04
Upload file https://github.com/dife-bioinformatics/metaKEGG/blob/dd997dad666b46f329853b77b7c98a572db55d9a/examples/single_input_genes.xlsx-> Analysis method "Gene expression" (method 1 - default) -> all default params --> works
Without refreshing or anything, change parameter "Benjamini Threshold" to 0.0001 and run --> error "There seems to be an error: Could not detect pathways in the input file with the selected default & user settings. Check your input file and/or settings."
This is to be expected because the Benjamini column in the input file is 0.0212391
Then deleting the value "0.0001" from the "Benjamini Threshold" field and run --> Here the user would expect the filter to return to default. I get the following error. Does the fact that the default is None cause this behavior?
There seems to be an error: 1 validation error for single_input_genesParams benjamini_threshold Input should be a valid number, unable to parse string as a number [type=float_parsing, input_value='', input_type=str]
Traceback (most recent call last): File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 46, in run self._run_pipeline() File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 196, in _run_pipeline self._method_params = self._gather_analyse_method_params( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 155, in _gather_analyse_method_params return MetaKeggMethodParamModel(**params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/pydantic/main.py", line 212, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for single_input_genesParams benjamini_threshold Input should be a valid number, unable to parse string as a number [type=float_parsing, input_value='', input_type=str] For further information visit https://errors.pydantic.dev/2.9/v/float_parsing
PipelineDefinition: { "ticket": { "id": "0d5da763-8993-4cd6-a457-21b5d187dcf6" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false }, "method_specific_params": { "benjamini_threshold": "" } }, "pipeline_analyses_method": { "name": "single_input_genes", "display_name": "Gene expression", "internal_id": 1, "desc": "Perform the Single Input Analysis for Gene IDs." }, "pipeline_input_file_names": { "input_file_path": [ "single_input_genes.xlsx" ] }, "pipeline_output_zip_file_name": "output-metakegg-single_input_genes_2024-11-25-10-21-02.zip", "created_at_utc": "2024-11-25T09:18:23.349380Z", "started_at_utc": "2024-11-25T09:38:38.194978Z", "finished_at_utc": null } metakegg.PipelineAsync Params: { "input_file_path": [ "/tmp/mekewe_cache/0d5da76389934cd6a45721b5d187dcf6/input/input_file_path/single_input_genes.xlsx" ], "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false } metakegg.PipelineAsync.single_input_genes Params: NotInitialized
--> If I then type in the field the value of "0.1" it works again as expected since 0.0212391 < 0.1 and benjamini value must be < Benjamini Threshold
So it looks like if one types a value runs , and then empties the field to go back to default the error gets triggered
@motey Process for bug generation. Built from commit https://github.com/DZD-eV-Diabetes-Research/meta-kegg-web-wrapper/commit/35a3e3fef1c92ded449f611b76a83a7fc33fcf04
Selecting method "Methylated genes"
Upload file single_input_genes.xlsx Upload methylation file methylation.csv
add parameter value "methylation_gene_symbol" in the field of "Methylation Genes" (mandatory)
all other parameters default --> error
There seems to be an error: object of type 'bool' has no len()
Traceback (most recent call last): File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 46, in run self._run_pipeline() File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 196, in _run_pipeline self._method_params = self._gather_analyse_method_params( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 125, in _gather_analyse_method_params and len( ^^^^ TypeError: object of type 'bool' has no len()
PipelineDefinition: { "ticket": { "id": "28614c33-5b77-4871-b5df-2635d548cc5a" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false }, "method_specific_params": { "methylation_genes": "methylation_gene_symbol" } }, "pipeline_analyses_method": { "name": "single_input_with_methylation", "display_name": "Methylated genes", "internal_id": 5, "desc": "Perform Single Input Analysis with Methylation." }, "pipeline_input_file_names": { "input_file_path": [ "single_input_genes.xlsx" ], "methylation_path": [ "methylation.csv" ] }, "pipeline_output_zip_file_name": null, "created_at_utc": "2024-11-25T11:21:46.822707Z", "started_at_utc": "2024-11-25T11:22:26.225293Z", "finished_at_utc": null } metakegg.PipelineAsync Params: { "input_file_path": [ "/tmp/mekewe_cache/28614c335b774871b5df2635d548cc5a/input/input_file_path/single_input_genes.xlsx" ], "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false } metakegg.PipelineAsync.single_input_with_methylation Params: NotInitialized
please re-test all bug from this issue and close if all fixed.
commit f8d4a57bdc5fddc1d01f41fee2312f007f86f375 fixes
@motey
Reproducing a simplified case of this
I noticed similar behavior with the parameter "Benjamini Threshold" If I input 1 file and perform "Gene expression" with "Benjamini Threshold" = 0.00001 (value that will fail the input) I get the error "" If I then proceed to another pipeline, the field "Benjamini Threshold" appears empty, but the value that I put in before is still passed, and is not flushed, or takes the default. It seems like the values are retained if ones switches between pipelines and not reassign manually. In the case of input_label is not reassignable in other tabs.
Built from commit 35a3e3f
Upload file https://github.com/dife-bioinformatics/metaKEGG/blob/dd997dad666b46f329853b77b7c98a572db55d9a/examples/single_input_genes.xlsx-> Analysis method "Gene expression" (method 1 - default) -> all default params --> works
Without refreshing or anything, change parameter "Benjamini Threshold" to 0.0001 and run --> error "There seems to be an error: Could not detect pathways in the input file with the selected default & user settings. Check your input file and/or settings."
This is to be expected because the Benjamini column in the input file is 0.0212391
Then deleting the value "0.0001" from the "Benjamini Threshold" field and run --> Here the user would expect the filter to return to default. I get the following error. Does the fact that the default is None cause this behavior?
There seems to be an error: 1 validation error for single_input_genesParams benjamini_threshold Input should be a valid number, unable to parse string as a number [type=float_parsing, input_value='', input_type=str]
Traceback (most recent call last): File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 46, in run self._run_pipeline() File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 196, in _run_pipeline self._method_params = self._gather_analyse_method_params( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/backend/mekeweserver/pipeline_worker/pipeline_processor.py", line 155, in _gather_analyse_method_params return MetaKeggMethodParamModel(params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mlazaratos/Projects/meta-kegg-web-wrapper/venv/lib/python3.11/site-packages/pydantic/main.py", line 212, in init validated_self = self.pydantic_validator**.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for single_input_genesParams benjamini_threshold Input should be a valid number, unable to parse string as a number [type=float_parsing, input_value='', input_type=str] For further information visit https://errors.pydantic.dev/2.9/v/float_parsing
PipelineDefinition: { "ticket": { "id": "0d5da763-8993-4cd6-a457-21b5d187dcf6" }, "state": "running", "place_in_queue": null, "error": null, "error_traceback": null, "output_log": null, "result_path": null, "pipeline_params": { "global_params": { "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false }, "method_specific_params": { "benjamini_threshold": "" } }, "pipeline_analyses_method": { "name": "single_input_genes", "display_name": "Gene expression", "internal_id": 1, "desc": "Perform the Single Input Analysis for Gene IDs." }, "pipeline_input_file_names": { "input_file_path": [ "single_input_genes.xlsx" ] }, "pipeline_output_zip_file_name": "output-metakegg-single_input_genes_2024-11-25-10-21-02.zip", "created_at_utc": "2024-11-25T09:18:23.349380Z", "started_at_utc": "2024-11-25T09:38:38.194978Z", "finished_at_utc": null } metakegg.PipelineAsync Params: { "input_file_path": [ "/tmp/mekewe_cache/0d5da76389934cd6a45721b5d187dcf6/input/input_file_path/single_input_genes.xlsx" ], "input_label": [], "sheet_name_paths": "pathways", "sheet_name_genes": "gene_metrics", "genes_column": "gene_symbol", "log2fc_column": "logFC", "compounds_list": null, "save_to_eps": false } metakegg.PipelineAsync.single_input_genes Params: NotInitialized
--> If I then type in the field the value of "0.1" it works again as expected since 0.0212391 < 0.1 and benjamini value must be < Benjamini Threshold
So it looks like if one types a value runs , and then empties the field to go back to default the error gets triggered
@mlazaratos Could you please format you post a little bit :D this is unreadable for me https://www.markdownguide.org/cheat-sheet/
@mlazaratos Could you please format you post a little bit :D this is unreadable for me https://www.markdownguide.org/cheat-sheet/
You're right, I shouldn't have quoted the whole thing
ah, now i got it; i thought this a new bug-reproduce order :D
Via @mlazaratos
I found a major bug regarding the methylation and miRNA pipelines, where the
Methylation Pathsingle_input_with_methylation_quantification
.methylation_path
single_input_with_methylation_and_miRNA
.methylation_path
single_input_with_methylation_quantification
.methylation_path
MiRNA Pathsingle_input_with_miRNA
.miRNA_path
single_input_with_methylation_and_miRNA
.miRNA_path
single_input_with_miRNA_quantification
.miRNA_path
params are engaged. The params are file path for the methylation or miRNA files. Similar to input_file_path which the main input with the gene and pathway info.
Although I can upload the methylation or miRNA files with the handly buttons, there is not way to connect the additional uploaded file to the Methylation Path or MiRNA Path
The result is
My first thoughts were to either delete the field from Step3 and assume the second file is the one that will be assigned to Methylation Path or MiRNA Path, just as the first input is assigned to input_file_path.
In the case Methylated + miRNA target genes pipeline, we have to mae the order clear since it requires both.
Another way would be a check box next to the uploaded file to declare if it is pathways/genes , methylation or miRNA