{"action":"created","issue":{"url":"https://api.github.com/repos/ewels/MultiQC/issues/300","repository_url":"https://api.github.com/repos/ewels/MultiQC","labels_url":"https://api.github.com/repos/ewels/MultiQC/issues/300/labels{/name}","comments_url":"https://api.github.com/repos/ewels/MultiQC/issues/300/comments","events_url":"https://api.github.com/repos/ewels/MultiQC/issues/300/events","html_url":"https://github.com/ewels/MultiQC/issues/300","id":177648099,"number":300,"title":"Generic module for custom output","user":{"login":"ewels","id":465550,"avatar_url":"https://avatars.githubusercontent.com/u/465550?v=3","gravatar_id":"","url":"https://api.github.com/users/ewels","html_url":"https://github.com/ewels","followers_url":"https://api.github.com/users/ewels/followers","following_url":"https://api.github.com/users/ewels/following{/other_user}","gists_url":"https://api.github.com/users/ewels/gists{/gist_id}","starred_url":"https://api.github.com/users/ewels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewels/subscriptions","organizations_url":"https://api.github.com/users/ewels/orgs","repos_url":"https://api.github.com/users/ewels/repos","events_url":"https://api.github.com/users/ewels/events{/privacy}","received_events_url":"https://api.github.com/users/ewels/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ewels/MultiQC/labels/core:%20back%20end","name":"core: back end","color":"84b6eb"},{"url":"https://api.github.com/repos/ewels/MultiQC/labels/module:%20new","name":"module: new","color":"bfe5bf"},{"url":"https://api.github.com/repos/ewels/MultiQC/labels/question","name":"question","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/ewels/MultiQC/milestones/11","html_url":"https://github.com/ewels/MultiQC/milestones/v0.9","labels_url":"https://api.github.com/repos/ewels/MultiQC/milestones/11/labels","id":1963846,"number":11,"title":"v0.9","description":"Issues to complete for the version 0.9 release of MultiQC.","creator":{"login":"ewels","id":465550,"avatar_url":"https://avatars.githubusercontent.com/u/465550?v=3","gravatar_id":"","url":"https://api.github.com/users/ewels","html_url":"https://github.com/ewels","followers_url":"https://api.github.com/users/ewels/followers","following_url":"https://api.github.com/users/ewels/following{/other_user}","gists_url":"https://api.github.com/users/ewels/gists{/gist_id}","starred_url":"https://api.github.com/users/ewels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewels/subscriptions","organizations_url":"https://api.github.com/users/ewels/orgs","repos_url":"https://api.github.com/users/ewels/repos","events_url":"https://api.github.com/users/ewels/events{/privacy}","received_events_url":"https://api.github.com/users/ewels/received_events","type":"User","site_admin":false},"open_issues":24,"closed_issues":1,"state":"open","created_at":"2016-08-25T20:52:05Z","updated_at":"2016-09-23T12:51:22Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2016-09-18T12:08:30Z","updated_at":"2016-10-25T06:56:43Z","closed_at":null,"body":"MultiQC relies on standardised output from tools to be able to parse and plot data. This unfortunately excludes results from any scripts that have non-standard output (eg. custom R scripts).\r\n\r\nAt the moment, we get around this problem by writing [a plugin](https://github.com/ewels/MultiQC_NGI) with modules specific to our pipelines, but I guess this is probably a little intimidating to others.\r\n\r\nInstead, I could write a core MultiQC module that uses new MultiQC config options to define how to parse (super simple) input files:\r\n\r\n`multiqc_config.yaml`:\r\n```yaml\r\ncustom_data:\r\n  - my_custom_data_type:\r\n      # fn: '*multiqc_scatter.csv'  # Put this in `search_patterns.yaml` / `sp`\r\n      format: csv                   # Default: detect from extension\r\n      section: Analysis Type        # Default: custom_data key / 'Script Output'\r\n      title: My Results             # Default: None\r\n      plot_type: scatter            # Default: Guess from data type (see below)\r\n      pconfig:                      # Default: None\r\n        title: My Scatter Plot\r\n        xlab: X Title\r\n        ylab: Y Title\r\n```\r\n`my_data_multiqc_scatter.csv`:\r\n```\r\nSample-1, 1.24, 0.34\r\nSample-2, 8.13, 6.19\r\nSample-3, 2.48, 0.12\r\n```\r\n\r\nInput files would have to follow pretty strict formatting guidelines, but I could put examples of these into the docs.\r\n\r\nAny thoughts from anyone? Would this be useful? Are there better ways to implement it?"},"comment":{"url":"https://api.github.com/repos/ewels/MultiQC/issues/comments/255952693","html_url":"https://github.com/ewels/MultiQC/issues/300#issuecomment-255952693","issue_url":"https://api.github.com/repos/ewels/MultiQC/issues/300","id":255952693,"user":{"login":"ewels","id":465550,"avatar_url":"https://avatars.githubusercontent.com/u/465550?v=3","gravatar_id":"","url":"https://api.github.com/users/ewels","html_url":"https://github.com/ewels","followers_url":"https://api.github.com/users/ewels/followers","following_url":"https://api.github.com/users/ewels/following{/other_user}","gists_url":"https://api.github.com/users/ewels/gists{/gist_id}","starred_url":"https://api.github.com/users/ewels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ewels/subscriptions","organizations_url":"https://api.github.com/users/ewels/orgs","repos_url":"https://api.github.com/users/ewels/repos","events_url":"https://api.github.com/users/ewels/events{/privacy}","received_events_url":"https://api.github.com/users/ewels/received_events","type":"User","site_admin":false},"created_at":"2016-10-25T06:56:43Z","updated_at":"2016-10-25T06:56:43Z","body":"I think we can probably do a fairly good job of guessing plot type based on the file structure..\r\n\r\n* `num`:`num` = line\r\n* `str`:`num` = bar plot\r\n* `str`:`num`:`num` = scatter plot\r\n* `str`: `num`:`(num)*n`, with header row = bar plots (multiple samples)\r\n* Header row, `ncols = nrows`, rest numeric = heatmap\r\n* Header row, `ncols != nrows` = table\r\n\r\n..probably needs refinement"}}
{"actor":{"display_login":"ewels"}}