#!/usr/bin/python

import os
import sys
import glob
import argparse

from aparc12 import get_aparc12_cort_rois
from scai_utils import *

tractSegDir = "/users/cais/STUT/analysis/tractseg_aparc12/"
L2_DIR = "/users/cais/STUT/analysis/tract_subcort_conn"

allROIs = get_aparc12_cort_rois(lobe="all", bSpeech=False)
allROIs.sort()

if __name__ == "__main__":
    ap = argparse.ArgumentParser(description="Batch run of tractography- and aparc12-based subcorticla-cortical connectivity analysis, by calling tract_seg.py and tract_subcort_conn.py")
    ap.add_argument("scSeed", \
                    help="Subcortical seed (e.g., lh.Thalamus-Proper)")

    if len(sys.argv) == 1:
        ap.print_help()
        sys.exit(0)

    args = ap.parse_args()

    check_dir(tractSegDir)

    ds = glob.glob(os.path.join(tractSegDir, "S??"))
    ds.sort()
    
    if len(sys.argv) == 1:
        ap.print_help()
        sys.exit(0)

    # === Parse input arguments === #
    args = ap.parse_args()
    inMatFN = args.inMatFN
    hemi = args.hemi
    grp = args.grp
    vmax = args.vmax

    # === ROIs by lobe ===
    rois_bl = {}    
    for (i0, t_lobe) in enumerate(lobes):
        rois_bl[t_lobe] = get_aparc12_cort_rois(lobe=t_lobe, bSpeech=True)
        rois_bl[t_lobe] = np.array(rois_bl[t_lobe])

    # === Read the ROI centers of gravity from text file === #
    # check_file(COORD_FILE)

    cf = open(COORD_FILE, "rt")
    ct = cf.read().split('\n')
    ct = remove_empty_strings(ct)
    cf.close()

    roi_names = []
    roi_nums = []
    roi_coords = []
    for (i0, tline) in enumerate(ct):
        t_items = tline.split(' ')
regionCodes = [1, 2, 3, 4, 5, 6, 7]
"""
regionROIs = [['SFg', 'aMFg', 'iFo', 'iFt', 'FMC', 'FO', 'FOC', 'FP', \
               'pMFg'], \
              ['pSMA', 'aSMA', 'adPMC', 'mdPMC', 'pdPMC', 'vPMC'], \
              ['aCO', 'vMC', 'dMC'], \
              ['vSSC', 'pCO', 'dSSC'], \
              ['AG', 'aSMg', 'pSMg', 'SPL'], \
              ['CALC', 'MTO', 'ITO'], \
              ['H', 'PT', 'aSTg', 'aMTg', 'aITg', 'pSTg', 'pMTg', 'pITg', \
               'TP', 'adSTs', 'avSTs', 'pdSTs', 'pvSTs'],\
             ]
"""
regionROIs = [[]] * len(regions)
for (i0, region) in enumerate(regions):
    regionROIs[i0] = get_aparc12_cort_rois(lobe=region, bSpeech=False)

allROIs = get_aparc12_cort_rois(lobe="all", bSpeech=False)

altROINames = {"orig": ["Ag",  "Hg", "Lg", "ITOg", "MTOg", \
                        "aCGg", "midCGg", "pCGg", "aPHg", "pPHg"], \
               "alt": ["AG", "H", "LG", "ITO", "MTO", \
                       "aCG", "midCG", "pCG", "aPH", "pPH"]}

# ==== ~CONFIG: Construct the parcellation profile ==== #


# ==== sub_routine ==== #
def tract_seg_sub(args, step, roiName=""):
    # Check input arguments
    sID = args.sID
    # Check sanity of input arguments
    if not (hemi == "lh" or hemi == "rh"):
        raise Exception, "Unrecognized hemisphere: %s" % hemi

    if segType.count("-") == 1:
        segType1 = segType.replace("-", "_")
        if SEG_TYPE_NUMSEGS.keys().count(segType1) != 1:
            raise Exception, "Unrecognized segType: %s" % segType1
        nSegs = SEG_TYPE_NUMSEGS[segType1]
    else:
        if SEG_TYPE_NUMSEGS.keys().count(segType) != 1:
            raise Exception, "Unrecognized segType: %s" % segType
        nSegs = SEG_TYPE_NUMSEGS[segType]

    # Read cortical ROI list
    t_rois = list(get_aparc12_cort_rois(bSpeech=bSpeech))
    t_rois.sort()
    h_rois = []
    for t_roi in t_rois:
        h_rois.append(hemi + "_" + t_roi)

    # Preparation: check directories
    sDataDir = os.path.join(DATA_DIR, sID)
    check_dir(sDataDir)

    sTracDir = os.path.join(TRACULA_BASE, sID)
    check_dir(sTracDir)

    sResDir = os.path.join(TRACTS_RES_DIR, sID)
    check_dir(sResDir)