subject.smk
1 valid_slices_sub = {"Proband X1": [8], 2 "Proband X2": [8], 3 "Proband X4": [8], 4 "Proband X5": [8], 5 "Proband X6": [8], 6 "Proband X7": [8], 7 "Proband X8": [8], 8 "Proband X9": [9], 9 "Proband X10": [8], 10 "Proband X11": [8], 11 "Proband X12": [8], 12 "Proband X13": [9], 13 "Proband X14": [11], 14 "Proband X15": [7]} 15 16 subject_data = glob("data/subject_data/*/*[!mask].nii.gz") 17 18 FOLDER = [os.path.basename(Path(x).parent) for x in subject_data] 19 20 def aggregate_input_Sub(wildcards): 21 dir = checkpoints.SplitSlicesSub.get(**wildcards).output[0] 22 return glob(f"{dir}/*/*") 23 24 def aggregate_input_noise_Sub(wildcards): 25 dir = checkpoints.SplitSlicesNoiseSub.get(**wildcards).output[0] 26 return glob(f"{dir}/*/*") 27 28 checkpoint SplitSlicesSub: 29 input: 30 lambda wc: glob("data/subject_data/{folder}/*[!mask].nii.gz".format(folder=wc.folder)), 31 lambda wc: glob("data/subject_data/{folder}/*_mask.nii.gz".format(folder=wc.folder)), 32 output: 33 directory("analysis/feature_extraction/subject/{folder}"), 34 params: 35 valid_slices_sub 36 conda: 37 "../split.yaml" 38 script: 39 "../../code/seperate_slices.py" 40 41 42 checkpoint SplitSlicesNoiseSub: 43 input: 44 "data/subject_data_noise/{folder}_{noise}_{seed}/{folder}.nii.gz", 45 lambda wc: glob("data/subject_data/{folder}/*_mask.nii.gz".format(folder=wc.folder)), 46 output: 47 directory("analysis/feature_extraction/subject_noise/{folder}_{noise}_{seed}"), 48 params: 49 valid_slices_sub 50 conda: 51 "../split.yaml" 52 script: 53 "../../code/seperate_slices.py" 54 55 rule GenerateNoiseImagesSub: 56 input: 57 lambda wc: glob("data/subject_data/{folder}/*[!mask].nii.gz".format(folder=wc.folder)), 58 output: 59 "data/subject_data_noise/{folder}_{noise}_{seed}/{folder}.nii.gz" 60 conda: 61 "../noise.yaml" 62 params: 63 "{seed}", 64 "{noise}" 65 script: 66 "../../code/add_artifical_noise.py" 67 68 rule FeatureExtractionSub: 69 input: 70 aggregate_input_Sub 71 output: 72 "analysis/features/subject_noise/{folder}_0.000_0.csv" 73 conda: 74 "../feature_extraction.yaml" 75 script: 76 "../../code/mrxcat_simulations/feature_extraction.py" 77 78 rule FeatureExtractionNoiseSub: 79 input: 80 aggregate_input_noise_Sub 81 output: 82 "analysis/features/subject_noise/{folder}_{noise}_{seed,\\d{3}}.csv" 83 conda: 84 "../feature_extraction.yaml" 85 script: 86 "../../code/mrxcat_simulations/feature_extraction.py" 87 88 89 rule SubFeatureNormalization: 90 input: 91 expand("analysis/features/subject_noise/{{folder}}_{noise}_{seed}.csv", noise = NOISE, seed = SEEDS), 92 "analysis/features/subject_noise/{folder}_0.000_0.csv" 93 output: 94 "analysis/features_normalized/subject/{folder}.csv" 95 conda: 96 "../tidyverse.yaml" 97 params: 98 "{folder}_0.000_0.csv", 99 "{folder}_" 100 script: 101 "../../code/mrxcat_simulations/feature_normalization.R" 102 103 rule SubCalculateMae: 104 input: 105 "analysis/features_normalized/subject/{folder}.csv" 106 output: 107 "analysis/calculated_mae/subject/mae_{folder}.csv" 108 conda: 109 "../calculate_mae.yaml" 110 script: 111 "../../code/mrxcat_simulations/calculate_mae.py" 112 113 rule SubGeneratePlots: 114 input: 115 "analysis/features_normalized/subject/{folder}.csv", 116 output: 117 "analysis/plots/subject/features_curves/{folder}/top12_features.png" 118 conda: 119 "../tidyverse.yaml" 120 script: 121 "../../code/feature_plots.R" 122 123 rule SubGenerateMaePlots: 124 input: 125 expand("analysis/calculated_mae/subject/mae_{folder}.csv", folder = FOLDER), 126 output: 127 "analysis/tables/rank_table_subject.csv", 128 "analysis/plots/subject/total_mae_vs_snr_mae.png", 129 "analysis/plots/subject/total_mae_vs_snr_mae_1.png", 130 "analysis/plots/subject/rank_barcode.png", 131 conda: 132 "../tidyverse.yaml" 133 script: 134 "../../code/mae_plots.R" 135 136 rule SubTableRank: 137 input: 138 "analysis/calculated_mae/subject/mae_{folder}.csv" 139 output: 140 "analysis/tables/subject/ranks_{folder}.csv" 141 conda: 142 "../tidyverse.yaml" 143 script: 144 "../../code/single_ranks.R"