Source code for process_run_chicago

#!/usr/bin/env python

"""
.. See the NOTICE file distributed with this work for additional information
   regarding copyright ownership.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
"""

from __future__ import print_function

import argparse

from basic_modules.workflow import Workflow
from utils import logger

from CHiC.tool.run_chicago import ChicagoTool

#################################################

[docs]class process_run_chicago(Workflow): """ Function for processing capture Hi-C fastq files. Files are aligned, filtered and analysed for Cpature Hi-C peaks """ def __init__(self, configuration=None): """ initiate the class Parameters: ----------- Configuration: dict dictinoary with parameters for different tools, indicating how to run each of them """ logger.info("Initiating process_runChicago") if configuration is None: configuration = {} self.configuration.update(configuration)
[docs] def run(self, input_files, metadata, output_files): """ This main function that run the chicago pipeline with runChicago.R wrapper Parameters ---------- input_files: dict location with the .chinput files. chinput_file: str in case there is one input file chinput_file: comma separated list in case there is more than one input file. metadata: dict Input metadata, str output: dict output file locations Returns ------- output_files : dict Folder location with the output files output_metadata: dict Output metadata for the associated files in output_files """ try: chicago_caller = ChicagoTool(self.configuration) output_files_generated, output_metadata = chicago_caller.run( input_files, metadata, output_files) return output_files_generated, output_metadata except IOError: logger.info("chicago failed to generate output files =(")
################################################################ def main_json(config, in_metadata, out_metadata): """ Alternative main function This function launches the app using configuration written in two json files: config.json and metadata.json """ # 1. Instantiate and launch the App print("1. Instantiate and launch the App") from apps.jsonapp import JSONApp app = JSONApp() results = app.launch(process_run_chicago, config, in_metadata, out_metadata) # 2. The App has finished print("2. Execution finished; see " + out_metadata) print(results) return results ############################################################### if __name__ == "__main__": #set up the command line parameters PARSER = argparse.ArgumentParser( description="Chicago algorithm for capture Hi-C peak detection") PARSER.add_argument("--config", help="Configuration file") PARSER.add_argument( "--in_metadata", help="Location of metadata file") PARSER.add_argument( "--out_metadata", help="Location of output metadata file") PARSER.add_argument( "--local", action="store_const", const=True, default=False) #Get matching parameters from the command line ARGS = PARSER.parse_args() CONFIG = ARGS.config IN_METADATA = ARGS.in_metadata OUT_METADATA = ARGS.out_metadata LOCAL = ARGS.local if LOCAL: import sys sys._run_from_cmdl = True # pylint: disable=protected-access RESULTS = main_json(CONFIG, IN_METADATA, OUT_METADATA) print(RESULTS)