<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_functional_connectivity(self, njobs=None, returngroup=False, file_hdr=None, file_idx=None):
 """ Makes connectivity matrix for each of the subjects. Parameters returngroup : bool, default=False If true, returns the group average connectivity matrix. njobs : int How many parallel jobs to run file_idx : bool Default False, true if to ignore index column in loaded file. file_hdr : bool Default False, true if to ignore header row in loaded file. Returns ------- R_group : array if returngroup is true, the average connectivity matrix is returned. """

        if not njobs:
            njobs = self.njobs
        self.add_history(inspect.stack()[0][3], locals(), 1)
        files = self.get_selected_files(quiet=1)

        R_group = []

        with ProcessPoolExecutor(max_workers=njobs) as executor:
            job = {executor.submit(
                self._run_make_functional_connectivity, f, file_hdr, file_idx) for f in files}
            for j in as_completed(job):
                R_group.append(j.result())

        if returngroup:
            # Fisher tranform -> mean -> inverse fisher tranform
            R_group = np.tanh(np.mean(np.arctanh(np.array(R_group)), axis=0))
            return np.array(R_group)