import os
from os.path import join,abspath,basename
from glob import glob
from bids import BIDSLayout
from scripts.commonsmk import bids_name
import shutil

configfile: "config/config.yml"

# Copy dataset_description.json files to derivatives directories (for BIDSlayout indexing)
deriv_dirs=[0]
deriv_dirs[0]= mniSpace = join(config['output_dir'],'derivatives','afids_mni')

for idir in deriv_dirs:
    if not os.path.exists(idir):
        os.makedirs(idir)
    data_des = abspath(join(join(srcdir("script.sh"),"../.."),'resources','dataset_description_'+basename(idir)+'.json'))
    if not os.path.exists(join(idir,'dataset_description.json')):
        shutil.copy2(data_des, join(idir,'dataset_description.json'))

# Load the BIDS directory
layout = BIDSLayout(join(config['input_dir'],'bids'), derivatives=join(config['input_dir'],'derivatives'),validate=False)


subjects = layout.get_subjects(**config['meta_nifti'])
sessions = layout.get_sessions(**config['meta_nifti'])
runs = layout.get_runs(**config['meta_nifti'])

suffix = config['meta_nifti']['suffix'] + config['meta_nifti']['extension']
suffix_afids = config['derivatives_meta']['afids_groundtruth']['suffix'] + config['derivatives_meta']['afids_groundtruth']['extension']

# Set the name for the input moving volume
moving_volume = bids_name(root=join(config['input_dir'],'bids'),kind='anat',subject='{subject}',session='{session}',suffix=suffix)
if len(sessions)==0:
    moving_volume = bids_name(root=join(config['input_dir'],'bids'),kind='anat',subject='{subject}',session=None,suffix=suffix)

if len(runs)>0:
    moving_volume = moving_volume.split(suffix)[0] + bids_name(suffix=suffix, **{'run':'01'})

rule all:
    input:
        expand(bids_name(root=join(config['output_dir'], 'derivatives', 'afids_mni'), subject='{subject}', suffix='registration.done'), subject=subjects),

include: 'rules/mniTransform.smk'
