<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _check_targets_input(targets, data):
 """Checks ISFC targets input array For ISFC analysis, targets input array should either be a list of n_TRs by n_targets arrays (where each array corresponds to a subject), or an n_TRs by n_targets by n_subjects ndarray. This function also checks the shape of the targets array against the input data array. Parameters data : list or ndarray (n_TRs x n_voxels x n_subjects) fMRI data for which to compute ISFC targets : list or ndarray (n_TRs x n_voxels x n_subjects) fMRI data to use as targets for ISFC Returns ------- targets : ndarray (n_TRs x n_voxels x n_subjects) ISFC targets with standadized structure n_TRs : int Number of time points (TRs) for targets array n_voxels : int Number of voxels (or ROIs) for targets array n_subjects : int Number of subjects for targets array symmetric : bool Indicator for symmetric vs. asymmetric """


    if isinstance(targets, np.ndarray) or isinstance(targets, list):
        targets, n_TRs, n_voxels, n_subjects = (
            _check_timeseries_input(targets))
        if data.shape[0] != n_TRs:
            raise ValueError("Targets array must have same number of "
                             "TRs as input data")
        if data.shape[2] != n_subjects:
            raise ValueError("Targets array must have same number of "
                             "subjects as input data")
        symmetric = False
    else:
        targets = data
        n_TRs, n_voxels, n_subjects = data.shape
        symmetric = True

    return targets, n_TRs, n_voxels, n_subjects, symmetric