def _build_connections(self, process_list, ignore_dependencies,<EOL>auto_dependency):
logger.debug("<STR_LIT>")<EOL>logger.debug("<STR_LIT>")<EOL>logger.debug("<STR_LIT>")<EOL>logger.debug("<STR_LIT>".format(process_list))<EOL>for p, con in enumerate(process_list):<EOL><INDENT>logger.debug("<STR_LIT>".format(p, con))<EOL>in_lane = con["<STR_LIT:input>"]["<STR_LIT>"]<EOL>out_lane = con["<STR_LIT>"]["<STR_LIT>"]<EOL>logger.debug("<STR_LIT>".format(p, in_lane))<EOL>logger.debug("<STR_LIT>".format(p, out_lane))<EOL>if out_lane > self.lanes:<EOL><INDENT>self.lanes = out_lane<EOL><DEDENT>p_in_name, p_out_name, out_directives = self._get_process_names(<EOL>con, p)<EOL>if p_out_name not in self.process_map:<EOL><INDENT>logger.error(colored_print(<EOL>"<STR_LIT>"<EOL>.format(p_out_name), "<STR_LIT>"))<EOL>guess_process(p_out_name, self.process_map)<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>out_process = self.process_map[p_out_name](template=p_out_name)<EOL>if out_directives:<EOL><INDENT>out_process.update_attributes(out_directives)<EOL><DEDENT>input_suf = "<STR_LIT>".format(in_lane, p)<EOL>output_suf = "<STR_LIT>".format(out_lane, p)<EOL>logger.debug("<STR_LIT>"<EOL>"<STR_LIT>".format(<EOL>p, input_suf, output_suf))<EOL>out_process.set_main_channel_names(input_suf, output_suf, out_lane)<EOL>if p_in_name != "<STR_LIT>":<EOL><INDENT>in_process = self.process_map[p_in_name](template=p_in_name)<EOL>logger.debug("<STR_LIT>"<EOL>"<STR_LIT>".format(p))<EOL>self._test_connection(in_process, out_process)<EOL>out_process.parent_lane = in_lane<EOL><DEDENT>else:<EOL><INDENT>out_process.parent_lane = None<EOL><DEDENT>logger.debug("<STR_LIT>".format(<EOL>p, out_process.parent_lane))<EOL>if in_lane != out_lane:<EOL><INDENT>logger.debug("<STR_LIT>"<EOL>"<STR_LIT>".format(p))<EOL>self._fork_tree[in_lane].append(out_lane)<EOL>try:<EOL><INDENT>parent_process = [<EOL>x for x in self.processes if x.lane == in_lane and<EOL>x.template == p_in_name<EOL>][<NUM_LIT:0>]<EOL>logger.debug(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>".format(p, parent_process,<EOL>out_process.input_channel))<EOL>parent_process.update_main_forks(out_process.input_channel)<EOL><DEDENT>except IndexError:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>else:<EOL><INDENT>parent_process = self.processes[-<NUM_LIT:1>]<EOL>if parent_process.lane and parent_process.lane != out_lane:<EOL><INDENT>parent_process = [x for x in self.processes[::-<NUM_LIT:1>]<EOL>if x.lane == out_lane][<NUM_LIT:0>]<EOL><DEDENT>if parent_process.output_channel:<EOL><INDENT>logger.debug(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>".format(<EOL>p, parent_process.output_channel))<EOL>out_process.input_channel = parent_process.output_channel<EOL><DEDENT><DEDENT>if out_process.dependencies and not ignore_dependencies:<EOL><INDENT>logger.debug("<STR_LIT>"<EOL>"<STR_LIT:{}>".format(p, p_out_name,<EOL>out_process.dependencies))<EOL>parent_lanes = self._get_fork_tree(out_lane)<EOL>for dep in out_process.dependencies:<EOL><INDENT>if not self._search_tree_backwards(dep, parent_lanes):<EOL><INDENT>if auto_dependency:<EOL><INDENT>self._add_dependency(<EOL>out_process, dep, in_lane, out_lane, p)<EOL><DEDENT>elif not self.export_parameters:<EOL><INDENT>logger.error(colored_print(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>".format(p_out_name, dep),<EOL>"<STR_LIT>"))<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>self.processes.append(out_process)<EOL><DEDENT>logger.debug("<STR_LIT>".format(self.processes))<EOL>logger.debug("<STR_LIT>".format(self._fork_tree))<EOL>
Parses the process connections dictionaries into a process list

        This method is called upon instantiation of the NextflowGenerator
        class. Essentially, it sets the main input/output channel names of the
        processes so that they can be linked correctly.

        If a connection between two consecutive process is not possible due
        to a mismatch in the input/output types, it exits with an error.

        Returns
        -------