diff --git a/.gitignore b/.gitignore index 7efef52..ffb00ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,16 @@ adni_storage/ +abide_storage/ +cobre_storage/ +corr_storage/ +dlbs_storage/ +fcon1000_storage/ +ixi_storage/ +oasis1_storage/ +sald_storage/ ants/ -model_dumps/ \ No newline at end of file +model_dumps/ +pretrained/ +medvit/ +processed_slices/ +vit_trained_bak/ +camcan_storage/ diff --git a/3dres.py b/3dres.py new file mode 100644 index 0000000..e69de29 diff --git a/Papers/s41598-024-59578-3.pdf b/Papers/s41598-024-59578-3.pdf new file mode 100644 index 0000000..75f1274 Binary files /dev/null and b/Papers/s41598-024-59578-3.pdf differ diff --git a/__pycache__/classify_fnn.cpython-312.pyc b/__pycache__/classify_fnn.cpython-312.pyc new file mode 100644 index 0000000..394f925 Binary files /dev/null and b/__pycache__/classify_fnn.cpython-312.pyc differ diff --git a/__pycache__/classify_fnn_bag.cpython-312.pyc b/__pycache__/classify_fnn_bag.cpython-312.pyc new file mode 100644 index 0000000..26e87d0 Binary files /dev/null and b/__pycache__/classify_fnn_bag.cpython-312.pyc differ diff --git a/__pycache__/cnn_gn.cpython-312.pyc b/__pycache__/cnn_gn.cpython-312.pyc new file mode 100644 index 0000000..0edbe6a Binary files /dev/null and b/__pycache__/cnn_gn.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx.cpython-312.pyc b/__pycache__/cnn_mx.cpython-312.pyc new file mode 100644 index 0000000..ad1995a Binary files /dev/null and b/__pycache__/cnn_mx.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_att.cpython-312.pyc b/__pycache__/cnn_mx_att.cpython-312.pyc new file mode 100644 index 0000000..bda57d5 Binary files /dev/null and b/__pycache__/cnn_mx_att.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_att_bl.cpython-312.pyc b/__pycache__/cnn_mx_att_bl.cpython-312.pyc new file mode 100644 index 0000000..668693e Binary files /dev/null and b/__pycache__/cnn_mx_att_bl.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_att_gate2.cpython-312.pyc b/__pycache__/cnn_mx_att_gate2.cpython-312.pyc new file mode 100644 index 0000000..c35082d Binary files /dev/null and b/__pycache__/cnn_mx_att_gate2.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_att_res.cpython-312.pyc b/__pycache__/cnn_mx_att_res.cpython-312.pyc new file mode 100644 index 0000000..2dbbbf9 Binary files /dev/null and b/__pycache__/cnn_mx_att_res.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_cbam.cpython-312.pyc b/__pycache__/cnn_mx_cbam.cpython-312.pyc new file mode 100644 index 0000000..5bf30af Binary files /dev/null and b/__pycache__/cnn_mx_cbam.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_elu.cpython-312.pyc b/__pycache__/cnn_mx_elu.cpython-312.pyc new file mode 100644 index 0000000..eb3e205 Binary files /dev/null and b/__pycache__/cnn_mx_elu.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_lrelu.cpython-312.pyc b/__pycache__/cnn_mx_lrelu.cpython-312.pyc new file mode 100644 index 0000000..7b34fbe Binary files /dev/null and b/__pycache__/cnn_mx_lrelu.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_multi_att.cpython-312.pyc b/__pycache__/cnn_mx_multi_att.cpython-312.pyc new file mode 100644 index 0000000..d9a79c2 Binary files /dev/null and b/__pycache__/cnn_mx_multi_att.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_res.cpython-312.pyc b/__pycache__/cnn_mx_res.cpython-312.pyc new file mode 100644 index 0000000..5e85ff3 Binary files /dev/null and b/__pycache__/cnn_mx_res.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_spd.cpython-312.pyc b/__pycache__/cnn_mx_spd.cpython-312.pyc new file mode 100644 index 0000000..d2547f4 Binary files /dev/null and b/__pycache__/cnn_mx_spd.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_sw.cpython-312.pyc b/__pycache__/cnn_mx_sw.cpython-312.pyc new file mode 100644 index 0000000..61a9571 Binary files /dev/null and b/__pycache__/cnn_mx_sw.cpython-312.pyc differ diff --git a/__pycache__/cnn_mx_vl.cpython-312.pyc b/__pycache__/cnn_mx_vl.cpython-312.pyc new file mode 100644 index 0000000..2a5ad8e Binary files /dev/null and b/__pycache__/cnn_mx_vl.cpython-312.pyc differ diff --git a/__pycache__/dataset_cls.cpython-312.pyc b/__pycache__/dataset_cls.cpython-312.pyc new file mode 100644 index 0000000..b9e8205 Binary files /dev/null and b/__pycache__/dataset_cls.cpython-312.pyc differ diff --git a/adni_preprocess.sh b/adni_preprocess.sh index 3071cf7..224ecb0 100644 --- a/adni_preprocess.sh +++ b/adni_preprocess.sh @@ -4,11 +4,12 @@ count=0 # Define source and target directories -source_folder="adni_storage/ADNI_nii_gz_stripped" -target_folder="adni_storage/ADNI_nii_gz_bias_corrected" +source_folder="camcan_storage/CamCAN_nii_gz_stripped" +target_folder="camcan_storage/CamCAN_nii_gz_bias_corrected" # Path to N4BiasFieldCorrection binary -n4bias_path="ants/ants-2.5.4/bin/N4BiasFieldCorrection" +# n4bias_path="ants/ants-2.5.4/bin/N4BiasFieldCorrection" +n4bias_path="~/miniconda3/envs/db3/bin/N4BiasFieldCorrection" # Loop through all .nii.gz files in the source folder for input_file in "${source_folder}"/*.stripped.nii.gz; do diff --git a/adni_storage b/adni_storage deleted file mode 120000 index f714944..0000000 --- a/adni_storage +++ /dev/null @@ -1 +0,0 @@ -/NTFS-HDD/Storage/adnii_storage \ No newline at end of file diff --git a/age_distribution.png b/age_distribution.png new file mode 100644 index 0000000..e44a029 Binary files /dev/null and b/age_distribution.png differ diff --git a/calculate_agegap.py b/calculate_agegap.py index 623af3f..648e456 100644 --- a/calculate_agegap.py +++ b/calculate_agegap.py @@ -38,7 +38,7 @@ def plot_with_metrics(data, x_col, y_col, hue_col, title, x_lim): plt.show() # For training set -dfres_train = pd.read_csv("predicted_ages_train.csv", sep=",", index_col=0).reset_index() +dfres_train = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_train.csv", sep=",", index_col=0).reset_index() dfres_train = calculate_lowess_yhat_and_agegap(dfres_train) # Keep only the row with the smallest Age for each SubjectID @@ -50,7 +50,7 @@ def plot_with_metrics(data, x_col, y_col, hue_col, title, x_lim): title="Age gap predictions (Train Set)", x_lim=(40, 100)) # For validation set -dfres_val = pd.read_csv("predicted_ages_val.csv", sep=",", index_col=0).reset_index() +dfres_val = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_val.csv", sep=",", index_col=0).reset_index() dfres_val = calculate_lowess_yhat_and_agegap(dfres_val) # Keep only the row with the smallest Age for each SubjectID diff --git a/calculate_agegap_da.py b/calculate_agegap_da.py new file mode 100644 index 0000000..2170b24 --- /dev/null +++ b/calculate_agegap_da.py @@ -0,0 +1,186 @@ +import pandas as pd +import numpy as np +import statsmodels.api as sm +import seaborn as sns +from scipy.stats import norm +from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score +from scipy.interpolate import make_interp_spline, interp1d +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.svm import SVC # Import SVM +from sklearn.preprocessing import LabelEncoder +from sklearn.metrics import classification_report, confusion_matrix +from sklearn.mixture import GaussianMixture +from sklearn.metrics import classification_report, confusion_matrix, accuracy_score +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, TensorDataset + +def calculate_lowess_yhat_and_agegap(dfres): + dfres_agegap = dfres.copy() + # calculate agegap using lowess of predicted vs chronological age from training cohort + lowess = sm.nonparametric.lowess + lowess_fit = lowess(dfres_agegap.Predicted_Age.to_numpy(), dfres_agegap.Age.to_numpy(), frac=0.8, it=3) + lowess_fit_int = interp1d(lowess_fit[:,0], lowess_fit[:,1], bounds_error=False, kind='linear', fill_value=(0, 150)) + y_lowess = lowess_fit_int(dfres_agegap.Age) + dfres_agegap["yhat_lowess"] = y_lowess + # dfres_agegap["yhat_lowess"] = age_prediction_lowess(np.array(dfres_agegap.Age)) + if len(dfres_agegap.loc[dfres_agegap.yhat_lowess.isna()]) > 0: + print("Could not predict lowess yhat in " + str(len(dfres_agegap.loc[dfres_agegap.yhat_lowess.isna()])) + " samples") + dfres_agegap = dfres_agegap.dropna(subset="yhat_lowess") + dfres_agegap["AgeGap"] = dfres_agegap["Predicted_Age"] - dfres_agegap["yhat_lowess"] + dfres_agegap["AgeGap"] = dfres_agegap["AgeGap"].abs() + return dfres_agegap + +# Function to calculate MAE and R², and annotate the plot +def plot_with_metrics(data, x_col, y_col, hue_col, title, x_lim): + # Calculate MAE and R² + mae = mean_absolute_error(data[x_col], data[y_col]) + r2 = r2_score(data[x_col], data[y_col]) + + # Create scatterplot + sns.scatterplot(data=data, x=x_col, y=y_col, hue=hue_col, palette='coolwarm', hue_norm=(-12, 12)) + plt.xlim(*x_lim) + plt.title(f"{title}\nMAE: {mae:.2f}, R²: {r2:.2f}") + plt.xlabel(x_col) + plt.ylabel(y_col) + plt.show() + +# For training set +dfres_train = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_train.csv", sep=",", index_col=0).reset_index() +dfres_train = calculate_lowess_yhat_and_agegap(dfres_train) + +# Keep only the row with the smallest Age for each SubjectID +dfres_train = dfres_train.loc[dfres_train.groupby('SubjectID')['Age'].idxmin()] +dfres_train = dfres_train.reset_index(drop=True) + +# For validation set +dfres_val = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_val.csv", sep=",", index_col=0).reset_index() +dfres_val = calculate_lowess_yhat_and_agegap(dfres_val) + +# Keep only the row with the smallest Age for each SubjectID +dfres_val = dfres_val.loc[dfres_val.groupby('SubjectID')['Age'].idxmin()] +dfres_val = dfres_val.reset_index(drop=True) + + +# Step 1: Encode categorical variables (for 'Sex' column) +dfres_train['Sex'] = dfres_train['Sex'].map({'M': 0, 'F': 1}) +dfres_val['Sex'] = dfres_val['Sex'].map({'M': 0, 'F': 1}) + +# Step 2: Convert the 'Group' column to binary (AD vs not AD) +dfres_train['Group_binary'] = dfres_train['Group'].apply(lambda x: 1 if x == 'AD' else 0) +dfres_val['Group_binary'] = dfres_val['Group'].apply(lambda x: 1 if x == 'AD' else 0) + +# Step 3: Initialize the LabelEncoder for the binary target 'Group_binary' column +y_train = dfres_train['Group_binary'] +y_val = dfres_val['Group_binary'] + +print(f"Binary labels for training set: {y_train.unique()}") # To verify the binary classification + +# Step 4: Drop the original 'Group' column and prepare features for training +X_train = dfres_train[['AgeGap']] +X_val = dfres_val[['AgeGap']] + +print(f"Features for training set:\n{X_train.head()}") + +# Step 1: Prepare the data +X_train = torch.tensor(dfres_train[['AgeGap']].values, dtype=torch.float32) # Feature +y_train = torch.tensor(dfres_train['Group_binary'].values, dtype=torch.float32) # Target (binary) + +X_val = torch.tensor(dfres_val[['AgeGap']].values, dtype=torch.float32) # Feature +y_val = torch.tensor(dfres_val['Group_binary'].values, dtype=torch.float32) # Target (binary) + +# Step 2: Create Dataloader +train_dataset = TensorDataset(X_train, y_train) +val_dataset = TensorDataset(X_val, y_val) + +train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True) +val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False) + +# Step 3: Define the Model with Attention Mechanism +class AttentionDNN(nn.Module): + def __init__(self): + super(AttentionDNN, self).__init__() + self.dense1 = nn.Linear(1, 64) + self.dropout1 = nn.Dropout(0.2) + + # Attention mechanism (simple scaled dot-product attention) + self.attention = nn.MultiheadAttention(embed_dim=64, num_heads=1, batch_first=True) + + self.dense2 = nn.Linear(128, 32) # 64 + 64 (Concatenated) + self.dropout2 = nn.Dropout(0.2) + self.output = nn.Linear(32, 1) # Binary output + + def forward(self, x): + # First dense layer + x = torch.relu(self.dense1(x)) + x = self.dropout1(x).unsqueeze(1) # Add extra dimension for attention (batch_size, seq_len, feature) + + # Attention mechanism (requires 3 inputs: queries, keys, values) + attn_output, _ = self.attention(x, x, x) + + # Concatenate attention output with original features + x = torch.cat((x, attn_output), dim=-1) + + # Second dense layer + x = torch.relu(self.dense2(x)) + x = self.dropout2(x) + + # Output layer (sigmoid for binary classification) + x = torch.sigmoid(self.output(x.squeeze(1))) # Remove extra dimension + + return x + +# Step 4: Initialize the model, loss function, and optimizer +model = AttentionDNN() +criterion = nn.BCELoss() # Binary Cross Entropy loss for binary classification +optimizer = optim.Adam(model.parameters(), lr=0.001) + +# Step 5: Train the model +num_epochs = 100 +for epoch in range(num_epochs): + model.train() + running_loss = 0.0 + for inputs, labels in train_loader: + optimizer.zero_grad() + + outputs = model(inputs) + loss = criterion(outputs, labels.view(-1, 1)) # Reshaping labels for BCELoss + loss.backward() + optimizer.step() + + running_loss += loss.item() + + print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {running_loss/len(train_loader)}") + +# Step 6: Evaluate the model +model.eval() +y_pred_prob = [] +y_true = [] + +with torch.no_grad(): + for inputs, labels in val_loader: + outputs = model(inputs) + y_pred_prob.append(outputs) + y_true.append(labels) + +y_pred_prob = torch.cat(y_pred_prob) +y_true = torch.cat(y_true) + +# Convert to binary labels (0 or 1) +y_pred = (y_pred_prob > 0.5).float() + +# Classification Report +class_names = ['Not AD', 'AD'] +print("Classification Report:") +print(classification_report(y_true, y_pred, target_names=class_names)) + +# Confusion Matrix +conf_matrix = confusion_matrix(y_true, y_pred) +plt.figure(figsize=(8, 6)) +sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=class_names, yticklabels=class_names) +plt.title('Confusion Matrix') +plt.xlabel('Predicted Labels') +plt.ylabel('True Labels') +plt.show() diff --git a/calculate_agegap_gmm.py b/calculate_agegap_gmm.py new file mode 100644 index 0000000..89287a2 --- /dev/null +++ b/calculate_agegap_gmm.py @@ -0,0 +1,114 @@ +import pandas as pd +import numpy as np +import statsmodels.api as sm +import seaborn as sns +from scipy.stats import norm +from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score +from scipy.interpolate import make_interp_spline, interp1d +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.svm import SVC # Import SVM +from sklearn.preprocessing import LabelEncoder +from sklearn.metrics import classification_report, confusion_matrix +from sklearn.mixture import GaussianMixture +from sklearn.metrics import classification_report, confusion_matrix, accuracy_score + + + +def calculate_lowess_yhat_and_agegap(dfres): + dfres_agegap = dfres.copy() + # calculate agegap using lowess of predicted vs chronological age from training cohort + lowess = sm.nonparametric.lowess + lowess_fit = lowess(dfres_agegap.Predicted_Age.to_numpy(), dfres_agegap.Age.to_numpy(), frac=0.8, it=3) + lowess_fit_int = interp1d(lowess_fit[:,0], lowess_fit[:,1], bounds_error=False, kind='linear', fill_value=(0, 150)) + y_lowess = lowess_fit_int(dfres_agegap.Age) + dfres_agegap["yhat_lowess"] = y_lowess + # dfres_agegap["yhat_lowess"] = age_prediction_lowess(np.array(dfres_agegap.Age)) + if len(dfres_agegap.loc[dfres_agegap.yhat_lowess.isna()]) > 0: + print("Could not predict lowess yhat in " + str(len(dfres_agegap.loc[dfres_agegap.yhat_lowess.isna()])) + " samples") + dfres_agegap = dfres_agegap.dropna(subset="yhat_lowess") + dfres_agegap["AgeGap"] = dfres_agegap["Predicted_Age"] - dfres_agegap["yhat_lowess"] + dfres_agegap["AgeGap"] = dfres_agegap["AgeGap"].abs() + return dfres_agegap + +# Function to calculate MAE and R², and annotate the plot +def plot_with_metrics(data, x_col, y_col, hue_col, title, x_lim): + # Calculate MAE and R² + mae = mean_absolute_error(data[x_col], data[y_col]) + r2 = r2_score(data[x_col], data[y_col]) + + # Create scatterplot + sns.scatterplot(data=data, x=x_col, y=y_col, hue=hue_col, palette='coolwarm', hue_norm=(-12, 12)) + plt.xlim(*x_lim) + plt.title(f"{title}\nMAE: {mae:.2f}, R²: {r2:.2f}") + plt.xlabel(x_col) + plt.ylabel(y_col) + plt.show() + +# For training set +dfres_train = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_train.csv", sep=",", index_col=0).reset_index() +dfres_train = calculate_lowess_yhat_and_agegap(dfres_train) + +# Keep only the row with the smallest Age for each SubjectID +dfres_train = dfres_train.loc[dfres_train.groupby('SubjectID')['Age'].idxmin()] +dfres_train = dfres_train.reset_index(drop=True) + +# For validation set +dfres_val = pd.read_csv("model_dumps/cnn_mx_elu_predicted_ages_val.csv", sep=",", index_col=0).reset_index() +dfres_val = calculate_lowess_yhat_and_agegap(dfres_val) + +# Keep only the row with the smallest Age for each SubjectID +dfres_val = dfres_val.loc[dfres_val.groupby('SubjectID')['Age'].idxmin()] +dfres_val = dfres_val.reset_index(drop=True) + + +# Step 1: Encode categorical variables (for 'Sex' column) +dfres_train['Sex'] = dfres_train['Sex'].map({'M': 0, 'F': 1}) +dfres_val['Sex'] = dfres_val['Sex'].map({'M': 0, 'F': 1}) + +# Step 2: Convert the 'Group' column to binary (AD vs not AD) +dfres_train['Group_binary'] = dfres_train['Group'].apply(lambda x: 1 if x == 'AD' else 0) +dfres_val['Group_binary'] = dfres_val['Group'].apply(lambda x: 1 if x == 'AD' else 0) + +# Step 3: Initialize the LabelEncoder for the binary target 'Group_binary' column +y_train = dfres_train['Group_binary'] +y_val = dfres_val['Group_binary'] + +print(f"Binary labels for training set: {y_train.unique()}") # To verify the binary classification + +# Step 4: Drop the original 'Group' column and prepare features for training +X_train = dfres_train[['AgeGap']] +X_val = dfres_val[['AgeGap']] + +print(f"Features for training set:\n{X_train.head()}") + +# Step 5: Train the Gaussian Mixture Model (GMM) +gmm = GaussianMixture(n_components=2, covariance_type='full', random_state=42) +gmm.fit(X_train) + +# Step 6: Predict probabilities and classify +# GMM provides probabilities for each component (class). Choose the class with the highest probability. +y_pred_prob = gmm.predict_proba(X_val) +y_pred = np.argmax(y_pred_prob, axis=1) # Get the class with the highest probability + +# Get the class labels (binary: 0 = not AD, 1 = AD) +class_names = ['Not AD', 'AD'] + +# Step 7: Evaluate the GMM model +print("Classification Report:") +print(classification_report(y_val, y_pred, target_names=class_names)) + +print("Confusion Matrix:") +conf_matrix = confusion_matrix(y_val, y_pred) + +# Create a heatmap with seaborn +plt.figure(figsize=(8, 6)) +sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=class_names, yticklabels=class_names) +plt.title('Confusion Matrix') +plt.xlabel('Predicted Labels') +plt.ylabel('True Labels') +plt.show() + +# Step 8: (Optional) Evaluate overall accuracy +accuracy = accuracy_score(y_val, y_pred) +print(f"Accuracy: {accuracy:.2f}") \ No newline at end of file diff --git a/classify_fnn.py b/classify_fnn.py new file mode 100644 index 0000000..f7a8e3e --- /dev/null +++ b/classify_fnn.py @@ -0,0 +1,80 @@ + + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class AgePredictionCNNMulticlass(nn.Module): + def __init__(self, input_shape, num_classes): + super(AgePredictionCNNMulticlass, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc3 = nn.Linear(129, num_classes) # Output for multiple classes + + self.lrelu = nn.LeakyReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x \ No newline at end of file diff --git a/classify_fnn_bag.py b/classify_fnn_bag.py new file mode 100644 index 0000000..2012c2e --- /dev/null +++ b/classify_fnn_bag.py @@ -0,0 +1,82 @@ + + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class AgePredictionCNNMulticlass(nn.Module): + def __init__(self, input_shape, num_classes): + super(AgePredictionCNNMulticlass, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc3 = nn.Linear(130, num_classes) # Output for multiple classes + + self.lrelu = nn.LeakyReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex, age_gap): + x = self.conv1(x) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + # Concatenate `Age Gap` input + x = torch.cat((x, age_gap.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x \ No newline at end of file diff --git a/classify_main.py b/classify_main.py new file mode 100644 index 0000000..aff0089 --- /dev/null +++ b/classify_main.py @@ -0,0 +1,312 @@ +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +from sklearn.metrics import confusion_matrix +from sklearn.metrics import accuracy_score +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset +import seaborn as sns + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) +np.random.seed(69420) + +# Load the data +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + +# convert the Group column to numeric +df['Group'] = df['Group'].map({'CN': 0, 'AD': 1, 'MCI': 2}) +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() + +features_list = [] +labels_list = [] + +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Group']) # Add the corresponding age label + +# Convert the lists to numpy arrays +features = np.array(features_list) +labels = np.array(labels_list) + + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, labels_list): + self.features = features_list + self.sex = sex_list + self.labels = labels_list + + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.labels[idx], dtype=torch.long), + ) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, labels_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +import importlib + +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNNMulticlass" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNNMulticlass = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +model = AgePredictionCNNMulticlass(features_list[0].shape, num_classes=3) +criterion = nn.CrossEntropyLoss() +optimizer = optim.Adam(model.parameters(), lr=0.001) + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + loaded_accuracy = checkpoint["accuracy"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +def update_plot(epoch_data, filename): + # Create a DataFrame from epoch data + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}.csv", index=False) # Save the data to CSV + + # Plot training and validation loss + plt.figure(figsize=(10, 8)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}_loss.png") # Save loss plot + plt.close() + + # Plot training and validation accuracy + plt.figure(figsize=(10, 8)) + plt.plot(df['epoch'], df['train_accuracy'], label="Train Accuracy", marker="o", color='green') + plt.plot(df['epoch'], df['val_accuracy'], label="Validation Accuracy", marker="o", color='red') + plt.xlabel("Epoch") + plt.ylabel("Accuracy") + plt.title("Accuracy vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}_accuracy.png") # Save accuracy plot + plt.close() + + +# Training parameters +num_epochs = 100 +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +model.to(device) + +start_epoch = 0 +epochs = 100 + +best_accuracy = 0.0 +val_accuracy = 0.0 + +# Train the model +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + correct = 0 + total = 0 + + for idx, (features, sex, labels) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + labels = labels.to(device) + + optimizer.zero_grad() + outputs = model(features, sex) # Forward pass + + loss = criterion(outputs, labels) # CrossEntropyLoss expects raw logits + loss.backward() + optimizer.step() + + train_loss += loss.item() + + _, predicted = torch.max(outputs, 1) # Get class predictions + total += labels.size(0) + correct += (predicted == labels).sum().item() + + train_loss /= len(train_loader) + train_accuracy = correct / total + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + print(f"Epoch {epoch+1}/{epochs}, Train Accuracy: {train_accuracy:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + correct = 0 + total = 0 + label_to_class = {0: 'CN', 1: 'AD', 2: 'MCI'} + all_preds = [] + all_labels = [] + + with torch.no_grad(): + for idx, (features, sex, labels) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + labels = labels.to(device) + + outputs = model(features, sex) + loss = criterion(outputs, labels) # CrossEntropyLoss expects raw logits + val_loss += loss.item() + + _, predicted = torch.max(outputs, 1) # Get class predictions + total += labels.size(0) + correct += (predicted == labels).sum().item() + + all_preds.extend(predicted.cpu().numpy()) + all_labels.extend(labels.cpu().numpy()) + + + val_loss /= len(val_loader) + val_accuracy = correct / total + + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + print(f"Epoch {epoch+1}/{epochs}, Validation Accuracy: {val_accuracy:.4f}") + + all_preds_classes = [label_to_class[label] for label in all_preds] + all_labels_classes = [label_to_class[label] for label in all_labels] + + + + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "accuracy": val_accuracy, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_accuracy > best_accuracy: + # best_loss = val_loss + best_accuracy = val_accuracy + print(f"Validation accuracy improved to {val_accuracy:.4f}. Saving the model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Generate confusion matrix + cm = confusion_matrix(all_labels_classes, all_preds_classes, labels=['CN', 'AD', 'MCI']) + cm_display = sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=['CN', 'AD', 'MCI'], yticklabels=['CN', 'AD', 'MCI']) + plt.xlabel("Predicted Class") + plt.ylabel("True Class") + plt.title(f"Confusion Matrix for Epoch {epoch+1}") + plt.savefig(f"model_dumps/{sys.argv[1]}_conf_matrix.png") + plt.close() + print(f"Confusion matrix for epoch {epoch+1} saved.") + + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "train_accuracy": train_accuracy, + "val_loss": val_loss, + "val_accuracy": val_accuracy + }) + + update_plot(epoch_data, sys.argv[1]) + + + + + diff --git a/classify_main_bag.py b/classify_main_bag.py new file mode 100644 index 0000000..d2156df --- /dev/null +++ b/classify_main_bag.py @@ -0,0 +1,338 @@ +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +from sklearn.metrics import confusion_matrix +from sklearn.metrics import accuracy_score +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset +import seaborn as sns + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) +np.random.seed(69420) + +temp_df_1 = pd.read_csv("model_dumps/cnn_mx_lrelu_predicted_ages_train.csv") +temp_df_2 = pd.read_csv("model_dumps/cnn_mx_lrelu_predicted_ages_val.csv") + +# concatenate the two dataframes +temp_df = pd.concat([temp_df_1, temp_df_2]) + +# make a column for age gap, absolute difference between predicted and actual age + +temp_df["AgeGap"] = abs(temp_df["Predicted_Age"] - temp_df["Age"]) + + +# Load the data +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + +df["AgeGap"] = df["ImageID"].map(temp_df.set_index("ImageID")["AgeGap"]) + +# convert the Group column to numeric +df['Group'] = df['Group'].map({'CN': 0, 'AD': 1, 'MCI': 2}) +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_gap_encoded = df['AgeGap'].tolist() + +features_list = [] +labels_list = [] + +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + # scale the features + features = StandardScaler().fit_transform(features) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Group']) # Add the corresponding age label + +# Convert the lists to numpy arrays +features = np.array(features_list) +labels = np.array(labels_list) + +#apply standard scaling to the features and age gap_encoded, sex_encoded +scaler = StandardScaler() +sex_encoded = scaler.fit_transform(np.array(sex_encoded).reshape(-1, 1)).flatten() +age_gap_encoded = scaler.fit_transform(np.array(age_gap_encoded).reshape(-1, 1)).flatten() + + + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_gap_list, labels_list): + self.features = features_list + self.sex = sex_list + self.labels = labels_list + self.age_gap = age_gap_list + + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age_gap[idx], dtype=torch.float32), + torch.tensor(self.labels[idx], dtype=torch.long), + ) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_gap_encoded, labels) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +import importlib + +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNNMulticlass" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNNMulticlass = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +model = AgePredictionCNNMulticlass(features_list[0].shape, num_classes=3) +criterion = nn.CrossEntropyLoss() +optimizer = optim.Adam(model.parameters(), lr=0.001) + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + loaded_accuracy = checkpoint["accuracy"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +def update_plot(epoch_data, filename): + # Create a DataFrame from epoch data + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}.csv", index=False) # Save the data to CSV + + # Plot training and validation loss + plt.figure(figsize=(10, 8)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}_loss.png") # Save loss plot + plt.close() + + # Plot training and validation accuracy + plt.figure(figsize=(10, 8)) + plt.plot(df['epoch'], df['train_accuracy'], label="Train Accuracy", marker="o", color='green') + plt.plot(df['epoch'], df['val_accuracy'], label="Validation Accuracy", marker="o", color='red') + plt.xlabel("Epoch") + plt.ylabel("Accuracy") + plt.title("Accuracy vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}_accuracy.png") # Save accuracy plot + plt.close() + + +# Training parameters +num_epochs = 100 +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +model.to(device) + +start_epoch = 0 +epochs = 100 + +best_accuracy = 0.0 +val_accuracy = 0.0 + +# Train the model +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + correct = 0 + total = 0 + + for idx, (features, sex, age_gap, labels) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + labels = labels.to(device) + age_gap = age_gap.to(device) + + optimizer.zero_grad() + outputs = model(features, sex, age_gap) + + loss = criterion(outputs, labels) # CrossEntropyLoss expects raw logits + loss.backward() + optimizer.step() + + train_loss += loss.item() + + _, predicted = torch.max(outputs, 1) # Get class predictions + total += labels.size(0) + correct += (predicted == labels).sum().item() + + train_loss /= len(train_loader) + train_accuracy = correct / total + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + print(f"Epoch {epoch+1}/{epochs}, Train Accuracy: {train_accuracy:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + correct = 0 + total = 0 + label_to_class = {0: 'CN', 1: 'AD', 2: 'MCI'} + all_preds = [] + all_labels = [] + + with torch.no_grad(): + for idx, (features, sex, age_gap, labels) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + labels = labels.to(device) + age_gap = age_gap.to(device) + + outputs = model(features, sex, age_gap) + loss = criterion(outputs, labels) # CrossEntropyLoss expects raw logits + val_loss += loss.item() + + _, predicted = torch.max(outputs, 1) # Get class predictions + total += labels.size(0) + correct += (predicted == labels).sum().item() + + all_preds.extend(predicted.cpu().numpy()) + all_labels.extend(labels.cpu().numpy()) + + + val_loss /= len(val_loader) + val_accuracy = correct / total + + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + print(f"Epoch {epoch+1}/{epochs}, Validation Accuracy: {val_accuracy:.4f}") + + all_preds_classes = [label_to_class[label] for label in all_preds] + all_labels_classes = [label_to_class[label] for label in all_labels] + + + + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "accuracy": val_accuracy, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_accuracy > best_accuracy: + # best_loss = val_loss + best_accuracy = val_accuracy + print(f"Validation accuracy improved to {val_accuracy:.4f}. Saving the model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Generate confusion matrix + cm = confusion_matrix(all_labels_classes, all_preds_classes, labels=['CN', 'AD', 'MCI']) + cm_display = sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=['CN', 'AD', 'MCI'], yticklabels=['CN', 'AD', 'MCI']) + plt.xlabel("Predicted Class") + plt.ylabel("True Class") + plt.title(f"Confusion Matrix for Epoch {epoch+1}") + plt.savefig(f"model_dumps/{sys.argv[1]}_conf_matrix.png") + plt.close() + print(f"Confusion matrix for epoch {epoch+1} saved.") + + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "train_accuracy": train_accuracy, + "val_loss": val_loss, + "val_accuracy": val_accuracy + }) + + update_plot(epoch_data, sys.argv[1]) + + + + + diff --git a/cnn_gn.py b/cnn_gn.py new file mode 100644 index 0000000..5cc6b74 --- /dev/null +++ b/cnn_gn.py @@ -0,0 +1,246 @@ +# import torch +# import torch.nn as nn +# import torch.nn.functional as F + +# def conv_block(in_ch, out_ch, kernel_size, padding, groups): +# return nn.Sequential( +# nn.Conv2d(in_ch, out_ch, kernel_size=kernel_size, padding=padding), +# nn.GroupNorm(num_groups=groups, num_channels=out_ch), +# nn.SiLU(), +# nn.MaxPool2d(kernel_size=2, stride=1), +# nn.Dropout2d(p=0.1), +# ) + +# class AgePredictionCNN(nn.Module): +# def __init__(self,input_shape=None): +# super(AgePredictionCNN, self).__init__() + +# # Convolutional blocks with GroupNorm +# self.block1 = conv_block(1, 16, kernel_size=(10, 60), padding=(5, 30), groups=4) +# self.block2 = conv_block(16, 32, kernel_size=(5, 15), padding=(2, 7), groups=8) +# self.block3 = conv_block(32, 64, kernel_size=(2, 6), padding=(1, 3), groups=16) + +# # Adaptive pooling to get fixed-size output regardless of input dims +# self.global_pool = nn.AdaptiveAvgPool2d((1, 1)) + +# # Fully connected layers +# self.fc1 = nn.Linear(64, 128) +# self.fc1_gn = nn.GroupNorm(num_groups=8, num_channels=128) +# self.dropout = nn.Dropout(p=0.2) + +# # Final layer: +1 for sex input +# self.fc2 = nn.Linear(128 + 1, 1) + +# self._init_weights() + +# def _init_weights(self): +# for m in self.modules(): +# if isinstance(m, (nn.Conv2d, nn.Linear)): +# nn.init.kaiming_normal_(m.weight, nonlinearity='relu') +# if m.bias is not None: +# nn.init.constant_(m.bias, 0) + +# def forward(self, x, sex): +# # x: [B, 1, H, W], sex: [B] +# x = self.block1(x) +# x = self.block2(x) +# x = self.block3(x) + +# x = self.global_pool(x) # Shape: [B, 64, 1, 1] +# x = torch.flatten(x, 1) # Shape: [B, 64] + +# x = self.fc1(x) +# x = self.fc1_gn(x) +# x = F.silu(x) +# x = self.dropout(x) + +# x = torch.cat([x, sex.unsqueeze(1)], dim=1) # Concatenate sex +# out = self.fc2(x) + +# return out + +# import torch +# import torch.nn as nn +# import torch.optim as optim + +# class AgePredictionCNN(nn.Module): +# def __init__(self, input_shape): +# super(AgePredictionCNN, self).__init__() +# # Define convolutional and pooling layers with typical kernel sizes and GroupNorm +# self.conv1 = nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=1) +# self.gn1 = nn.GroupNorm(num_groups=4, num_channels=16) +# self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) + +# self.conv2 = nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=1) +# self.gn2 = nn.GroupNorm(num_groups=4, num_channels=32) +# self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) + +# self.conv3 = nn.Conv2d(32, 64, kernel_size=5, stride=1, padding=1) +# self.gn3 = nn.GroupNorm(num_groups=8, num_channels=64) +# self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) +# # Adaptive pooling to get fixed-size output regardless of input dims +# self.flatten = nn.Flatten() + +# # Fully connected layers +# self.fc1 = None # Placeholder to be initialized dynamically +# self.fc1_ln = None # LayerNorm after fc1 +# self.fc2 = nn.Linear(512, 128) +# self.fc2_ln = nn.LayerNorm(128) +# self.dropout = nn.Dropout(p=0.4) +# self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + +# self.swish = nn.SiLU() + +# self.initialize_fc1(input_shape) +# self.initialize_weights() + +# def initialize_fc1(self, input_shape): +# # Create a sample input to pass through the convolutional layers +# sample_input = torch.zeros(1, *input_shape) +# x = self.conv1(sample_input) +# x = self.swish(x) +# x = self.pool1(x) +# x = self.conv2(x) +# x = self.swish(x) +# x = self.pool2(x) +# x = self.conv3(x) +# x = self.swish(x) +# x = self.pool3(x) +# flattened_size = x.numel() +# self.fc1 = nn.Linear(flattened_size, 512) +# self.fc1_ln = nn.LayerNorm(512) + +# def initialize_weights(self): +# # Initialize weights for all layers +# for m in self.modules(): +# if isinstance(m, nn.Conv2d): +# nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') +# if m.bias is not None: +# nn.init.constant_(m.bias, 0) +# elif isinstance(m, (nn.GroupNorm, nn.LayerNorm)): +# nn.init.constant_(m.weight, 1) +# nn.init.constant_(m.bias, 0) +# elif isinstance(m, nn.Linear): +# nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') +# nn.init.constant_(m.bias, 0) + +# def forward(self, x, sex): +# x = self.conv1(x) +# x = self.gn1(x) +# x = self.swish(x) +# x = self.pool1(x) + +# x = self.conv2(x) +# x = self.gn2(x) +# x = self.swish(x) +# x = self.pool2(x) + +# x = self.conv3(x) +# x = self.gn3(x) +# x = self.swish(x) +# x = self.pool3(x) + +# x = self.flatten(x) + +# if self.fc1 is None: +# raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + +# x = self.fc1(x) +# x = self.fc1_ln(x) +# x = self.swish(x) +# x = self.dropout(x) + +# x = self.fc2(x) +# x = self.fc2_ln(x) +# x = self.swish(x) +# x = self.dropout(x) + +# x = torch.cat((x, sex.unsqueeze(1)), dim=1) +# x = self.fc3(x) + +# return x + +import torch +import torch.nn as nn +import torch.nn.functional as F + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + self.conv1 = nn.Conv2d(1, 16, kernel_size=7, stride=1, padding=1) + self.gn1 = nn.GroupNorm(num_groups=4, num_channels=16) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) + self.drop2d1 = nn.Dropout2d(p=0.3) + + self.conv2 = nn.Conv2d(16, 32, kernel_size=7, stride=1, padding=1) + self.gn2 = nn.GroupNorm(num_groups=4, num_channels=32) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) + self.drop2d2 = nn.Dropout2d(p=0.3) + + self.conv3 = nn.Conv2d(32, 64, kernel_size=7, stride=1, padding=1) + self.gn3 = nn.GroupNorm(num_groups=8, num_channels=64) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) + self.drop2d3 = nn.Dropout2d(p=0.3) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None + self.fc1_ln = None + self.fc2 = nn.Linear(256, 128) + self.fc2_ln = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.5) + self.fc3 = nn.Linear(129, 1) # 128 + 1 (sex) + + self.swish = nn.SiLU() + + self.initialize_fc1(input_shape) + self.initialize_weights() + + def initialize_fc1(self, input_shape): + with torch.no_grad(): + sample_input = torch.zeros(1, *input_shape) + x = self.forward_conv(sample_input) + flattened_size = x.numel() + self.fc1 = nn.Linear(flattened_size, 256) + self.fc1_ln = nn.LayerNorm(256) + + def initialize_weights(self): + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + if m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, (nn.GroupNorm, nn.LayerNorm)): + nn.init.constant_(m.weight, 1) + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.Linear): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + nn.init.constant_(m.bias, 0) + + def forward_conv(self, x): + x = self.pool1(self.swish(self.gn1(self.conv1(x)))) + x = self.drop2d1(x) + + x = self.pool2(self.swish(self.gn2(self.conv2(x)))) + x = self.drop2d2(x) + + x = self.pool3(self.swish(self.gn3(self.conv3(x)))) + x = self.drop2d3(x) + + return self.flatten(x) + + def forward(self, x, sex): + x = self.forward_conv(x) + + x = self.swish(self.fc1_ln(self.fc1(x))) + x = self.dropout(x) + + x = self.swish(self.fc2_ln(self.fc2(x))) + x = self.dropout(x) + + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx.py b/cnn_mx.py index 3f9b421..fc57de4 100644 --- a/cnn_mx.py +++ b/cnn_mx.py @@ -25,7 +25,7 @@ def __init__(self, input_shape): self.fc1_bn = None # Placeholder for batch normalization after fc1 self.fc2 = nn.Linear(512, 128) self.fc2_bn = nn.LayerNorm(128) - self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.dropout = nn.Dropout(p=0.3) # Dropout with 10% probability self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input self.relu = nn.ReLU() @@ -78,3 +78,91 @@ def forward(self, x, sex): return x +# import torch +# import torch.nn as nn +# import torch.optim as optim +# from torch.utils.data import DataLoader, Dataset + +# class AgePredictionCNN(nn.Module): +# def __init__(self, input_shape): +# super(AgePredictionCNN, self).__init__() + +# # Define convolutional and pooling layers +# self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) +# self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + +# self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) +# self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + +# self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) +# self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + +# self.flatten = nn.Flatten() + +# # Fully connected layers (fc1 dimensions are calculated dynamically) +# self.fc1 = None # Placeholder to be initialized dynamically +# self.fc1_bn = None # Placeholder for batch normalization after fc1 +# self.fc2 = nn.Linear(512, 128) +# self.fc2_bn = nn.LayerNorm(128) +# self.dropout = nn.Dropout(p=0.3) # Dropout with 10% probability +# self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + +# self.relu = nn.ReLU() +# self.initialize_fc1(input_shape) +# self.init_weights() # Initialize weights + +# def initialize_fc1(self, input_shape): +# # Create a sample input to pass through the convolutional layers +# sample_input = torch.zeros(1, *input_shape) +# x = self.conv1(sample_input) +# x = self.relu(x) +# x = self.pool1(x) # Apply pooling +# x = self.conv2(x) +# x = self.relu(x) +# x = self.pool2(x) # Apply pooling +# x = self.conv3(x) +# x = self.relu(x) +# x = self.pool3(x) # Apply pooling +# flattened_size = x.numel() # Total number of elements after flattening +# self.fc1 = nn.Linear(flattened_size, 512) +# self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + +# def init_weights(self): +# # Apply xavier initialization to all the layers +# for layer in self.modules(): +# if isinstance(layer, nn.Conv2d) or isinstance(layer, nn.Linear): +# nn.init.xavier_uniform_(layer.weight) +# if layer.bias is not None: +# layer.bias.data.fill_(0.01) + + +# def forward(self, x, sex): +# x = self.conv1(x) +# x = self.relu(x) +# x = self.pool1(x) # Apply pooling +# x = self.conv2(x) +# x = self.relu(x) +# x = self.pool2(x) # Apply pooling +# x = self.conv3(x) +# x = self.relu(x) +# x = self.pool3(x) # Apply pooling +# x = self.flatten(x) + +# if self.fc1 is None: +# raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + +# x = self.fc1(x) +# x = self.fc1_bn(x) # Apply batch normalization +# x = self.relu(x) +# x = self.dropout(x) # Apply dropout + +# x = self.fc2(x) +# x = self.fc2_bn(x) # Apply batch normalization +# x = self.relu(x) +# x = self.dropout(x) # Apply dropout + +# # Concatenate `Sex` input +# x = torch.cat((x, sex.unsqueeze(1)), dim=1) +# x = self.fc3(x) + +# return x diff --git a/cnn_mx_att.py b/cnn_mx_att.py new file mode 100644 index 0000000..7d72a7e --- /dev/null +++ b/cnn_mx_att.py @@ -0,0 +1,95 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.flatten = nn.Flatten() + + # Fully connected layers (fc1 dimensions are calculated dynamically) + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.self_attention_512 = nn.MultiheadAttention(embed_dim=512, num_heads=8) + + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.self_attention_128 = nn.MultiheadAttention(embed_dim=128, num_heads=4) + + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.relu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) # Apply pooling + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.relu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) # Apply pooling + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.relu(x) + + # # Self-attention for 512-dimensional features + # x = x.unsqueeze(0) # Add sequence dimension for attention + # x, _ = self.self_attention_512(x, x, x) + # x = x.squeeze(0) # Remove sequence dimension + + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.relu(x) + + # # Self-attention for 128-dimensional features + # x = x.unsqueeze(0) # Add sequence dimension for attention + # x, _ = self.self_attention_128(x, x, x) + # x = x.squeeze(0) # Remove sequence dimension + + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_att_bl.py b/cnn_mx_att_bl.py new file mode 100644 index 0000000..a7b60b2 --- /dev/null +++ b/cnn_mx_att_bl.py @@ -0,0 +1,106 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +class AttentionBlock(nn.Module): + def __init__(self, channels, reduction=16): + super(AttentionBlock, self).__init__() + self.global_avg_pool = nn.AdaptiveAvgPool2d(1) # Global Average Pooling + self.fc1 = nn.Linear(channels, channels // reduction, bias=False) + self.relu = nn.ReLU() + self.fc2 = nn.Linear(channels // reduction, channels, bias=False) + self.sigmoid = nn.Sigmoid() + + def forward(self, x): + b, c, _, _ = x.size() # Batch size, Channels, Height, Width + y = self.global_avg_pool(x).view(b, c) # Squeeze spatial dimensions + y = self.fc1(y) + y = self.relu(y) + y = self.fc2(y) + y = self.sigmoid(y).view(b, c, 1, 1) # Reshape to match input dimensions + return x * y # Scale input by attention weights + + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional layers with 1 channel + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1, padding=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1, padding=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1, padding=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) + + # Attention blocks + self.attention1 = AttentionBlock(channels=1) + self.attention2 = AttentionBlock(channels=1) + self.attention3 = AttentionBlock(channels=1) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to initialize dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.relu(x) + x = self.pool1(x) + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) + flattened_size = x.numel() + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) + + def forward(self, x, sex): + # First convolution block with attention + x = self.conv1(x) + x = self.attention1(x) # Apply attention + x = self.relu(x) + x = self.pool1(x) + + # Second convolution block with attention + x = self.conv2(x) + x = self.attention2(x) # Apply attention + x = self.relu(x) + x = self.pool2(x) + + # Third convolution block with attention + x = self.conv3(x) + x = self.attention3(x) # Apply attention + x = self.relu(x) + x = self.pool3(x) + + # Flatten and pass through fully connected layers + x = self.flatten(x) + x = self.fc1(x) + x = self.fc1_bn(x) + x = self.relu(x) + x = self.dropout(x) + + x = self.fc2(x) + x = self.fc2_bn(x) + x = self.relu(x) + x = self.dropout(x) + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_att_gate.py b/cnn_mx_att_gate.py new file mode 100644 index 0000000..07833f5 --- /dev/null +++ b/cnn_mx_att_gate.py @@ -0,0 +1,110 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class SpatialAttention(nn.Module): + def __init__(self, kernel_size=7): + super(SpatialAttention, self).__init__() + # Ensure kernel size is odd for consistent padding + assert kernel_size % 2 == 1, "Kernel size must be odd" + self.conv = nn.Conv2d(1, 1, kernel_size=kernel_size, padding=kernel_size // 2, bias=False) + self.sigmoid = nn.Sigmoid() + + def forward(self, x): + # Average and Max pooling across the channel dimension + avg_pool = torch.mean(x, dim=1, keepdim=True) + max_pool, _ = torch.max(x, dim=1, keepdim=True) + # Concatenate along channel dimension + pooled = avg_pool + max_pool + # Apply convolution and sigmoid activation + attention_map = self.sigmoid(self.conv(pooled)) + # Multiply input with attention map + return x * attention_map + + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + self.sa1 = SpatialAttention(kernel_size=7) # Add spatial attention after first layer + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + self.sa2 = SpatialAttention(kernel_size=5) # Add spatial attention after second layer + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + self.sa3 = SpatialAttention(kernel_size=3) # Add spatial attention after third layer + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.3) # Dropout with 30% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.relu(x) + x = self.pool1(x) + x = self.sa1(x) # Apply spatial attention + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) + x = self.sa2(x) # Apply spatial attention + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) + x = self.sa3(x) # Apply spatial attention + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.relu(x) + x = self.pool1(x) + x = self.sa1(x) # Apply spatial attention + + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) + x = self.sa2(x) # Apply spatial attention + + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) + x = self.sa3(x) # Apply spatial attention + + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_att_gate2.py b/cnn_mx_att_gate2.py new file mode 100644 index 0000000..237f1b7 --- /dev/null +++ b/cnn_mx_att_gate2.py @@ -0,0 +1,119 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + + +class AttentionGate(nn.Module): + def __init__(self, F_g, F_l, F_int): + super(AttentionGate, self).__init__() + self.W_g = nn.Conv2d(F_g, F_int, kernel_size=1, stride=1, padding=0, bias=True) + self.W_x = nn.Conv2d(F_l, F_int, kernel_size=1, stride=1, padding=0, bias=True) + self.psi = nn.Conv2d(F_int, 1, kernel_size=1, stride=1, padding=0, bias=True) + self.relu = nn.ReLU(inplace=True) + self.sigmoid = nn.Sigmoid() + + def forward(self, g, x): + # Resize g to match x's spatial dimensions + g = nn.functional.interpolate(g, size=x.shape[2:], mode='bilinear', align_corners=False) + + g1 = self.W_g(g) + x1 = self.W_x(x) + psi = self.relu(g1 + x1) + psi = self.sigmoid(self.psi(psi)) + return x * psi + + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + # Attention Gates for spatial refinement + self.ag1 = AttentionGate(F_g=1, F_l=1, F_int=1) + self.ag2 = AttentionGate(F_g=1, F_l=1, F_int=1) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.3) # Dropout with 30% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x1 = self.conv1(sample_input) + x1 = self.relu(x1) + x1 = self.pool1(x1) + + x2 = self.conv2(x1) + x2 = self.relu(x2) + x2 = self.pool2(x2) + + x3 = self.conv3(x2) + x3 = self.relu(x3) + x3 = self.pool3(x3) + + # Attention Gates + x2 = self.ag1(g=x3, x=x2) # First attention gate + x1 = self.ag2(g=x2, x=x1) # Second attention gate + + flattened_size = x1.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + # Initial convolution layers + x1 = self.conv1(x) + x1 = self.relu(x1) + x1 = self.pool1(x1) + + x2 = self.conv2(x1) + x2 = self.relu(x2) + x2 = self.pool2(x2) + + x3 = self.conv3(x2) + x3 = self.relu(x3) + x3 = self.pool3(x3) + + # Attention Gates + x2 = self.ag1(g=x3, x=x2) # First attention gate + x1 = self.ag2(g=x2, x=x1) # Second attention gate + + # Flatten and fully connected layers + x = self.flatten(x1) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_att_res.py b/cnn_mx_att_res.py new file mode 100644 index 0000000..0744931 --- /dev/null +++ b/cnn_mx_att_res.py @@ -0,0 +1,117 @@ +# import torch +# import torch.nn as nn +# import torch.optim as optim +# from torch.utils.data import DataLoader, Dataset + +# class ResidualAttentionGate(nn.Module): +# def __init__(self, F_g, F_l, F_int): +# super(ResidualAttentionGate, self).__init__() +# self.W_g = nn.Conv2d(F_g, F_int, kernel_size=1, stride=1, padding=0, bias=True) +# self.W_x = nn.Conv2d(F_l, F_int, kernel_size=1, stride=1, padding=0, bias=True) +# self.psi = nn.Conv2d(F_int, 1, kernel_size=1, stride=1, padding=0, bias=True) +# self.relu = nn.ReLU(inplace=True) +# self.sigmoid = nn.Sigmoid() + +# def forward(self, g, x): +# # Process inputs through attention +# g1 = self.W_g(g) +# x1 = self.W_x(x) +# psi = self.relu(g1 + x1) +# psi = self.sigmoid(self.psi(psi)) + +# # Apply attention to the input feature map `x` +# attention = x * psi + +# # Add residual connection (original input `x` + attention-weighted input) +# output = x + attention +# return output + + +# class AgePredictionCNN(nn.Module): +# def __init__(self, input_shape): +# super(AgePredictionCNN, self).__init__() + +# # Define convolutional and pooling layers +# self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) +# self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + +# self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) +# self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + +# self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) +# self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + +# # Residual Attention Gates +# self.att_gate1 = ResidualAttentionGate(F_g=1, F_l=1, F_int=1) +# self.att_gate2 = ResidualAttentionGate(F_g=1, F_l=1, F_int=1) + +# self.flatten = nn.Flatten() + +# # Fully connected layers (fc1 dimensions are calculated dynamically) +# self.fc1 = None # Placeholder to be initialized dynamically +# self.fc1_bn = None # Placeholder for batch normalization after fc1 +# self.fc2 = nn.Linear(512, 128) +# self.fc2_bn = nn.LayerNorm(128) +# self.dropout = nn.Dropout(p=0.3) # Dropout with 10% probability +# self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + +# self.relu = nn.ReLU() +# self.initialize_fc1(input_shape) + +# def initialize_fc1(self, input_shape): +# # Create a sample input to pass through the convolutional layers +# sample_input = torch.zeros(1, *input_shape) +# x = self.conv1(sample_input) +# x = self.relu(x) +# x = self.pool1(x) +# x = self.conv2(x) +# x = self.relu(x) +# x = self.pool2(x) +# x = self.conv3(x) +# x = self.relu(x) +# x = self.pool3(x) + +# # Pass through attention gates +# x = self.att_gate1(g=x, x=x) +# x = self.att_gate2(g=x, x=x) + +# flattened_size = x.numel() +# self.fc1 = nn.Linear(flattened_size, 512) +# self.fc1_bn = nn.LayerNorm(512) + +# def forward(self, x, sex): +# x = self.conv1(x) +# x = self.relu(x) +# x = self.pool1(x) +# x = self.conv2(x) +# x = self.relu(x) +# x = self.pool2(x) +# x = self.conv3(x) +# x = self.relu(x) +# x = self.pool3(x) + +# # Pass through residual attention gates +# x = self.att_gate1(g=x, x=x) +# x = self.att_gate2(g=x, x=x) + +# x = self.flatten(x) + +# if self.fc1 is None: +# raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + +# x = self.fc1(x) +# x = self.fc1_bn(x) +# x = self.relu(x) +# x = self.dropout(x) + +# x = self.fc2(x) +# x = self.fc2_bn(x) +# x = self.relu(x) +# x = self.dropout(x) + +# # Concatenate `Sex` input +# x = torch.cat((x, sex.unsqueeze(1)), dim=1) +# x = self.fc3(x) + +# return x + diff --git a/cnn_mx_lrelu.py b/cnn_mx_lrelu.py new file mode 100644 index 0000000..6887451 --- /dev/null +++ b/cnn_mx_lrelu.py @@ -0,0 +1,80 @@ + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.flatten = nn.Flatten() + + # Fully connected layers (fc1 dimensions are calculated dynamically) + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.lrelu = nn.LeakyReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.lrelu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.lrelu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.lrelu(x) + x = self.pool3(x) # Apply pooling + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.lrelu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x + diff --git a/cnn_mx_multi_att.py b/cnn_mx_multi_att.py new file mode 100644 index 0000000..2310f68 --- /dev/null +++ b/cnn_mx_multi_att.py @@ -0,0 +1,110 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class MultiScaleAttention(nn.Module): + def __init__(self, in_channels): + super(MultiScaleAttention, self).__init__() + # Convolutions with different kernel sizes for multi-scale feature extraction + self.conv1 = nn.Conv2d(in_channels, 1, kernel_size=3, padding=1) + self.conv2 = nn.Conv2d(in_channels, 1, kernel_size=5, padding=2) + self.conv3 = nn.Conv2d(in_channels, 1, kernel_size=7, padding=3) + # Combine multi-scale features + self.sigmoid = nn.Sigmoid() + + def forward(self, x): + # Extract multi-scale features + feat1 = self.conv1(x) + feat2 = self.conv2(x) + feat3 = self.conv3(x) + # Aggregate features and apply sigmoid for attention + attention = self.sigmoid(feat1 + feat2 + feat3) + # Refine the input features with the attention map + return x * attention + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + self.att1 = MultiScaleAttention(1) # Multi-scale attention after conv1 + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + self.att2 = MultiScaleAttention(1) # Multi-scale attention after conv2 + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + self.att3 = MultiScaleAttention(1) # Multi-scale attention after conv3 + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.3) # Dropout + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.relu(x) + x = self.pool1(x) + x = self.att1(x) # Apply attention after first pooling + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) + x = self.att2(x) # Apply attention after second pooling + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) + x = self.att3(x) # Apply attention after third pooling + flattened_size = x.numel() + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) + + def forward(self, x, sex): + x = self.conv1(x) + x = self.relu(x) + x = self.pool1(x) + x = self.att1(x) # Apply attention + + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) + x = self.att2(x) # Apply attention + + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) + x = self.att3(x) # Apply attention + + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) + x = self.relu(x) + x = self.dropout(x) + + x = self.fc2(x) + x = self.fc2_bn(x) + x = self.relu(x) + x = self.dropout(x) + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_spd.py b/cnn_mx_spd.py new file mode 100644 index 0000000..fc6e737 --- /dev/null +++ b/cnn_mx_spd.py @@ -0,0 +1,97 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + + +class SpatialDropout2d(nn.Dropout2d): + def forward(self, x): + if not self.training or self.p == 0: + return x + mask = torch.ones((x.size(0), x.size(1), 1, 1), device=x.device, dtype=x.dtype) + mask = nn.functional.dropout(mask, self.p, self.training, inplace=True) + return x * mask + + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + self.spatial_dropout1 = SpatialDropout2d(p=0.2) # Added SpatialDropout2d after conv1 + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + self.spatial_dropout2 = SpatialDropout2d(p=0.2) # Added SpatialDropout2d after conv2 + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + self.spatial_dropout3 = SpatialDropout2d(p=0.2) # Added SpatialDropout2d after conv3 + + self.flatten = nn.Flatten() + + # Fully connected layers (fc1 dimensions are calculated dynamically) + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.3) # Dropout with 10% probability + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.swish = nn.SiLU() # Swish activation function + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.swish(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.swish(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.swish(x) + x = self.pool3(x) # Apply pooling + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.swish(x) + x = self.pool1(x) # Apply pooling + x = self.spatial_dropout1(x) # Apply SpatialDropout2d + + x = self.conv2(x) + x = self.swish(x) + x = self.pool2(x) # Apply pooling + x = self.spatial_dropout2(x) # Apply SpatialDropout2d + + x = self.conv3(x) + x = self.swish(x) + x = self.pool3(x) # Apply pooling + x = self.spatial_dropout3(x) # Apply SpatialDropout2d + + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.swish(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.swish(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_sw.py b/cnn_mx_sw.py new file mode 100644 index 0000000..00d3196 --- /dev/null +++ b/cnn_mx_sw.py @@ -0,0 +1,114 @@ + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + + +# best one so far + +import torch +import torch.nn as nn +import torch.optim as optim + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 60), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + self.bn1 = nn.BatchNorm2d(1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 15), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + self.bn2 = nn.BatchNorm2d(1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 6), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + self.bn3 = nn.BatchNorm2d(1) + + self.flatten = nn.Flatten() + + # Fully connected layers + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(512, 128) + self.fc2_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) + self.fc3 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.swish = nn.SiLU() + + self.initialize_fc1(input_shape) + self.initialize_weights() # Call the custom weight initialization + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.swish(x) + x = self.pool1(x) + x = self.conv2(x) + x = self.swish(x) + x = self.pool2(x) + x = self.conv3(x) + x = self.swish(x) + x = self.pool3(x) + flattened_size = x.numel() + self.fc1 = nn.Linear(flattened_size, 512) + self.fc1_bn = nn.LayerNorm(512) + + def initialize_weights(self): + # Initialize weights for all layers + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + #nn.init.xavier_normal_(m.weight) + if m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.BatchNorm2d) or isinstance(m, nn.LayerNorm): + nn.init.constant_(m.weight, 1) + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.Linear): + #nn.init.xavier_normal_(m.weight) + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + nn.init.constant_(m.bias, 0) + + def forward(self, x, sex): + x = self.conv1(x) + x = self.bn1(x) + x = self.swish(x) + x = self.pool1(x) + + x = self.conv2(x) + x = self.bn2(x) + x = self.swish(x) + x = self.pool2(x) + + x = self.conv3(x) + x = self.bn3(x) + x = self.swish(x) + x = self.pool3(x) + + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) + x = self.swish(x) + x = self.dropout(x) + + x = self.fc2(x) + x = self.fc2_bn(x) + x = self.swish(x) + x = self.dropout(x) + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc3(x) + + return x diff --git a/cnn_mx_vl.py b/cnn_mx_vl.py new file mode 100644 index 0000000..5e81c2c --- /dev/null +++ b/cnn_mx_vl.py @@ -0,0 +1,87 @@ +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +class AgePredictionCNN(nn.Module): + def __init__(self, input_shape): + super(AgePredictionCNN, self).__init__() + + # Define convolutional and pooling layers + self.conv1 = nn.Conv2d(1, 1, kernel_size=(10, 85), stride=1) + self.pool1 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv2 = nn.Conv2d(1, 1, kernel_size=(5, 20), stride=1) + self.pool2 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.conv3 = nn.Conv2d(1, 1, kernel_size=(2, 10), stride=1) + self.pool3 = nn.MaxPool2d(kernel_size=2, stride=1) + + self.flatten = nn.Flatten() + + # Fully connected layers (fc1 dimensions are calculated dynamically) + self.fc1 = None # Placeholder to be initialized dynamically + self.fc1_bn = None # Placeholder for batch normalization after fc1 + self.fc2 = nn.Linear(1024, 512) + self.fc2_bn = nn.LayerNorm(512) + self.fc3 = nn.Linear(512, 128) + self.fc3_bn = nn.LayerNorm(128) + self.dropout = nn.Dropout(p=0.1) # Dropout with 10% probability + self.fc4 = nn.Linear(129, 1) # Adding 1 for the `Sex` input + + self.relu = nn.ReLU() + self.initialize_fc1(input_shape) + + def initialize_fc1(self, input_shape): + # Create a sample input to pass through the convolutional layers + sample_input = torch.zeros(1, *input_shape) + x = self.conv1(sample_input) + x = self.relu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) # Apply pooling + + flattened_size = x.numel() # Total number of elements after flattening + self.fc1 = nn.Linear(flattened_size, 1024) + self.fc1_bn = nn.LayerNorm(1024) # Initialize batch normalization for fc1 + + def forward(self, x, sex): + x = self.conv1(x) + x = self.relu(x) + x = self.pool1(x) # Apply pooling + x = self.conv2(x) + x = self.relu(x) + x = self.pool2(x) # Apply pooling + x = self.conv3(x) + x = self.relu(x) + x = self.pool3(x) # Apply pooling + + x = self.flatten(x) + + if self.fc1 is None: + raise ValueError("fc1 layer has not been initialized. Call `initialize_fc1` with the input shape.") + + x = self.fc1(x) + x = self.fc1_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc2(x) + x = self.fc2_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + x = self.fc3(x) + x = self.fc3_bn(x) # Apply batch normalization + x = self.relu(x) + x = self.dropout(x) # Apply dropout + + # Concatenate `Sex` input + x = torch.cat((x, sex.unsqueeze(1)), dim=1) + x = self.fc4(x) + + return x diff --git a/combined_dataset.csv b/combined_dataset.csv new file mode 100644 index 0000000..75c718e --- /dev/null +++ b/combined_dataset.csv @@ -0,0 +1,2232 @@ +ImageID,Sex,Age,filepath +ADNI1283849,F,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1283849_305_S_6845.stripped.N4.nii.gz +ADNI308453,M,61.3,adni_storage/ADNI_nii_gz_bias_corrected/I308453_073_S_4795.stripped.N4.nii.gz +fcon1000Milwaukee_sub61779,F,56.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub61779.stripped.N4.nii.gz +fcon1000Beijing_sub67844,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub67844.stripped.N4.nii.gz +ADNI997517,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I997517_131_S_6170.stripped.N4.nii.gz +DLBS0028440_session_1,F,34.25,dlbs_storage/DLBS_bias_corrected/0028440_session_1.stripped.N4.nii.gz +sub-CC520279,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520279.stripped.N4.nii.gz +sub-CC610653,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610653.stripped.N4.nii.gz +fcon1000AnnArbor_sub18698,M,29.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub18698.stripped.N4.nii.gz +DLBS0028358_session_1,M,66.63,dlbs_storage/DLBS_bias_corrected/0028358_session_1.stripped.N4.nii.gz +sub-CC420587,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420587.stripped.N4.nii.gz +sub-CC520147,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520147.stripped.N4.nii.gz +fcon1000Cambridge_sub13216,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13216.stripped.N4.nii.gz +sub-CC410091,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410091.stripped.N4.nii.gz +ADNI341152,M,60.6,adni_storage/ADNI_nii_gz_bias_corrected/I341152_128_S_4599.stripped.N4.nii.gz +fcon1000Newark_sub41006,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub41006.stripped.N4.nii.gz +DLBS0028376_session_1,F,70.6,dlbs_storage/DLBS_bias_corrected/0028376_session_1.stripped.N4.nii.gz +ADNI363016,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I363016_036_S_4894.stripped.N4.nii.gz +sub-CC510076,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510076.stripped.N4.nii.gz +fcon1000Cambridge_sub04270,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04270.stripped.N4.nii.gz +ADNI1469766,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I1469766_073_S_6670.stripped.N4.nii.gz +fcon1000Berlin_sub91966,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub91966.stripped.N4.nii.gz +fcon1000Cambridge_sub15432,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15432.stripped.N4.nii.gz +fcon1000AnnArbor_sub96621,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub96621.stripped.N4.nii.gz +fcon1000Beijing_sub58614,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58614.stripped.N4.nii.gz +sub-CC420149,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420149.stripped.N4.nii.gz +fcon1000AnnArbor_sub90127,M,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub90127.stripped.N4.nii.gz +DLBS0028633_session_1,M,46.44,dlbs_storage/DLBS_bias_corrected/0028633_session_1.stripped.N4.nii.gz +DLBS0028565_session_1,M,80.84,dlbs_storage/DLBS_bias_corrected/0028565_session_1.stripped.N4.nii.gz +sub-CC320202,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320202.stripped.N4.nii.gz +ADNI999074,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I999074_130_S_6329.stripped.N4.nii.gz +ADNI1490106,M,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I1490106_037_S_6993.stripped.N4.nii.gz +ADNI10453857,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I10453857_037_S_10086.stripped.N4.nii.gz +ADNI313319,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I313319_128_S_4607.stripped.N4.nii.gz +fcon1000Milwaukee_sub76378,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub76378.stripped.N4.nii.gz +fcon1000AnnArbor_sub16960,M,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub16960.stripped.N4.nii.gz +sub-CC520078,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520078.stripped.N4.nii.gz +fcon1000Cleveland_sub80263,F,44.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub80263.stripped.N4.nii.gz +DLBS0028497_session_1,F,49.13,dlbs_storage/DLBS_bias_corrected/0028497_session_1.stripped.N4.nii.gz +sub-CC620793,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620793.stripped.N4.nii.gz +fcon1000Cleveland_sub12330,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub12330.stripped.N4.nii.gz +ADNI341366,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I341366_116_S_4625.stripped.N4.nii.gz +ADNI90756,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90756_051_S_1072.stripped.N4.nii.gz +ADNI308459,M,61.3,adni_storage/ADNI_nii_gz_bias_corrected/I308459_073_S_4795.stripped.N4.nii.gz +sub-CC520477,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520477.stripped.N4.nii.gz +DLBS0028620_session_1,F,70.66,dlbs_storage/DLBS_bias_corrected/0028620_session_1.stripped.N4.nii.gz +ADNI98971,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I98971_016_S_0769.stripped.N4.nii.gz +ADNI1639219,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1639219_011_S_7112.stripped.N4.nii.gz +sub-CC110069,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110069.stripped.N4.nii.gz +fcon1000Beijing_sub39725,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub39725.stripped.N4.nii.gz +DLBS0028585_session_1,F,31.4,dlbs_storage/DLBS_bias_corrected/0028585_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub87745,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub87745.stripped.N4.nii.gz +fcon1000Newark_sub86204,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub86204.stripped.N4.nii.gz +sub-CC510323,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510323.stripped.N4.nii.gz +fcon1000Cambridge_sub62383,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62383.stripped.N4.nii.gz +sub-CC120234,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120234.stripped.N4.nii.gz +ADNI1495816,M,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I1495816_003_S_7010.stripped.N4.nii.gz +sub-CC310008,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310008.stripped.N4.nii.gz +sub-CC320553,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320553.stripped.N4.nii.gz +DLBS0028450_session_1,F,44.99,dlbs_storage/DLBS_bias_corrected/0028450_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub18758,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18758.stripped.N4.nii.gz +ADNI984775,F,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I984775_305_S_6313.stripped.N4.nii.gz +sub-CC721377,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721377.stripped.N4.nii.gz +sub-CC510050,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510050.stripped.N4.nii.gz +ADNI1568731,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I1568731_067_S_7063.stripped.N4.nii.gz +fcon1000Cambridge_sub54846,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub54846.stripped.N4.nii.gz +sub-CC223286,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223286.stripped.N4.nii.gz +sub-CC121106,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121106.stripped.N4.nii.gz +ADNI10888787,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10888787_005_S_10101.stripped.N4.nii.gz +ADNI1315300,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I1315300_305_S_6313.stripped.N4.nii.gz +fcon1000Beijing_sub20765,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20765.stripped.N4.nii.gz +fcon1000Beijing_sub73245,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73245.stripped.N4.nii.gz +fcon1000Beijing_sub80927,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80927.stripped.N4.nii.gz +sub-CC220372,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220372.stripped.N4.nii.gz +fcon1000Cleveland_sub99664,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub99664.stripped.N4.nii.gz +fcon1000Milwaukee_sub91468,M,44.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub91468.stripped.N4.nii.gz +fcon1000Cambridge_sub83683,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub83683.stripped.N4.nii.gz +sub-CC520254,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520254.stripped.N4.nii.gz +DLBS0028422_session_1,F,32.91,dlbs_storage/DLBS_bias_corrected/0028422_session_1.stripped.N4.nii.gz +sub-CC320160,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320160.stripped.N4.nii.gz +DLBS0028612_session_1,F,67.61,dlbs_storage/DLBS_bias_corrected/0028612_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub74386,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub74386.stripped.N4.nii.gz +ADNI10927885,F,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I10927885_035_S_10193.stripped.N4.nii.gz +sub-CC120120,M,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120120.stripped.N4.nii.gz +fcon1000NewYork_sub20676,M,49.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20676.stripped.N4.nii.gz +fcon1000Milwaukee_sub67948,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub67948.stripped.N4.nii.gz +ADNI1038250,F,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I1038250_067_S_6529.stripped.N4.nii.gz +sub-CC420582,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420582.stripped.N4.nii.gz +fcon1000Cambridge_sub47498,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47498.stripped.N4.nii.gz +DLBS0028427_session_1,M,25.7,dlbs_storage/DLBS_bias_corrected/0028427_session_1.stripped.N4.nii.gz +DLBS0028328_session_1,M,30.47,dlbs_storage/DLBS_bias_corrected/0028328_session_1.stripped.N4.nii.gz +ADNI10883231,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I10883231_941_S_10169.stripped.N4.nii.gz +fcon1000Bangor_sub66585,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub66585.stripped.N4.nii.gz +fcon1000NewYork_sub22608,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub22608.stripped.N4.nii.gz +fcon1000Berlin_sub12855,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub12855.stripped.N4.nii.gz +DLBS0028436_session_1,F,75.99,dlbs_storage/DLBS_bias_corrected/0028436_session_1.stripped.N4.nii.gz +sub-CC420217,M,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420217.stripped.N4.nii.gz +ADNI1221673,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1221673_013_S_6780.stripped.N4.nii.gz +sub-CC721504,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721504.stripped.N4.nii.gz +sub-CC620490,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620490.stripped.N4.nii.gz +fcon1000Milwaukee_sub44912,F,49.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub44912.stripped.N4.nii.gz +fcon1000Milwaukee_sub56084,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56084.stripped.N4.nii.gz +fcon1000Newark_sub49705,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub49705.stripped.N4.nii.gz +sub-CC410179,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410179.stripped.N4.nii.gz +DLBS0028460_session_1,F,37.05,dlbs_storage/DLBS_bias_corrected/0028460_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub92288,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92288.stripped.N4.nii.gz +ADNI308627,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I308627_014_S_4039.stripped.N4.nii.gz +fcon1000NewYork_sub16607,M,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub16607.stripped.N4.nii.gz +sub-CC711027,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711027.stripped.N4.nii.gz +ADNI1003993,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1003993_023_S_6399.stripped.N4.nii.gz +sub-CC420226,M,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420226.stripped.N4.nii.gz +DLBS0028458_session_1,F,35.43,dlbs_storage/DLBS_bias_corrected/0028458_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub91556,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub91556.stripped.N4.nii.gz +ADNI99327,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I99327_020_S_1288.stripped.N4.nii.gz +fcon1000Cambridge_sub58360,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58360.stripped.N4.nii.gz +ADNI238745,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I238745_014_S_4039.stripped.N4.nii.gz +fcon1000Cambridge_sub27613,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27613.stripped.N4.nii.gz +DLBS0028547_session_1,F,32.13,dlbs_storage/DLBS_bias_corrected/0028547_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub17109,M,46.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub17109.stripped.N4.nii.gz +sub-CC420004,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420004.stripped.N4.nii.gz +sub-CC720071,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720071.stripped.N4.nii.gz +sub-CC721585,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721585.stripped.N4.nii.gz +fcon1000Cambridge_sub10619,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub10619.stripped.N4.nii.gz +DLBS0028555_session_1,M,64.86,dlbs_storage/DLBS_bias_corrected/0028555_session_1.stripped.N4.nii.gz +ADNI10968674,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10968674_052_S_10252.stripped.N4.nii.gz +sub-CC620406,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620406.stripped.N4.nii.gz +fcon1000Beijing_sub10186,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10186.stripped.N4.nii.gz +fcon1000Atlanta_sub49816,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub49816.stripped.N4.nii.gz +sub-CC520424,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520424.stripped.N4.nii.gz +fcon1000Berlin_sub38279,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub38279.stripped.N4.nii.gz +ADNI10277636,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I10277636_033_S_10005.stripped.N4.nii.gz +fcon1000Beijing_sub34943,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub34943.stripped.N4.nii.gz +fcon1000Cambridge_sub90674,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90674.stripped.N4.nii.gz +fcon1000Beijing_sub85818,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85818.stripped.N4.nii.gz +DLBS0028357_session_1,F,56.36,dlbs_storage/DLBS_bias_corrected/0028357_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub23869,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub23869.stripped.N4.nii.gz +ADNI280812,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I280812_023_S_4448.stripped.N4.nii.gz +sub-CC520097,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520097.stripped.N4.nii.gz +sub-CC620085,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620085.stripped.N4.nii.gz +DLBS0028570_session_1,F,63.31,dlbs_storage/DLBS_bias_corrected/0028570_session_1.stripped.N4.nii.gz +sub-CC610146,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610146.stripped.N4.nii.gz +sub-CC620919,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620919.stripped.N4.nii.gz +sub-CC720941,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720941.stripped.N4.nii.gz +ADNI423071,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I423071_128_S_4607.stripped.N4.nii.gz +fcon1000Beijing_sub76377,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub76377.stripped.N4.nii.gz +DLBS0028444_session_1,F,81.41,dlbs_storage/DLBS_bias_corrected/0028444_session_1.stripped.N4.nii.gz +ADNI290867,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I290867_128_S_4599.stripped.N4.nii.gz +fcon1000Baltimore_sub54329,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub54329.stripped.N4.nii.gz +ADNI998806,F,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I998806_037_S_6271.stripped.N4.nii.gz +ADNI285070,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I285070_073_S_4552.stripped.N4.nii.gz +sub-CC520083,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520083.stripped.N4.nii.gz +DLBS0028552_session_1,F,48.86,dlbs_storage/DLBS_bias_corrected/0028552_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub42253,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub42253.stripped.N4.nii.gz +fcon1000Beijing_sub75878,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub75878.stripped.N4.nii.gz +ADNI1611592,M,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1611592_033_S_6976.stripped.N4.nii.gz +ADNI352948,M,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I352948_002_S_1155.stripped.N4.nii.gz +fcon1000Cambridge_sub35430,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub35430.stripped.N4.nii.gz +fcon1000Cambridge_sub23780,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub23780.stripped.N4.nii.gz +sub-CC110182,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110182.stripped.N4.nii.gz +fcon1000Atlanta_sub72971,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub72971.stripped.N4.nii.gz +ADNI10283161,M,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10283161_941_S_6998.stripped.N4.nii.gz +sub-CC420089,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420089.stripped.N4.nii.gz +sub-CC711244,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711244.stripped.N4.nii.gz +fcon1000Cleveland_sub61868,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub61868.stripped.N4.nii.gz +ADNI1184048,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1184048_022_S_6013.stripped.N4.nii.gz +ADNI966268,F,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I966268_020_S_6227.stripped.N4.nii.gz +fcon1000Cambridge_sub62908,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62908.stripped.N4.nii.gz +fcon1000Beijing_sub96163,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub96163.stripped.N4.nii.gz +fcon1000Munchen_sub36052,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub36052.stripped.N4.nii.gz +ADNI1067189,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1067189_012_S_6073.stripped.N4.nii.gz +DLBS0028424_session_1,F,77.79,dlbs_storage/DLBS_bias_corrected/0028424_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub04665,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04665.stripped.N4.nii.gz +fcon1000Berlin_sub06716,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub06716.stripped.N4.nii.gz +ADNI10883247,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I10883247_037_S_10117.stripped.N4.nii.gz +sub-CC322186,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC322186.stripped.N4.nii.gz +sub-CC410243,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410243.stripped.N4.nii.gz +DLBS0028336_session_1,F,80.65,dlbs_storage/DLBS_bias_corrected/0028336_session_1.stripped.N4.nii.gz +ADNI263858,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I263858_031_S_4024.stripped.N4.nii.gz +sub-CC320616,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320616.stripped.N4.nii.gz +fcon1000Cambridge_sub27230,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27230.stripped.N4.nii.gz +sub-CC120166,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120166.stripped.N4.nii.gz +sub-CC610658,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610658.stripped.N4.nii.gz +ADNI1608103,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1608103_016_S_6941.stripped.N4.nii.gz +ADNI70745,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I70745_016_S_0769.stripped.N4.nii.gz +ADNI10546533,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I10546533_137_S_6906.stripped.N4.nii.gz +fcon1000Beijing_sub07716,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07716.stripped.N4.nii.gz +fcon1000Beijing_sub33943,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33943.stripped.N4.nii.gz +sub-CC720329,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720329.stripped.N4.nii.gz +ADNI1488791,F,54.9,adni_storage/ADNI_nii_gz_bias_corrected/I1488791_037_S_6951.stripped.N4.nii.gz +ADNI270530,M,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I270530_014_S_4039.stripped.N4.nii.gz +fcon1000Cambridge_sub52442,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52442.stripped.N4.nii.gz +sub-CC510392,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510392.stripped.N4.nii.gz +sub-CC222120,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222120.stripped.N4.nii.gz +fcon1000Atlanta_sub18219,F,33.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub18219.stripped.N4.nii.gz +ADNI417668,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I417668_128_S_4599.stripped.N4.nii.gz +sub-CC520745,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520745.stripped.N4.nii.gz +ADNI879209,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I879209_114_S_6039.stripped.N4.nii.gz +fcon1000Beijing_sub36580,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub36580.stripped.N4.nii.gz +fcon1000Cambridge_sub50953,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50953.stripped.N4.nii.gz +fcon1000AnnArbor_sub62819,M,65.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub62819.stripped.N4.nii.gz +sub-CC222797,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222797.stripped.N4.nii.gz +DLBS0028546_session_1,M,21.71,dlbs_storage/DLBS_bias_corrected/0028546_session_1.stripped.N4.nii.gz +sub-CC112141,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC112141.stripped.N4.nii.gz +fcon1000Beijing_sub73279,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73279.stripped.N4.nii.gz +sub-CC621080,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621080.stripped.N4.nii.gz +fcon1000Cambridge_sub77435,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77435.stripped.N4.nii.gz +sub-CC310402,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310402.stripped.N4.nii.gz +fcon1000Beijing_sub28206,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28206.stripped.N4.nii.gz +fcon1000Munchen_sub28697,F,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub28697.stripped.N4.nii.gz +DLBS0028487_session_1,F,73.56,dlbs_storage/DLBS_bias_corrected/0028487_session_1.stripped.N4.nii.gz +sub-CC710566,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710566.stripped.N4.nii.gz +fcon1000Cambridge_sub93609,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93609.stripped.N4.nii.gz +sub-CC121158,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121158.stripped.N4.nii.gz +sub-CC620279,M,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620279.stripped.N4.nii.gz +fcon1000Baltimore_sub23750,M,37.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub23750.stripped.N4.nii.gz +sub-CC310142,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310142.stripped.N4.nii.gz +ADNI442428,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I442428_041_S_4874.stripped.N4.nii.gz +DLBS0028337_session_1,F,53.34,dlbs_storage/DLBS_bias_corrected/0028337_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub11072,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub11072.stripped.N4.nii.gz +ADNI10461519,F,61.9,adni_storage/ADNI_nii_gz_bias_corrected/I10461519_022_S_10043.stripped.N4.nii.gz +fcon1000NewYork_sub20691,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20691.stripped.N4.nii.gz +fcon1000Beijing_sub48501,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48501.stripped.N4.nii.gz +sub-CC220223,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220223.stripped.N4.nii.gz +ADNI907713,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I907713_014_S_6076.stripped.N4.nii.gz +fcon1000AnnArbor_sub51248,M,40.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub51248.stripped.N4.nii.gz +DLBS0028483_session_1,F,47.0,dlbs_storage/DLBS_bias_corrected/0028483_session_1.stripped.N4.nii.gz +fcon1000Newark_sub59397,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub59397.stripped.N4.nii.gz +fcon1000Beijing_sub73098,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73098.stripped.N4.nii.gz +sub-CC420566,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420566.stripped.N4.nii.gz +fcon1000Berlin_sub91116,M,39.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub91116.stripped.N4.nii.gz +sub-CC620466,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620466.stripped.N4.nii.gz +sub-CC310463,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310463.stripped.N4.nii.gz +ADNI1438743,F,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1438743_114_S_6917.stripped.N4.nii.gz +DLBS0028389_session_1,M,33.45,dlbs_storage/DLBS_bias_corrected/0028389_session_1.stripped.N4.nii.gz +ADNI386092,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I386092_041_S_4874.stripped.N4.nii.gz +ADNI341369,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I341369_116_S_4625.stripped.N4.nii.gz +sub-CC721107,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721107.stripped.N4.nii.gz +fcon1000Cambridge_sub21755,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub21755.stripped.N4.nii.gz +sub-CC520211,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520211.stripped.N4.nii.gz +sub-CC220999,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220999.stripped.N4.nii.gz +sub-CC710446,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710446.stripped.N4.nii.gz +fcon1000Beijing_sub82714,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82714.stripped.N4.nii.gz +ADNI296876,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I296876_012_S_4642.stripped.N4.nii.gz +fcon1000Beijing_sub30556,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30556.stripped.N4.nii.gz +fcon1000Beijing_sub28801,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28801.stripped.N4.nii.gz +ADNI86563,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I86563_016_S_1121.stripped.N4.nii.gz +fcon1000Beijing_sub17688,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17688.stripped.N4.nii.gz +sub-CC610178,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610178.stripped.N4.nii.gz +ADNI1577482,F,56.7,adni_storage/ADNI_nii_gz_bias_corrected/I1577482_305_S_6899.stripped.N4.nii.gz +DLBS0028475_session_1,M,54.05,dlbs_storage/DLBS_bias_corrected/0028475_session_1.stripped.N4.nii.gz +ADNI271073,M,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I271073_116_S_4195.stripped.N4.nii.gz +DLBS0028531_session_1,F,21.27,dlbs_storage/DLBS_bias_corrected/0028531_session_1.stripped.N4.nii.gz +sub-CC120550,M,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120550.stripped.N4.nii.gz +fcon1000Cambridge_sub73399,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73399.stripped.N4.nii.gz +fcon1000Beijing_sub86114,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub86114.stripped.N4.nii.gz +fcon1000Beijing_sub62966,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62966.stripped.N4.nii.gz +DLBS0028384_session_1,F,30.5,dlbs_storage/DLBS_bias_corrected/0028384_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub66781,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66781.stripped.N4.nii.gz +sub-CC221733,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221733.stripped.N4.nii.gz +fcon1000Beijing_sub66158,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66158.stripped.N4.nii.gz +sub-CC610344,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610344.stripped.N4.nii.gz +fcon1000Milwaukee_sub49975,M,46.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub49975.stripped.N4.nii.gz +DLBS0028332_session_1,M,71.29,dlbs_storage/DLBS_bias_corrected/0028332_session_1.stripped.N4.nii.gz +DLBS0028471_session_1,F,67.47,dlbs_storage/DLBS_bias_corrected/0028471_session_1.stripped.N4.nii.gz +ADNI345557,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345557_019_S_5019.stripped.N4.nii.gz +fcon1000Leiden_sub52922,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub52922.stripped.N4.nii.gz +sub-CC210250,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210250.stripped.N4.nii.gz +ADNI1092245,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1092245_114_S_6039.stripped.N4.nii.gz +fcon1000Newark_sub43517,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub43517.stripped.N4.nii.gz +fcon1000Bangor_sub00031,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub00031.stripped.N4.nii.gz +fcon1000NewYork_sub46856,F,8.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub46856.stripped.N4.nii.gz +ADNI1032324,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I1032324_070_S_6548.stripped.N4.nii.gz +sub-CC610594,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610594.stripped.N4.nii.gz +fcon1000Munchen_sub09035,M,70.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub09035.stripped.N4.nii.gz +fcon1000Beijing_sub65659,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub65659.stripped.N4.nii.gz +fcon1000Cambridge_sub05453,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub05453.stripped.N4.nii.gz +fcon1000Cambridge_sub51050,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51050.stripped.N4.nii.gz +sub-CC410173,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410173.stripped.N4.nii.gz +DLBS0028407_session_1,M,86.86,dlbs_storage/DLBS_bias_corrected/0028407_session_1.stripped.N4.nii.gz +ADNI1304804,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I1304804_168_S_6085.stripped.N4.nii.gz +ADNI365456,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I365456_073_S_4795.stripped.N4.nii.gz +fcon1000Milwaukee_sub98971,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub98971.stripped.N4.nii.gz +sub-CC420261,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420261.stripped.N4.nii.gz +DLBS0028390_session_1,M,22.5,dlbs_storage/DLBS_bias_corrected/0028390_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub73317,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73317.stripped.N4.nii.gz +fcon1000Cambridge_sub67117,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub67117.stripped.N4.nii.gz +ADNI1457865,F,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I1457865_137_S_6903.stripped.N4.nii.gz +DLBS0028351_session_1,M,83.73,dlbs_storage/DLBS_bias_corrected/0028351_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub50859,F,79.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub50859.stripped.N4.nii.gz +ADNI1173877,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1173877_067_S_6525.stripped.N4.nii.gz +fcon1000Beijing_sub92430,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92430.stripped.N4.nii.gz +ADNI952046,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I952046_037_S_6141.stripped.N4.nii.gz +fcon1000Cambridge_sub88853,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88853.stripped.N4.nii.gz +DLBS0028575_session_1,M,81.02,dlbs_storage/DLBS_bias_corrected/0028575_session_1.stripped.N4.nii.gz +sub-CC220713,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220713.stripped.N4.nii.gz +DLBS0028600_session_1,M,70.31,dlbs_storage/DLBS_bias_corrected/0028600_session_1.stripped.N4.nii.gz +sub-CC110174,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110174.stripped.N4.nii.gz +fcon1000Beijing_sub59448,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub59448.stripped.N4.nii.gz +fcon1000Berlin_sub95068,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub95068.stripped.N4.nii.gz +ADNI944155,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I944155_116_S_6129.stripped.N4.nii.gz +sub-CC220419,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220419.stripped.N4.nii.gz +fcon1000Beijing_sub17642,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17642.stripped.N4.nii.gz +sub-CC520215,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520215.stripped.N4.nii.gz +fcon1000Bangor_sub36736,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub36736.stripped.N4.nii.gz +DLBS0028480_session_1,F,40.26,dlbs_storage/DLBS_bias_corrected/0028480_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub13093,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13093.stripped.N4.nii.gz +fcon1000NewYork_sub69779,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub69779.stripped.N4.nii.gz +fcon1000Cambridge_sub12346,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub12346.stripped.N4.nii.gz +ADNI62032,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I62032_016_S_1121.stripped.N4.nii.gz +sub-CC410169,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410169.stripped.N4.nii.gz +sub-CC310450,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310450.stripped.N4.nii.gz +DLBS0028520_session_1,F,65.52,dlbs_storage/DLBS_bias_corrected/0028520_session_1.stripped.N4.nii.gz +sub-CC510639,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510639.stripped.N4.nii.gz +sub-CC420286,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420286.stripped.N4.nii.gz +fcon1000Leiden_sub57187,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub57187.stripped.N4.nii.gz +sub-CC312222,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC312222.stripped.N4.nii.gz +fcon1000Bangor_sub03557,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub03557.stripped.N4.nii.gz +DLBS0028545_session_1,F,72.25,dlbs_storage/DLBS_bias_corrected/0028545_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub38454,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub38454.stripped.N4.nii.gz +fcon1000Beijing_sub17603,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17603.stripped.N4.nii.gz +DLBS0028405_session_1,F,86.45,dlbs_storage/DLBS_bias_corrected/0028405_session_1.stripped.N4.nii.gz +sub-CC220284,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220284.stripped.N4.nii.gz +DLBS0028629_session_1,F,81.12,dlbs_storage/DLBS_bias_corrected/0028629_session_1.stripped.N4.nii.gz +sub-CC620454,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620454.stripped.N4.nii.gz +ADNI10952529,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I10952529_037_S_10062.stripped.N4.nii.gz +sub-CC420776,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420776.stripped.N4.nii.gz +fcon1000Cambridge_sub55114,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55114.stripped.N4.nii.gz +sub-CC210526,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210526.stripped.N4.nii.gz +fcon1000AnnArbor_sub04111,M,25.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub04111.stripped.N4.nii.gz +fcon1000Beijing_sub45552,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub45552.stripped.N4.nii.gz +sub-CC710214,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710214.stripped.N4.nii.gz +sub-CC510329,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510329.stripped.N4.nii.gz +DLBS0028454_session_1,M,42.92,dlbs_storage/DLBS_bias_corrected/0028454_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub30421,M,17.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub30421.stripped.N4.nii.gz +DLBS0028368_session_1,M,79.65,dlbs_storage/DLBS_bias_corrected/0028368_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub84371,M,38.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub84371.stripped.N4.nii.gz +ADNI1558064,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I1558064_011_S_7048.stripped.N4.nii.gz +fcon1000Cambridge_sub00156,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub00156.stripped.N4.nii.gz +sub-CC510255,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510255.stripped.N4.nii.gz +sub-CC210304,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210304.stripped.N4.nii.gz +fcon1000NewYork_sub29935,F,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29935.stripped.N4.nii.gz +fcon1000Beijing_sub73421,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73421.stripped.N4.nii.gz +DLBS0028369_session_1,F,62.67,dlbs_storage/DLBS_bias_corrected/0028369_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub20317,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub20317.stripped.N4.nii.gz +sub-CC320870,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320870.stripped.N4.nii.gz +fcon1000Cambridge_sub14194,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14194.stripped.N4.nii.gz +sub-CC520391,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520391.stripped.N4.nii.gz +sub-CC110319,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110319.stripped.N4.nii.gz +fcon1000AnnArbor_sub72416,M,80.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub72416.stripped.N4.nii.gz +ADNI263857,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I263857_031_S_4024.stripped.N4.nii.gz +ADNI10888807,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I10888807_019_S_10164.stripped.N4.nii.gz +fcon1000AnnArbor_sub70106,M,17.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub70106.stripped.N4.nii.gz +DLBS0028558_session_1,F,24.83,dlbs_storage/DLBS_bias_corrected/0028558_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub34781,M,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub34781.stripped.N4.nii.gz +fcon1000Atlanta_sub32093,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub32093.stripped.N4.nii.gz +sub-CC520560,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520560.stripped.N4.nii.gz +sub-CC621248,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621248.stripped.N4.nii.gz +sub-CC420396,M,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420396.stripped.N4.nii.gz +ADNI1146201,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1146201_037_S_6141.stripped.N4.nii.gz +sub-CC122172,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122172.stripped.N4.nii.gz +fcon1000Beijing_sub11344,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub11344.stripped.N4.nii.gz +sub-CC321000,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321000.stripped.N4.nii.gz +sub-CC620026,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620026.stripped.N4.nii.gz +sub-CC320500,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320500.stripped.N4.nii.gz +sub-CC721052,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721052.stripped.N4.nii.gz +fcon1000Beijing_sub28907,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28907.stripped.N4.nii.gz +fcon1000Cambridge_sub08204,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08204.stripped.N4.nii.gz +fcon1000Cambridge_sub16846,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16846.stripped.N4.nii.gz +DLBS0028341_session_1,F,34.81,dlbs_storage/DLBS_bias_corrected/0028341_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub52300,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52300.stripped.N4.nii.gz +DLBS0028393_session_1,M,61.69,dlbs_storage/DLBS_bias_corrected/0028393_session_1.stripped.N4.nii.gz +DLBS0028421_session_1,M,67.05,dlbs_storage/DLBS_bias_corrected/0028421_session_1.stripped.N4.nii.gz +sub-CC520013,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520013.stripped.N4.nii.gz +sub-CC210314,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210314.stripped.N4.nii.gz +fcon1000AnnArbor_sub86367,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub86367.stripped.N4.nii.gz +sub-CC420143,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420143.stripped.N4.nii.gz +sub-CC320206,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320206.stripped.N4.nii.gz +DLBS0028492_session_1,M,52.89,dlbs_storage/DLBS_bias_corrected/0028492_session_1.stripped.N4.nii.gz +sub-CC321506,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321506.stripped.N4.nii.gz +DLBS0028493_session_1,M,53.36,dlbs_storage/DLBS_bias_corrected/0028493_session_1.stripped.N4.nii.gz +ADNI1461223,M,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1461223_070_S_6966.stripped.N4.nii.gz +fcon1000Beijing_sub30310,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30310.stripped.N4.nii.gz +ADNI1142218,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1142218_033_S_6697.stripped.N4.nii.gz +sub-CC723197,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC723197.stripped.N4.nii.gz +ADNI341787,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I341787_130_S_4982.stripped.N4.nii.gz +DLBS0028333_session_1,F,76.45,dlbs_storage/DLBS_bias_corrected/0028333_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95959,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95959.stripped.N4.nii.gz +DLBS0028530_session_1,F,49.86,dlbs_storage/DLBS_bias_corrected/0028530_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub22201,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22201.stripped.N4.nii.gz +ADNI321225,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I321225_041_S_4874.stripped.N4.nii.gz +ADNI1020137,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1020137_019_S_6483.stripped.N4.nii.gz +ADNI1553005,M,63.7,adni_storage/ADNI_nii_gz_bias_corrected/I1553005_941_S_7051.stripped.N4.nii.gz +ADNI297850,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I297850_031_S_4024.stripped.N4.nii.gz +ADNI1591455,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I1591455_014_S_7072.stripped.N4.nii.gz +DLBS0028468_session_1,F,44.31,dlbs_storage/DLBS_bias_corrected/0028468_session_1.stripped.N4.nii.gz +ADNI400949,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400949_073_S_4795.stripped.N4.nii.gz +sub-CC510259,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510259.stripped.N4.nii.gz +ADNI1061955,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1061955_109_S_6364.stripped.N4.nii.gz +fcon1000Cleveland_sub47482,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub47482.stripped.N4.nii.gz +sub-CC620005,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620005.stripped.N4.nii.gz +DLBS0028413_session_1,F,81.57,dlbs_storage/DLBS_bias_corrected/0028413_session_1.stripped.N4.nii.gz +DLBS0028415_session_1,F,32.05,dlbs_storage/DLBS_bias_corrected/0028415_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub64969,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub64969.stripped.N4.nii.gz +sub-CC510256,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510256.stripped.N4.nii.gz +fcon1000Leiden_sub09796,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub09796.stripped.N4.nii.gz +sub-CC310410,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310410.stripped.N4.nii.gz +ADNI1565078,M,57.6,adni_storage/ADNI_nii_gz_bias_corrected/I1565078_067_S_7059.stripped.N4.nii.gz +sub-CC310052,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310052.stripped.N4.nii.gz +sub-CC420236,M,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420236.stripped.N4.nii.gz +ADNI363013,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I363013_036_S_4894.stripped.N4.nii.gz +DLBS0028522_session_1,F,34.99,dlbs_storage/DLBS_bias_corrected/0028522_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub91399,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91399.stripped.N4.nii.gz +fcon1000NewYork_sub38088,M,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub38088.stripped.N4.nii.gz +DLBS0028348_session_1,M,23.15,dlbs_storage/DLBS_bias_corrected/0028348_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub48830,F,22.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub48830.stripped.N4.nii.gz +fcon1000AnnArbor_sub39635,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub39635.stripped.N4.nii.gz +fcon1000NewYork_sub31671,M,12.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub31671.stripped.N4.nii.gz +fcon1000Cambridge_sub76745,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub76745.stripped.N4.nii.gz +fcon1000Beijing_sub89592,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89592.stripped.N4.nii.gz +ADNI387592,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I387592_036_S_4894.stripped.N4.nii.gz +ADNI247840,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I247840_037_S_4028.stripped.N4.nii.gz +fcon1000Beijing_sub18326,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18326.stripped.N4.nii.gz +ADNI1634179,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1634179_013_S_7103.stripped.N4.nii.gz +sub-CC710154,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710154.stripped.N4.nii.gz +sub-CC410097,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410097.stripped.N4.nii.gz +fcon1000Beijing_sub85543,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85543.stripped.N4.nii.gz +ADNI105503,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I105503_067_S_1253.stripped.N4.nii.gz +fcon1000AnnArbor_sub75922,M,18.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub75922.stripped.N4.nii.gz +sub-CC220151,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220151.stripped.N4.nii.gz +fcon1000Cambridge_sub68101,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub68101.stripped.N4.nii.gz +sub-CC120347,F,21.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120347.stripped.N4.nii.gz +fcon1000NewYork_sub73035,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub73035.stripped.N4.nii.gz +sub-CC620262,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620262.stripped.N4.nii.gz +DLBS0028383_session_1,M,72.96,dlbs_storage/DLBS_bias_corrected/0028383_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub53998,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub53998.stripped.N4.nii.gz +fcon1000Beijing_sub92859,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92859.stripped.N4.nii.gz +ADNI1482729,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1482729_067_S_6529.stripped.N4.nii.gz +ADNI10951704,M,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I10951704_035_S_10241.stripped.N4.nii.gz +fcon1000Milwaukee_sub21350,F,61.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub21350.stripped.N4.nii.gz +DLBS0028463_session_1,F,68.35,dlbs_storage/DLBS_bias_corrected/0028463_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub88464,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88464.stripped.N4.nii.gz +fcon1000Cambridge_sub78547,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78547.stripped.N4.nii.gz +sub-CC110411,M,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110411.stripped.N4.nii.gz +sub-CC510242,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510242.stripped.N4.nii.gz +ADNI1469825,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1469825_073_S_6929.stripped.N4.nii.gz +ADNI1028361,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1028361_109_S_6406.stripped.N4.nii.gz +ADNI346860,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I346860_128_S_4607.stripped.N4.nii.gz +fcon1000Cambridge_sub77989,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77989.stripped.N4.nii.gz +ADNI10955657,M,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I10955657_389_S_10156.stripped.N4.nii.gz +fcon1000Cambridge_sub15905,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15905.stripped.N4.nii.gz +sub-CC720103,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720103.stripped.N4.nii.gz +fcon1000NewYork_sub07578,F,20.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub07578.stripped.N4.nii.gz +sub-CC221648,F,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221648.stripped.N4.nii.gz +ADNI47973,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I47973_067_S_1253.stripped.N4.nii.gz +DLBS0028539_session_1,F,24.22,dlbs_storage/DLBS_bias_corrected/0028539_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub20948,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20948.stripped.N4.nii.gz +fcon1000Baltimore_sub37548,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub37548.stripped.N4.nii.gz +fcon1000Beijing_sub31729,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub31729.stripped.N4.nii.gz +sub-CC221755,M,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221755.stripped.N4.nii.gz +sub-CC620685,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620685.stripped.N4.nii.gz +sub-CC121200,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121200.stripped.N4.nii.gz +fcon1000Newark_sub32580,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub32580.stripped.N4.nii.gz +DLBS0028540_session_1,F,71.04,dlbs_storage/DLBS_bias_corrected/0028540_session_1.stripped.N4.nii.gz +sub-CC110101,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110101.stripped.N4.nii.gz +fcon1000NewYork_sub50559,M,22.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub50559.stripped.N4.nii.gz +DLBS0028589_session_1,F,59.75,dlbs_storage/DLBS_bias_corrected/0028589_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub73823,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub73823.stripped.N4.nii.gz +sub-CC321976,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321976.stripped.N4.nii.gz +fcon1000Munchen_sub72095,F,71.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub72095.stripped.N4.nii.gz +sub-CC220198,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220198.stripped.N4.nii.gz +ADNI389099,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I389099_067_S_5205.stripped.N4.nii.gz +fcon1000Bangor_sub81464,M,38.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub81464.stripped.N4.nii.gz +sub-CC221585,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221585.stripped.N4.nii.gz +fcon1000Cambridge_sub45354,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45354.stripped.N4.nii.gz +fcon1000Beijing_sub16943,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub16943.stripped.N4.nii.gz +ADNI10302840,F,59.5,adni_storage/ADNI_nii_gz_bias_corrected/I10302840_016_S_6773.stripped.N4.nii.gz +sub-CC620090,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620090.stripped.N4.nii.gz +fcon1000Bangor_sub82625,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub82625.stripped.N4.nii.gz +ADNI1609469,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I1609469_035_S_6927.stripped.N4.nii.gz +sub-CC320002,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320002.stripped.N4.nii.gz +fcon1000Milwaukee_sub87910,M,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub87910.stripped.N4.nii.gz +DLBS0028499_session_1,M,51.56,dlbs_storage/DLBS_bias_corrected/0028499_session_1.stripped.N4.nii.gz +sub-CC420202,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420202.stripped.N4.nii.gz +fcon1000Cambridge_sub63412,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub63412.stripped.N4.nii.gz +sub-CC510354,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510354.stripped.N4.nii.gz +ADNI10244463,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I10244463_035_S_6927.stripped.N4.nii.gz +sub-CC510551,M,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510551.stripped.N4.nii.gz +fcon1000Leiden_sub99856,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub99856.stripped.N4.nii.gz +fcon1000AnnArbor_sub11043,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub11043.stripped.N4.nii.gz +DLBS0028417_session_1,F,31.77,dlbs_storage/DLBS_bias_corrected/0028417_session_1.stripped.N4.nii.gz +sub-CC121411,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121411.stripped.N4.nii.gz +fcon1000Beijing_sub56136,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56136.stripped.N4.nii.gz +DLBS0028435_session_1,M,33.01,dlbs_storage/DLBS_bias_corrected/0028435_session_1.stripped.N4.nii.gz +DLBS0028366_session_1,F,23.53,dlbs_storage/DLBS_bias_corrected/0028366_session_1.stripped.N4.nii.gz +ADNI1590221,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1590221_053_S_7086.stripped.N4.nii.gz +fcon1000Cambridge_sub58470,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58470.stripped.N4.nii.gz +fcon1000Milwaukee_sub00917,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub00917.stripped.N4.nii.gz +ADNI290869,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I290869_128_S_4599.stripped.N4.nii.gz +ADNI140027,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I140027_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub50498,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50498.stripped.N4.nii.gz +DLBS0028380_session_1,F,83.22,dlbs_storage/DLBS_bias_corrected/0028380_session_1.stripped.N4.nii.gz +DLBS0028636_session_1,F,65.12,dlbs_storage/DLBS_bias_corrected/0028636_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub70942,M,70.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub70942.stripped.N4.nii.gz +ADNI1592054,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1592054_014_S_7080.stripped.N4.nii.gz +DLBS0028378_session_1,F,69.19,dlbs_storage/DLBS_bias_corrected/0028378_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub12255,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub12255.stripped.N4.nii.gz +sub-CC620121,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620121.stripped.N4.nii.gz +sub-CC321087,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321087.stripped.N4.nii.gz +ADNI1539706,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I1539706_019_S_6635.stripped.N4.nii.gz +ADNI73380,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I73380_051_S_1072.stripped.N4.nii.gz +fcon1000Beijing_sub41621,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub41621.stripped.N4.nii.gz +fcon1000Cambridge_sub78614,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78614.stripped.N4.nii.gz +ADNI342681,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I342681_073_S_5016.stripped.N4.nii.gz +fcon1000Beijing_sub82826,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82826.stripped.N4.nii.gz +fcon1000Beijing_sub93856,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub93856.stripped.N4.nii.gz +fcon1000Milwaukee_sub28782,F,64.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub28782.stripped.N4.nii.gz +sub-CC410101,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410101.stripped.N4.nii.gz +ADNI1583750,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I1583750_067_S_7068.stripped.N4.nii.gz +sub-CC610292,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610292.stripped.N4.nii.gz +DLBS0028371_session_1,M,31.11,dlbs_storage/DLBS_bias_corrected/0028371_session_1.stripped.N4.nii.gz +sub-CC120061,M,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120061.stripped.N4.nii.gz +ADNI10454329,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I10454329_003_S_10073.stripped.N4.nii.gz +fcon1000Cambridge_sub40635,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub40635.stripped.N4.nii.gz +DLBS0028581_session_1,F,74.58,dlbs_storage/DLBS_bias_corrected/0028581_session_1.stripped.N4.nii.gz +ADNI302014,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I302014_037_S_4028.stripped.N4.nii.gz +sub-CC321544,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321544.stripped.N4.nii.gz +fcon1000Beijing_sub08251,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08251.stripped.N4.nii.gz +DLBS0028448_session_1,M,69.32,dlbs_storage/DLBS_bias_corrected/0028448_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub83430,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83430.stripped.N4.nii.gz +fcon1000Cambridge_sub82113,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82113.stripped.N4.nii.gz +sub-CC410121,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410121.stripped.N4.nii.gz +DLBS0028498_session_1,M,67.16,dlbs_storage/DLBS_bias_corrected/0028498_session_1.stripped.N4.nii.gz +sub-CC520597,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520597.stripped.N4.nii.gz +sub-CC420356,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420356.stripped.N4.nii.gz +ADNI293371,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I293371_128_S_4607.stripped.N4.nii.gz +DLBS0028339_session_1,F,65.23,dlbs_storage/DLBS_bias_corrected/0028339_session_1.stripped.N4.nii.gz +sub-CC420729,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420729.stripped.N4.nii.gz +ADNI10369709,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I10369709_073_S_10054.stripped.N4.nii.gz +fcon1000Berlin_sub86111,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub86111.stripped.N4.nii.gz +ADNI495308,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I495308_128_S_4607.stripped.N4.nii.gz +ADNI321230,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I321230_041_S_4874.stripped.N4.nii.gz +ADNI461101,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I461101_137_S_0994.stripped.N4.nii.gz +DLBS0028403_session_1,M,68.71,dlbs_storage/DLBS_bias_corrected/0028403_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub30943,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub30943.stripped.N4.nii.gz +fcon1000Baltimore_sub94042,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub94042.stripped.N4.nii.gz +fcon1000Beijing_sub40427,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub40427.stripped.N4.nii.gz +sub-CC721392,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721392.stripped.N4.nii.gz +sub-CC520552,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520552.stripped.N4.nii.gz +ADNI256321,M,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I256321_014_S_4039.stripped.N4.nii.gz +ADNI10568658,M,56.7,adni_storage/ADNI_nii_gz_bias_corrected/I10568658_941_S_10065.stripped.N4.nii.gz +fcon1000Leiden_sub36743,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub36743.stripped.N4.nii.gz +ADNI1498335,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1498335_016_S_6773.stripped.N4.nii.gz +fcon1000AnnArbor_sub13636,M,29.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub13636.stripped.N4.nii.gz +fcon1000AnnArbor_sub49687,M,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub49687.stripped.N4.nii.gz +sub-CC320814,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320814.stripped.N4.nii.gz +ADNI1446680,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I1446680_070_S_6942.stripped.N4.nii.gz +sub-CC620044,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620044.stripped.N4.nii.gz +sub-CC510220,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510220.stripped.N4.nii.gz +ADNI313456,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I313456_128_S_4599.stripped.N4.nii.gz +ADNI10970157,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I10970157_073_S_10254.stripped.N4.nii.gz +sub-CC412021,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC412021.stripped.N4.nii.gz +sub-CC610212,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610212.stripped.N4.nii.gz +sub-CC220843,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220843.stripped.N4.nii.gz +sub-CC620610,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620610.stripped.N4.nii.gz +ADNI1558652,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1558652_014_S_6076.stripped.N4.nii.gz +fcon1000Cambridge_sub65682,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub65682.stripped.N4.nii.gz +DLBS0028385_session_1,F,61.53,dlbs_storage/DLBS_bias_corrected/0028385_session_1.stripped.N4.nii.gz +sub-CC410432,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410432.stripped.N4.nii.gz +sub-CC321529,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321529.stripped.N4.nii.gz +sub-CC120640,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120640.stripped.N4.nii.gz +ADNI460665,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460665_073_S_4795.stripped.N4.nii.gz +fcon1000AnnArbor_sub64831,M,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub64831.stripped.N4.nii.gz +ADNI10349528,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I10349528_035_S_7004.stripped.N4.nii.gz +sub-CC221580,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221580.stripped.N4.nii.gz +ADNI254253,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I254253_116_S_4195.stripped.N4.nii.gz +sub-CC410323,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410323.stripped.N4.nii.gz +DLBS0028464_session_1,F,82.43,dlbs_storage/DLBS_bias_corrected/0028464_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub14692,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub14692.stripped.N4.nii.gz +fcon1000Cambridge_sub82213,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82213.stripped.N4.nii.gz +fcon1000Bangor_sub46870,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub46870.stripped.N4.nii.gz +sub-CC220203,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220203.stripped.N4.nii.gz +fcon1000Cleveland_sub85091,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub85091.stripped.N4.nii.gz +sub-CC310051,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310051.stripped.N4.nii.gz +sub-CC120182,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120182.stripped.N4.nii.gz +ADNI335130,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I335130_073_S_4552.stripped.N4.nii.gz +sub-CC510483,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510483.stripped.N4.nii.gz +fcon1000NewYork_sub13384,F,28.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub13384.stripped.N4.nii.gz +DLBS0028327_session_1,F,73.29,dlbs_storage/DLBS_bias_corrected/0028327_session_1.stripped.N4.nii.gz +ADNI10666738,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I10666738_011_S_10045.stripped.N4.nii.gz +DLBS0028580_session_1,F,60.28,dlbs_storage/DLBS_bias_corrected/0028580_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub86115,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub86115.stripped.N4.nii.gz +sub-CC410040,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410040.stripped.N4.nii.gz +ADNI368463,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I368463_073_S_4552.stripped.N4.nii.gz +sub-CC520042,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520042.stripped.N4.nii.gz +fcon1000Cambridge_sub53615,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53615.stripped.N4.nii.gz +DLBS0028507_session_1,M,36.91,dlbs_storage/DLBS_bias_corrected/0028507_session_1.stripped.N4.nii.gz +sub-CC510434,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510434.stripped.N4.nii.gz +fcon1000Beijing_sub82980,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82980.stripped.N4.nii.gz +fcon1000NewYork_sub30247,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30247.stripped.N4.nii.gz +ADNI37606,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37606_051_S_1072.stripped.N4.nii.gz +DLBS0028562_session_1,F,24.29,dlbs_storage/DLBS_bias_corrected/0028562_session_1.stripped.N4.nii.gz +DLBS0028543_session_1,F,81.28,dlbs_storage/DLBS_bias_corrected/0028543_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub22736,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub22736.stripped.N4.nii.gz +sub-CC420198,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420198.stripped.N4.nii.gz +sub-CC410248,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410248.stripped.N4.nii.gz +sub-CC121317,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121317.stripped.N4.nii.gz +ADNI417674,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I417674_128_S_4599.stripped.N4.nii.gz +sub-CC220806,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220806.stripped.N4.nii.gz +DLBS0028419_session_1,F,78.87,dlbs_storage/DLBS_bias_corrected/0028419_session_1.stripped.N4.nii.gz +DLBS0028356_session_1,F,43.21,dlbs_storage/DLBS_bias_corrected/0028356_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub40037,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub40037.stripped.N4.nii.gz +fcon1000Beijing_sub32517,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub32517.stripped.N4.nii.gz +ADNI1118422,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I1118422_006_S_6651.stripped.N4.nii.gz +sub-CC221935,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221935.stripped.N4.nii.gz +ADNI958916,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I958916_070_S_6191.stripped.N4.nii.gz +sub-CC420182,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420182.stripped.N4.nii.gz +ADNI335038,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I335038_116_S_4195.stripped.N4.nii.gz +sub-CC520480,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520480.stripped.N4.nii.gz +fcon1000Berlin_sub85681,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub85681.stripped.N4.nii.gz +fcon1000Cambridge_sub07798,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07798.stripped.N4.nii.gz +fcon1000NewYork_sub02503,M,9.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub02503.stripped.N4.nii.gz +ADNI1076708,F,55.2,adni_storage/ADNI_nii_gz_bias_corrected/I1076708_037_S_6620.stripped.N4.nii.gz +sub-CC121194,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121194.stripped.N4.nii.gz +sub-CC420148,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420148.stripped.N4.nii.gz +sub-CC220535,M,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220535.stripped.N4.nii.gz +sub-CC110033,M,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110033.stripped.N4.nii.gz +fcon1000Beijing_sub17586,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17586.stripped.N4.nii.gz +ADNI1043769,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1043769_003_S_6490.stripped.N4.nii.gz +sub-CC223115,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223115.stripped.N4.nii.gz +sub-CC510039,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510039.stripped.N4.nii.gz +DLBS0028598_session_1,F,84.06,dlbs_storage/DLBS_bias_corrected/0028598_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub29044,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29044.stripped.N4.nii.gz +DLBS0028606_session_1,F,81.91,dlbs_storage/DLBS_bias_corrected/0028606_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub28808,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub28808.stripped.N4.nii.gz +DLBS0028624_session_1,F,81.96,dlbs_storage/DLBS_bias_corrected/0028624_session_1.stripped.N4.nii.gz +sub-CC510321,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510321.stripped.N4.nii.gz +ADNI358814,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I358814_019_S_5019.stripped.N4.nii.gz +ADNI248875,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I248875_031_S_4024.stripped.N4.nii.gz +sub-CC420259,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420259.stripped.N4.nii.gz +ADNI1007384,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I1007384_035_S_6380.stripped.N4.nii.gz +DLBS0028536_session_1,M,82.57,dlbs_storage/DLBS_bias_corrected/0028536_session_1.stripped.N4.nii.gz +DLBS0028365_session_1,F,22.82,dlbs_storage/DLBS_bias_corrected/0028365_session_1.stripped.N4.nii.gz +sub-CC610052,M,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610052.stripped.N4.nii.gz +fcon1000Beijing_sub14238,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub14238.stripped.N4.nii.gz +fcon1000Beijing_sub48676,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48676.stripped.N4.nii.gz +sub-CC220610,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220610.stripped.N4.nii.gz +sub-CC610308,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610308.stripped.N4.nii.gz +ADNI10236670,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I10236670_168_S_6085.stripped.N4.nii.gz +fcon1000Milwaukee_sub39259,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub39259.stripped.N4.nii.gz +sub-CC520585,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520585.stripped.N4.nii.gz +DLBS0028512_session_1,F,51.64,dlbs_storage/DLBS_bias_corrected/0028512_session_1.stripped.N4.nii.gz +ADNI944156,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I944156_116_S_6129.stripped.N4.nii.gz +ADNI168100,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I168100_051_S_1072.stripped.N4.nii.gz +ADNI442430,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I442430_041_S_4874.stripped.N4.nii.gz +fcon1000Cambridge_sub53059,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53059.stripped.N4.nii.gz +sub-CC420383,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420383.stripped.N4.nii.gz +sub-CC321504,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321504.stripped.N4.nii.gz +fcon1000Beijing_sub41170,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub41170.stripped.N4.nii.gz +DLBS0028640_session_1,F,33.41,dlbs_storage/DLBS_bias_corrected/0028640_session_1.stripped.N4.nii.gz +ADNI1399348,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1399348_305_S_6845.stripped.N4.nii.gz +fcon1000Beijing_sub56757,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56757.stripped.N4.nii.gz +ADNI105505,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I105505_067_S_1253.stripped.N4.nii.gz +fcon1000Cambridge_sub07413,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07413.stripped.N4.nii.gz +sub-CC610028,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610028.stripped.N4.nii.gz +DLBS0028563_session_1,F,44.97,dlbs_storage/DLBS_bias_corrected/0028563_session_1.stripped.N4.nii.gz +sub-CC321585,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321585.stripped.N4.nii.gz +fcon1000Atlanta_sub59806,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub59806.stripped.N4.nii.gz +sub-CC221527,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221527.stripped.N4.nii.gz +ADNI1573570,F,63.1,adni_storage/ADNI_nii_gz_bias_corrected/I1573570_131_S_6805.stripped.N4.nii.gz +fcon1000AnnArbor_sub56686,F,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub56686.stripped.N4.nii.gz +ADNI10936993,F,55.7,adni_storage/ADNI_nii_gz_bias_corrected/I10936993_033_S_10215.stripped.N4.nii.gz +fcon1000Cleveland_sub19005,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub19005.stripped.N4.nii.gz +fcon1000Atlanta_sub76280,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub76280.stripped.N4.nii.gz +sub-CC120409,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120409.stripped.N4.nii.gz +fcon1000Beijing_sub22595,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22595.stripped.N4.nii.gz +fcon1000Leiden_sub13537,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub13537.stripped.N4.nii.gz +ADNI1344108,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I1344108_123_S_6888.stripped.N4.nii.gz +sub-CC210148,F,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210148.stripped.N4.nii.gz +fcon1000NewYork_sub20732,M,11.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20732.stripped.N4.nii.gz +fcon1000Cambridge_sub04187,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04187.stripped.N4.nii.gz +ADNI912447,F,63.1,adni_storage/ADNI_nii_gz_bias_corrected/I912447_003_S_6067.stripped.N4.nii.gz +sub-CC710551,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710551.stripped.N4.nii.gz +fcon1000Cambridge_sub93488,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93488.stripped.N4.nii.gz +fcon1000Beijing_sub61961,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub61961.stripped.N4.nii.gz +ADNI280814,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I280814_023_S_4448.stripped.N4.nii.gz +sub-CC321154,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321154.stripped.N4.nii.gz +sub-CC410297,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410297.stripped.N4.nii.gz +sub-CC221565,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221565.stripped.N4.nii.gz +sub-CC510480,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510480.stripped.N4.nii.gz +fcon1000AnnArbor_sub57196,F,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub57196.stripped.N4.nii.gz +ADNI313455,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I313455_128_S_4599.stripped.N4.nii.gz +DLBS0028610_session_1,M,80.82,dlbs_storage/DLBS_bias_corrected/0028610_session_1.stripped.N4.nii.gz +DLBS0028579_session_1,F,21.77,dlbs_storage/DLBS_bias_corrected/0028579_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub30250,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub30250.stripped.N4.nii.gz +fcon1000Beijing_sub52044,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub52044.stripped.N4.nii.gz +sub-CC620518,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620518.stripped.N4.nii.gz +ADNI1330894,F,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I1330894_305_S_6881.stripped.N4.nii.gz +fcon1000Leiden_sub58194,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub58194.stripped.N4.nii.gz +DLBS0028467_session_1,F,34.4,dlbs_storage/DLBS_bias_corrected/0028467_session_1.stripped.N4.nii.gz +sub-CC620560,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620560.stripped.N4.nii.gz +ADNI1008024,F,59.5,adni_storage/ADNI_nii_gz_bias_corrected/I1008024_177_S_6408.stripped.N4.nii.gz +ADNI1558656,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1558656_014_S_6076.stripped.N4.nii.gz +sub-CC710462,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710462.stripped.N4.nii.gz +DLBS0028525_session_1,M,60.74,dlbs_storage/DLBS_bias_corrected/0028525_session_1.stripped.N4.nii.gz +sub-CC721894,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721894.stripped.N4.nii.gz +fcon1000Beijing_sub81074,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub81074.stripped.N4.nii.gz +sub-CC121397,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121397.stripped.N4.nii.gz +ADNI1529914,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I1529914_067_S_7033.stripped.N4.nii.gz +fcon1000Cambridge_sub02591,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub02591.stripped.N4.nii.gz +fcon1000Baltimore_sub19738,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub19738.stripped.N4.nii.gz +fcon1000Cleveland_sub50092,M,56.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub50092.stripped.N4.nii.gz +sub-CC610101,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610101.stripped.N4.nii.gz +ADNI378273,M,58.1,adni_storage/ADNI_nii_gz_bias_corrected/I378273_014_S_4039.stripped.N4.nii.gz +ADNI358820,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I358820_019_S_5019.stripped.N4.nii.gz +fcon1000NewYork_sub47087,M,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub47087.stripped.N4.nii.gz +sub-CC620720,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620720.stripped.N4.nii.gz +sub-CC321464,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321464.stripped.N4.nii.gz +sub-CC721224,F,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721224.stripped.N4.nii.gz +ADNI1142379,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I1142379_022_S_6013.stripped.N4.nii.gz +ADNI10461527,F,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I10461527_022_S_10040.stripped.N4.nii.gz +ADNI270531,M,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I270531_014_S_4039.stripped.N4.nii.gz +fcon1000Berlin_sub18913,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub18913.stripped.N4.nii.gz +ADNI65946,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I65946_067_S_1185.stripped.N4.nii.gz +fcon1000Bangor_sub68050,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub68050.stripped.N4.nii.gz +ADNI1609767,F,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I1609767_073_S_7082.stripped.N4.nii.gz +fcon1000Cambridge_sub98528,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub98528.stripped.N4.nii.gz +fcon1000NewYork_sub05208,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub05208.stripped.N4.nii.gz +DLBS0028560_session_1,F,57.03,dlbs_storage/DLBS_bias_corrected/0028560_session_1.stripped.N4.nii.gz +DLBS0028394_session_1,M,20.74,dlbs_storage/DLBS_bias_corrected/0028394_session_1.stripped.N4.nii.gz +ADNI1327480,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I1327480_177_S_6409.stripped.N4.nii.gz +fcon1000NewYork_sub30860,F,35.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30860.stripped.N4.nii.gz +ADNI1516245,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1516245_082_S_6629.stripped.N4.nii.gz +ADNI393944,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393944_073_S_5023.stripped.N4.nii.gz +ADNI1493847,M,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1493847_016_S_7002.stripped.N4.nii.gz +sub-CC722216,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722216.stripped.N4.nii.gz +fcon1000Cleveland_sub13495,F,45.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub13495.stripped.N4.nii.gz +fcon1000Beijing_sub52259,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub52259.stripped.N4.nii.gz +ADNI1183115,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1183115_305_S_6744.stripped.N4.nii.gz +ADNI393941,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393941_073_S_5023.stripped.N4.nii.gz +sub-CC110126,F,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110126.stripped.N4.nii.gz +ADNI248872,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I248872_031_S_4024.stripped.N4.nii.gz +DLBS0028373_session_1,F,48.4,dlbs_storage/DLBS_bias_corrected/0028373_session_1.stripped.N4.nii.gz +ADNI1149157,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I1149157_301_S_6698.stripped.N4.nii.gz +DLBS0028494_session_1,M,74.24,dlbs_storage/DLBS_bias_corrected/0028494_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub80221,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub80221.stripped.N4.nii.gz +fcon1000AnnArbor_sub18546,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub18546.stripped.N4.nii.gz +sub-CC520175,M,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520175.stripped.N4.nii.gz +ADNI950885,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I950885_035_S_6160.stripped.N4.nii.gz +fcon1000Milwaukee_sub56582,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56582.stripped.N4.nii.gz +DLBS0028590_session_1,F,70.79,dlbs_storage/DLBS_bias_corrected/0028590_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub01361,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub01361.stripped.N4.nii.gz +DLBS0028583_session_1,F,80.54,dlbs_storage/DLBS_bias_corrected/0028583_session_1.stripped.N4.nii.gz +ADNI344065,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I344065_041_S_4874.stripped.N4.nii.gz +DLBS0028542_session_1,F,69.59,dlbs_storage/DLBS_bias_corrected/0028542_session_1.stripped.N4.nii.gz +sub-CC320904,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320904.stripped.N4.nii.gz +sub-CC110045,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110045.stripped.N4.nii.gz +DLBS0028457_session_1,M,75.67,dlbs_storage/DLBS_bias_corrected/0028457_session_1.stripped.N4.nii.gz +DLBS0028627_session_1,F,47.3,dlbs_storage/DLBS_bias_corrected/0028627_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub54257,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub54257.stripped.N4.nii.gz +ADNI884453,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I884453_041_S_4874.stripped.N4.nii.gz +ADNI460668,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460668_073_S_4795.stripped.N4.nii.gz +fcon1000Beijing_sub17315,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17315.stripped.N4.nii.gz +fcon1000Cambridge_sub06037,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06037.stripped.N4.nii.gz +fcon1000Cambridge_sub16122,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16122.stripped.N4.nii.gz +fcon1000Milwaukee_sub17987,M,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub17987.stripped.N4.nii.gz +sub-CC220132,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220132.stripped.N4.nii.gz +ADNI336502,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I336502_135_S_4954.stripped.N4.nii.gz +sub-CC122620,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122620.stripped.N4.nii.gz +sub-CC520398,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520398.stripped.N4.nii.gz +ADNI1446304,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1446304_016_S_6941.stripped.N4.nii.gz +sub-CC210182,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210182.stripped.N4.nii.gz +fcon1000Cleveland_sub76139,F,41.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub76139.stripped.N4.nii.gz +fcon1000Cleveland_sub07835,M,43.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub07835.stripped.N4.nii.gz +sub-CC310391,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310391.stripped.N4.nii.gz +sub-CC510163,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510163.stripped.N4.nii.gz +DLBS0028572_session_1,M,75.37,dlbs_storage/DLBS_bias_corrected/0028572_session_1.stripped.N4.nii.gz +ADNI359044,M,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I359044_073_S_5090.stripped.N4.nii.gz +fcon1000Cambridge_sub16390,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16390.stripped.N4.nii.gz +sub-CC120319,F,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120319.stripped.N4.nii.gz +DLBS0028491_session_1,F,24.2,dlbs_storage/DLBS_bias_corrected/0028491_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub08816,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08816.stripped.N4.nii.gz +ADNI1278681,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1278681_067_S_6529.stripped.N4.nii.gz +sub-CC221054,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221054.stripped.N4.nii.gz +ADNI1017004,M,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017004_116_S_6428.stripped.N4.nii.gz +fcon1000Cambridge_sub84845,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84845.stripped.N4.nii.gz +sub-CC620659,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620659.stripped.N4.nii.gz +fcon1000Atlanta_sub07145,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub07145.stripped.N4.nii.gz +ADNI10435136,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I10435136_007_S_10075.stripped.N4.nii.gz +fcon1000Beijing_sub83728,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83728.stripped.N4.nii.gz +fcon1000NewYork_sub29353,F,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29353.stripped.N4.nii.gz +ADNI388747,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I388747_116_S_4195.stripped.N4.nii.gz +sub-CC221886,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221886.stripped.N4.nii.gz +ADNI844180,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I844180_022_S_6013.stripped.N4.nii.gz +ADNI1514928,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1514928_037_S_7006.stripped.N4.nii.gz +DLBS0028410_session_1,F,74.11,dlbs_storage/DLBS_bias_corrected/0028410_session_1.stripped.N4.nii.gz +ADNI1516258,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1516258_082_S_6629.stripped.N4.nii.gz +fcon1000Berlin_sub49134,M,44.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub49134.stripped.N4.nii.gz +DLBS0028516_session_1,M,88.14,dlbs_storage/DLBS_bias_corrected/0028516_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub92602,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92602.stripped.N4.nii.gz +ADNI274154,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I274154_002_S_1155.stripped.N4.nii.gz +sub-CC520624,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520624.stripped.N4.nii.gz +ADNI1285703,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I1285703_131_S_6170.stripped.N4.nii.gz +fcon1000Atlanta_sub00368,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub00368.stripped.N4.nii.gz +fcon1000Cambridge_sub18449,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub18449.stripped.N4.nii.gz +ADNI1660846,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1660846_019_S_6635.stripped.N4.nii.gz +sub-CC220901,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220901.stripped.N4.nii.gz +fcon1000Milwaukee_sub76042,F,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub76042.stripped.N4.nii.gz +fcon1000Munchen_sub96591,M,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub96591.stripped.N4.nii.gz +DLBS0028432_session_1,F,53.75,dlbs_storage/DLBS_bias_corrected/0028432_session_1.stripped.N4.nii.gz +DLBS0028605_session_1,M,63.69,dlbs_storage/DLBS_bias_corrected/0028605_session_1.stripped.N4.nii.gz +sub-CC520239,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520239.stripped.N4.nii.gz +sub-CC120764,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120764.stripped.N4.nii.gz +sub-CC620429,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620429.stripped.N4.nii.gz +ADNI132476,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I132476_016_S_1121.stripped.N4.nii.gz +sub-CC220518,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220518.stripped.N4.nii.gz +sub-CC410182,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410182.stripped.N4.nii.gz +ADNI365429,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I365429_073_S_5023.stripped.N4.nii.gz +DLBS0028527_session_1,M,23.64,dlbs_storage/DLBS_bias_corrected/0028527_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub05306,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub05306.stripped.N4.nii.gz +sub-CC710429,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710429.stripped.N4.nii.gz +fcon1000Cambridge_sub20389,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20389.stripped.N4.nii.gz +sub-CC120065,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120065.stripped.N4.nii.gz +DLBS0028534_session_1,M,54.3,dlbs_storage/DLBS_bias_corrected/0028534_session_1.stripped.N4.nii.gz +sub-CC710548,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710548.stripped.N4.nii.gz +fcon1000Beijing_sub67435,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub67435.stripped.N4.nii.gz +DLBS0028485_session_1,F,57.23,dlbs_storage/DLBS_bias_corrected/0028485_session_1.stripped.N4.nii.gz +sub-CC420157,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420157.stripped.N4.nii.gz +sub-CC320698,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320698.stripped.N4.nii.gz +ADNI297848,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I297848_031_S_4024.stripped.N4.nii.gz +ADNI415211,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I415211_019_S_5019.stripped.N4.nii.gz +fcon1000Beijing_sub91145,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91145.stripped.N4.nii.gz +fcon1000Baltimore_sub23927,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub23927.stripped.N4.nii.gz +sub-CC110087,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110087.stripped.N4.nii.gz +fcon1000Milwaukee_sub77073,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub77073.stripped.N4.nii.gz +sub-CC710099,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710099.stripped.N4.nii.gz +DLBS0028619_session_1,M,36.41,dlbs_storage/DLBS_bias_corrected/0028619_session_1.stripped.N4.nii.gz +ADNI20681,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I20681_131_S_0691.stripped.N4.nii.gz +fcon1000Beijing_sub97442,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub97442.stripped.N4.nii.gz +DLBS0028528_session_1,M,53.43,dlbs_storage/DLBS_bias_corrected/0028528_session_1.stripped.N4.nii.gz +ADNI1526394,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1526394_131_S_6170.stripped.N4.nii.gz +DLBS0028426_session_1,F,82.07,dlbs_storage/DLBS_bias_corrected/0028426_session_1.stripped.N4.nii.gz +DLBS0028406_session_1,M,47.65,dlbs_storage/DLBS_bias_corrected/0028406_session_1.stripped.N4.nii.gz +ADNI393947,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393947_073_S_5023.stripped.N4.nii.gz +sub-CC310385,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310385.stripped.N4.nii.gz +ADNI10932457,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I10932457_035_S_7121.stripped.N4.nii.gz +DLBS0028521_session_1,F,39.74,dlbs_storage/DLBS_bias_corrected/0028521_session_1.stripped.N4.nii.gz +ADNI1046066,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I1046066_041_S_4874.stripped.N4.nii.gz +fcon1000Milwaukee_sub46312,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub46312.stripped.N4.nii.gz +fcon1000Beijing_sub29590,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub29590.stripped.N4.nii.gz +fcon1000AnnArbor_sub46727,F,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub46727.stripped.N4.nii.gz +sub-CC420888,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420888.stripped.N4.nii.gz +sub-CC220234,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220234.stripped.N4.nii.gz +fcon1000Beijing_sub49782,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub49782.stripped.N4.nii.gz +fcon1000Milwaukee_sub63196,F,49.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub63196.stripped.N4.nii.gz +sub-CC222956,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222956.stripped.N4.nii.gz +sub-CC610210,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610210.stripped.N4.nii.gz +DLBS0028398_session_1,M,83.33,dlbs_storage/DLBS_bias_corrected/0028398_session_1.stripped.N4.nii.gz +ADNI1151456,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1151456_002_S_6680.stripped.N4.nii.gz +fcon1000Cambridge_sub90699,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90699.stripped.N4.nii.gz +fcon1000Beijing_sub21115,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub21115.stripped.N4.nii.gz +sub-CC310086,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310086.stripped.N4.nii.gz +sub-CC420173,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420173.stripped.N4.nii.gz +DLBS0028571_session_1,M,20.57,dlbs_storage/DLBS_bias_corrected/0028571_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub00306,F,68.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub00306.stripped.N4.nii.gz +sub-CC222326,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222326.stripped.N4.nii.gz +sub-CC620118,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620118.stripped.N4.nii.gz +ADNI1061954,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1061954_109_S_6364.stripped.N4.nii.gz +fcon1000Cambridge_sub41773,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41773.stripped.N4.nii.gz +sub-CC410390,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410390.stripped.N4.nii.gz +sub-CC610040,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610040.stripped.N4.nii.gz +ADNI986502,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I986502_094_S_6275.stripped.N4.nii.gz +fcon1000Leiden_sub04484,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub04484.stripped.N4.nii.gz +fcon1000Atlanta_sub53122,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub53122.stripped.N4.nii.gz +sub-CC321069,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321069.stripped.N4.nii.gz +fcon1000Cambridge_sub50454,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50454.stripped.N4.nii.gz +ADNI378271,M,58.1,adni_storage/ADNI_nii_gz_bias_corrected/I378271_014_S_4039.stripped.N4.nii.gz +DLBS0028423_session_1,M,30.69,dlbs_storage/DLBS_bias_corrected/0028423_session_1.stripped.N4.nii.gz +ADNI10461464,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10461464_033_S_10092.stripped.N4.nii.gz +fcon1000Beijing_sub51015,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub51015.stripped.N4.nii.gz +fcon1000Cambridge_sub93269,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93269.stripped.N4.nii.gz +fcon1000Beijing_sub50873,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50873.stripped.N4.nii.gz +fcon1000Cambridge_sub18295,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub18295.stripped.N4.nii.gz +ADNI77626,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I77626_020_S_1288.stripped.N4.nii.gz +fcon1000AnnArbor_sub26099,M,73.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub26099.stripped.N4.nii.gz +DLBS0028430_session_1,F,89.11,dlbs_storage/DLBS_bias_corrected/0028430_session_1.stripped.N4.nii.gz +sub-CC721291,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721291.stripped.N4.nii.gz +fcon1000Cleveland_sub22935,F,39.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub22935.stripped.N4.nii.gz +ADNI387580,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I387580_036_S_4894.stripped.N4.nii.gz +DLBS0028592_session_1,F,40.97,dlbs_storage/DLBS_bias_corrected/0028592_session_1.stripped.N4.nii.gz +ADNI293375,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I293375_128_S_4607.stripped.N4.nii.gz +fcon1000Beijing_sub92799,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92799.stripped.N4.nii.gz +DLBS0028354_session_1,M,75.42,dlbs_storage/DLBS_bias_corrected/0028354_session_1.stripped.N4.nii.gz +sub-CC410287,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410287.stripped.N4.nii.gz +fcon1000NewYork_sub44395,M,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44395.stripped.N4.nii.gz +ADNI62031,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I62031_016_S_1121.stripped.N4.nii.gz +fcon1000Beijing_sub31058,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub31058.stripped.N4.nii.gz +ADNI1448643,F,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I1448643_003_S_6954.stripped.N4.nii.gz +sub-CC320461,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320461.stripped.N4.nii.gz +ADNI1595258,F,53.5,adni_storage/ADNI_nii_gz_bias_corrected/I1595258_037_S_7035.stripped.N4.nii.gz +fcon1000Beijing_sub29785,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub29785.stripped.N4.nii.gz +fcon1000Cambridge_sub76631,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub76631.stripped.N4.nii.gz +ADNI115775,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I115775_033_S_0733.stripped.N4.nii.gz +ADNI1143236,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1143236_023_S_6702.stripped.N4.nii.gz +DLBS0028459_session_1,M,66.13,dlbs_storage/DLBS_bias_corrected/0028459_session_1.stripped.N4.nii.gz +ADNI415594,M,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I415594_009_S_5252.stripped.N4.nii.gz +sub-CC320379,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320379.stripped.N4.nii.gz +fcon1000Beijing_sub08992,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08992.stripped.N4.nii.gz +fcon1000Beijing_sub50985,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50985.stripped.N4.nii.gz +sub-CC610671,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610671.stripped.N4.nii.gz +fcon1000Beijing_sub89742,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89742.stripped.N4.nii.gz +DLBS0028397_session_1,F,35.33,dlbs_storage/DLBS_bias_corrected/0028397_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub82352,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82352.stripped.N4.nii.gz +fcon1000Beijing_sub64923,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub64923.stripped.N4.nii.gz +sub-CC321291,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321291.stripped.N4.nii.gz +fcon1000Cambridge_sub69315,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69315.stripped.N4.nii.gz +fcon1000Cambridge_sub77598,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77598.stripped.N4.nii.gz +sub-CC121685,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121685.stripped.N4.nii.gz +sub-CC221244,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221244.stripped.N4.nii.gz +DLBS0028538_session_1,F,76.39,dlbs_storage/DLBS_bias_corrected/0028538_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub28473,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub28473.stripped.N4.nii.gz +sub-CC512003,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC512003.stripped.N4.nii.gz +sub-CC510609,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510609.stripped.N4.nii.gz +ADNI346264,F,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I346264_036_S_4894.stripped.N4.nii.gz +sub-CC520607,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520607.stripped.N4.nii.gz +fcon1000Beijing_sub51586,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub51586.stripped.N4.nii.gz +fcon1000Cambridge_sub78552,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78552.stripped.N4.nii.gz +fcon1000NewYork_sub59796,M,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub59796.stripped.N4.nii.gz +fcon1000Baltimore_sub29158,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub29158.stripped.N4.nii.gz +DLBS0028379_session_1,F,73.36,dlbs_storage/DLBS_bias_corrected/0028379_session_1.stripped.N4.nii.gz +sub-CC320321,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320321.stripped.N4.nii.gz +ADNI395985,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I395985_130_S_4982.stripped.N4.nii.gz +ADNI44672,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I44672_020_S_1288.stripped.N4.nii.gz +fcon1000Cambridge_sub19717,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub19717.stripped.N4.nii.gz +sub-CC620164,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620164.stripped.N4.nii.gz +DLBS0028412_session_1,M,20.89,dlbs_storage/DLBS_bias_corrected/0028412_session_1.stripped.N4.nii.gz +ADNI285080,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I285080_073_S_4552.stripped.N4.nii.gz +fcon1000Cleveland_sub18011,M,55.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub18011.stripped.N4.nii.gz +sub-CC620152,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620152.stripped.N4.nii.gz +ADNI1525978,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1525978_131_S_6805.stripped.N4.nii.gz +fcon1000Beijing_sub82426,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82426.stripped.N4.nii.gz +DLBS0028438_session_1,M,85.99,dlbs_storage/DLBS_bias_corrected/0028438_session_1.stripped.N4.nii.gz +ADNI460671,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460671_073_S_4795.stripped.N4.nii.gz +fcon1000Cambridge_sub20543,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20543.stripped.N4.nii.gz +DLBS0028596_session_1,M,36.92,dlbs_storage/DLBS_bias_corrected/0028596_session_1.stripped.N4.nii.gz +sub-CC420464,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420464.stripped.N4.nii.gz +sub-CC410086,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410086.stripped.N4.nii.gz +sub-CC610568,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610568.stripped.N4.nii.gz +DLBS0028622_session_1,F,24.6,dlbs_storage/DLBS_bias_corrected/0028622_session_1.stripped.N4.nii.gz +ADNI1058589,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1058589_032_S_6602.stripped.N4.nii.gz +sub-CC420204,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420204.stripped.N4.nii.gz +DLBS0028537_session_1,F,62.2,dlbs_storage/DLBS_bias_corrected/0028537_session_1.stripped.N4.nii.gz +ADNI871844,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I871844_141_S_6041.stripped.N4.nii.gz +ADNI324990,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I324990_023_S_4448.stripped.N4.nii.gz +sub-CC220232,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220232.stripped.N4.nii.gz +fcon1000Beijing_sub20127,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20127.stripped.N4.nii.gz +fcon1000Bangor_sub48632,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub48632.stripped.N4.nii.gz +sub-CC720119,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720119.stripped.N4.nii.gz +sub-CC420167,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420167.stripped.N4.nii.gz +sub-CC620073,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620073.stripped.N4.nii.gz +fcon1000Cambridge_sub92440,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92440.stripped.N4.nii.gz +ADNI1478765,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1478765_037_S_6977.stripped.N4.nii.gz +sub-CC620106,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620106.stripped.N4.nii.gz +sub-CC710982,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710982.stripped.N4.nii.gz +ADNI1032325,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I1032325_070_S_6548.stripped.N4.nii.gz +DLBS0028453_session_1,F,73.26,dlbs_storage/DLBS_bias_corrected/0028453_session_1.stripped.N4.nii.gz +DLBS0028473_session_1,F,56.11,dlbs_storage/DLBS_bias_corrected/0028473_session_1.stripped.N4.nii.gz +fcon1000Newark_sub62985,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub62985.stripped.N4.nii.gz +fcon1000AnnArbor_sub45569,F,63.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub45569.stripped.N4.nii.gz +sub-CC510433,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510433.stripped.N4.nii.gz +DLBS0028561_session_1,F,49.51,dlbs_storage/DLBS_bias_corrected/0028561_session_1.stripped.N4.nii.gz +ADNI1331166,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1331166_116_S_6550.stripped.N4.nii.gz +sub-CC610392,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610392.stripped.N4.nii.gz +DLBS0028359_session_1,F,71.2,dlbs_storage/DLBS_bias_corrected/0028359_session_1.stripped.N4.nii.gz +DLBS0028404_session_1,F,38.45,dlbs_storage/DLBS_bias_corrected/0028404_session_1.stripped.N4.nii.gz +ADNI1072842,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1072842_014_S_6076.stripped.N4.nii.gz +sub-CC310224,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310224.stripped.N4.nii.gz +sub-CC220519,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220519.stripped.N4.nii.gz +sub-CC310160,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310160.stripped.N4.nii.gz +sub-CC620567,M,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620567.stripped.N4.nii.gz +DLBS0028638_session_1,F,70.98,dlbs_storage/DLBS_bias_corrected/0028638_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub31554,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub31554.stripped.N4.nii.gz +sub-CC520122,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520122.stripped.N4.nii.gz +sub-CC320022,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320022.stripped.N4.nii.gz +DLBS0028391_session_1,M,36.03,dlbs_storage/DLBS_bias_corrected/0028391_session_1.stripped.N4.nii.gz +DLBS0028506_session_1,F,86.38,dlbs_storage/DLBS_bias_corrected/0028506_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub26223,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub26223.stripped.N4.nii.gz +fcon1000Atlanta_sub15817,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub15817.stripped.N4.nii.gz +DLBS0028465_session_1,F,21.67,dlbs_storage/DLBS_bias_corrected/0028465_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub56734,F,50.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub56734.stripped.N4.nii.gz +ADNI1191310,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1191310_130_S_6329.stripped.N4.nii.gz +DLBS0028554_session_1,F,48.67,dlbs_storage/DLBS_bias_corrected/0028554_session_1.stripped.N4.nii.gz +sub-CC510415,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510415.stripped.N4.nii.gz +fcon1000Newark_sub13411,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub13411.stripped.N4.nii.gz +fcon1000Cambridge_sub07902,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07902.stripped.N4.nii.gz +sub-CC220526,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220526.stripped.N4.nii.gz +sub-CC710037,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710037.stripped.N4.nii.gz +ADNI1072841,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1072841_014_S_6076.stripped.N4.nii.gz +fcon1000Cambridge_sub60578,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub60578.stripped.N4.nii.gz +fcon1000Cambridge_sub08723,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08723.stripped.N4.nii.gz +DLBS0028535_session_1,F,80.11,dlbs_storage/DLBS_bias_corrected/0028535_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub06272,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06272.stripped.N4.nii.gz +ADNI1575205,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1575205_006_S_6651.stripped.N4.nii.gz +ADNI10666923,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10666923_100_S_10091.stripped.N4.nii.gz +ADNI323094,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I323094_036_S_4894.stripped.N4.nii.gz +fcon1000Cambridge_sub13902,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13902.stripped.N4.nii.gz +fcon1000Cambridge_sub49259,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub49259.stripped.N4.nii.gz +fcon1000Cambridge_sub65373,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub65373.stripped.N4.nii.gz +fcon1000Beijing_sub38602,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub38602.stripped.N4.nii.gz +ADNI400951,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400951_073_S_4795.stripped.N4.nii.gz +fcon1000Berlin_sub27711,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27711.stripped.N4.nii.gz +fcon1000NewYork_sub33581,M,49.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub33581.stripped.N4.nii.gz +sub-CC120727,F,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120727.stripped.N4.nii.gz +sub-CC620592,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620592.stripped.N4.nii.gz +fcon1000Bangor_sub01903,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub01903.stripped.N4.nii.gz +fcon1000Cambridge_sub53193,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53193.stripped.N4.nii.gz +sub-CC220335,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220335.stripped.N4.nii.gz +sub-CC610405,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610405.stripped.N4.nii.gz +sub-CC221595,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221595.stripped.N4.nii.gz +DLBS0028488_session_1,F,41.33,dlbs_storage/DLBS_bias_corrected/0028488_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub44573,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub44573.stripped.N4.nii.gz +fcon1000Munchen_sub31272,M,74.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub31272.stripped.N4.nii.gz +DLBS0028335_session_1,M,71.34,dlbs_storage/DLBS_bias_corrected/0028335_session_1.stripped.N4.nii.gz +fcon1000Atlanta_sub00354,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub00354.stripped.N4.nii.gz +DLBS0028617_session_1,F,50.6,dlbs_storage/DLBS_bias_corrected/0028617_session_1.stripped.N4.nii.gz +sub-CC520390,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520390.stripped.N4.nii.gz +sub-CC620885,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620885.stripped.N4.nii.gz +fcon1000Cambridge_sub31522,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub31522.stripped.N4.nii.gz +ADNI1185293,F,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1185293_024_S_6033.stripped.N4.nii.gz +sub-CC210657,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210657.stripped.N4.nii.gz +sub-CC321025,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321025.stripped.N4.nii.gz +ADNI381380,M,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I381380_009_S_5252.stripped.N4.nii.gz +fcon1000Beijing_sub80569,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80569.stripped.N4.nii.gz +sub-CC620619,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620619.stripped.N4.nii.gz +sub-CC222258,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222258.stripped.N4.nii.gz +DLBS0028613_session_1,M,74.4,dlbs_storage/DLBS_bias_corrected/0028613_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub66506,F,78.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub66506.stripped.N4.nii.gz +DLBS0028549_session_1,F,21.45,dlbs_storage/DLBS_bias_corrected/0028549_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95187,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95187.stripped.N4.nii.gz +ADNI1485046,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1485046_116_S_6550.stripped.N4.nii.gz +sub-CC320574,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320574.stripped.N4.nii.gz +sub-CC620444,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620444.stripped.N4.nii.gz +sub-CC510243,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510243.stripped.N4.nii.gz +sub-CC610508,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610508.stripped.N4.nii.gz +fcon1000Milwaukee_sub18955,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub18955.stripped.N4.nii.gz +sub-CC321557,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321557.stripped.N4.nii.gz +sub-CC510629,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510629.stripped.N4.nii.gz +DLBS0028604_session_1,F,22.6,dlbs_storage/DLBS_bias_corrected/0028604_session_1.stripped.N4.nii.gz +ADNI1227908,F,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I1227908_041_S_6801.stripped.N4.nii.gz +sub-CC721729,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721729.stripped.N4.nii.gz +sub-CC320325,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320325.stripped.N4.nii.gz +sub-CC221511,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221511.stripped.N4.nii.gz +sub-CC610076,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610076.stripped.N4.nii.gz +sub-CC520980,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520980.stripped.N4.nii.gz +DLBS0028478_session_1,F,70.35,dlbs_storage/DLBS_bias_corrected/0028478_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub46058,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46058.stripped.N4.nii.gz +ADNI228875,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I228875_031_S_4024.stripped.N4.nii.gz +DLBS0028601_session_1,M,71.54,dlbs_storage/DLBS_bias_corrected/0028601_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub26557,M,51.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub26557.stripped.N4.nii.gz +sub-CC410032,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410032.stripped.N4.nii.gz +ADNI1461224,M,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1461224_070_S_6966.stripped.N4.nii.gz +sub-CC320336,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320336.stripped.N4.nii.gz +sub-CC620354,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620354.stripped.N4.nii.gz +fcon1000Leiden_sub92061,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub92061.stripped.N4.nii.gz +DLBS0028344_session_1,F,69.81,dlbs_storage/DLBS_bias_corrected/0028344_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95644,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95644.stripped.N4.nii.gz +ADNI1215082,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1215082_116_S_6550.stripped.N4.nii.gz +sub-CC110187,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110187.stripped.N4.nii.gz +fcon1000Baltimore_sub96234,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub96234.stripped.N4.nii.gz +fcon1000Leiden_sub56299,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub56299.stripped.N4.nii.gz +ADNI400958,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400958_073_S_4795.stripped.N4.nii.gz +fcon1000Beijing_sub08001,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08001.stripped.N4.nii.gz +fcon1000Leiden_sub93194,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub93194.stripped.N4.nii.gz +DLBS0028508_session_1,F,28.67,dlbs_storage/DLBS_bias_corrected/0028508_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub01787,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub01787.stripped.N4.nii.gz +sub-CC320776,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320776.stripped.N4.nii.gz +sub-CC121111,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121111.stripped.N4.nii.gz +fcon1000Cambridge_sub69397,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69397.stripped.N4.nii.gz +fcon1000AnnArbor_sub99692,F,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub99692.stripped.N4.nii.gz +fcon1000Newark_sub59799,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub59799.stripped.N4.nii.gz +sub-CC321368,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321368.stripped.N4.nii.gz +ADNI381382,M,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I381382_009_S_5252.stripped.N4.nii.gz +ADNI90757,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90757_051_S_1072.stripped.N4.nii.gz +fcon1000AnnArbor_sub57025,F,68.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub57025.stripped.N4.nii.gz +sub-CC320575,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320575.stripped.N4.nii.gz +ADNI323095,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I323095_036_S_4894.stripped.N4.nii.gz +sub-CC710088,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710088.stripped.N4.nii.gz +sub-CC710518,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710518.stripped.N4.nii.gz +DLBS0028587_session_1,F,72.59,dlbs_storage/DLBS_bias_corrected/0028587_session_1.stripped.N4.nii.gz +DLBS0028331_session_1,F,77.51,dlbs_storage/DLBS_bias_corrected/0028331_session_1.stripped.N4.nii.gz +fcon1000Newark_sub58526,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub58526.stripped.N4.nii.gz +ADNI362186,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I362186_041_S_4874.stripped.N4.nii.gz +sub-CC510258,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510258.stripped.N4.nii.gz +sub-CC520673,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520673.stripped.N4.nii.gz +DLBS0028484_session_1,M,70.08,dlbs_storage/DLBS_bias_corrected/0028484_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub26670,M,64.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub26670.stripped.N4.nii.gz +fcon1000Cambridge_sub25044,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25044.stripped.N4.nii.gz +fcon1000NewYork_sub17078,M,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub17078.stripped.N4.nii.gz +sub-CC410015,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410015.stripped.N4.nii.gz +sub-CC410084,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410084.stripped.N4.nii.gz +sub-CC520136,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520136.stripped.N4.nii.gz +fcon1000Berlin_sub77281,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub77281.stripped.N4.nii.gz +fcon1000Milwaukee_sub53971,F,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub53971.stripped.N4.nii.gz +sub-CC621128,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621128.stripped.N4.nii.gz +sub-CC121428,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121428.stripped.N4.nii.gz +ADNI10666919,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I10666919_301_S_10139.stripped.N4.nii.gz +sub-CC621199,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621199.stripped.N4.nii.gz +fcon1000Beijing_sub93689,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub93689.stripped.N4.nii.gz +ADNI1080321,F,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I1080321_114_S_6597.stripped.N4.nii.gz +DLBS0028434_session_1,F,70.1,dlbs_storage/DLBS_bias_corrected/0028434_session_1.stripped.N4.nii.gz +DLBS0028576_session_1,F,32.92,dlbs_storage/DLBS_bias_corrected/0028576_session_1.stripped.N4.nii.gz +DLBS0028342_session_1,F,31.98,dlbs_storage/DLBS_bias_corrected/0028342_session_1.stripped.N4.nii.gz +ADNI460666,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460666_073_S_4795.stripped.N4.nii.gz +sub-CC420222,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420222.stripped.N4.nii.gz +sub-CC720685,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720685.stripped.N4.nii.gz +sub-CC221209,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221209.stripped.N4.nii.gz +fcon1000Milwaukee_sub09931,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub09931.stripped.N4.nii.gz +fcon1000Cambridge_sub14278,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14278.stripped.N4.nii.gz +fcon1000Cambridge_sub29425,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29425.stripped.N4.nii.gz +ADNI1195772,F,63.7,adni_storage/ADNI_nii_gz_bias_corrected/I1195772_019_S_6483.stripped.N4.nii.gz +fcon1000Cambridge_sub55874,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55874.stripped.N4.nii.gz +ADNI274149,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I274149_002_S_1155.stripped.N4.nii.gz +ADNI10302489,M,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I10302489_011_S_7112.stripped.N4.nii.gz +fcon1000NewYork_sub23844,F,20.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub23844.stripped.N4.nii.gz +DLBS0028515_session_1,F,50.9,dlbs_storage/DLBS_bias_corrected/0028515_session_1.stripped.N4.nii.gz +ADNI1253903,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1253903_032_S_6602.stripped.N4.nii.gz +fcon1000Beijing_sub06880,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub06880.stripped.N4.nii.gz +sub-CC120313,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120313.stripped.N4.nii.gz +ADNI362185,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I362185_041_S_4874.stripped.N4.nii.gz +ADNI10874412,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I10874412_019_S_10145.stripped.N4.nii.gz +ADNI395983,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I395983_130_S_4982.stripped.N4.nii.gz +fcon1000Baltimore_sub91622,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub91622.stripped.N4.nii.gz +DLBS0028414_session_1,F,68.45,dlbs_storage/DLBS_bias_corrected/0028414_session_1.stripped.N4.nii.gz +ADNI114056,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I114056_016_S_1121.stripped.N4.nii.gz +sub-CC510395,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510395.stripped.N4.nii.gz +fcon1000Cambridge_sub89107,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89107.stripped.N4.nii.gz +fcon1000Cambridge_sub60797,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub60797.stripped.N4.nii.gz +fcon1000Newark_sub55760,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub55760.stripped.N4.nii.gz +DLBS0028446_session_1,M,50.89,dlbs_storage/DLBS_bias_corrected/0028446_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub87320,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub87320.stripped.N4.nii.gz +DLBS0028608_session_1,F,38.13,dlbs_storage/DLBS_bias_corrected/0028608_session_1.stripped.N4.nii.gz +sub-CC321331,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321331.stripped.N4.nii.gz +fcon1000Beijing_sub34895,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub34895.stripped.N4.nii.gz +sub-CC220697,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220697.stripped.N4.nii.gz +ADNI1454373,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I1454373_137_S_6906.stripped.N4.nii.gz +ADNI844181,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I844181_022_S_6013.stripped.N4.nii.gz +sub-CC621184,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621184.stripped.N4.nii.gz +sub-CC510473,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510473.stripped.N4.nii.gz +DLBS0028370_session_1,F,22.88,dlbs_storage/DLBS_bias_corrected/0028370_session_1.stripped.N4.nii.gz +DLBS0028567_session_1,F,85.6,dlbs_storage/DLBS_bias_corrected/0028567_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub01912,M,31.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub01912.stripped.N4.nii.gz +ADNI1469814,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1469814_073_S_6925.stripped.N4.nii.gz +sub-CC410222,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410222.stripped.N4.nii.gz +DLBS0028445_session_1,M,55.37,dlbs_storage/DLBS_bias_corrected/0028445_session_1.stripped.N4.nii.gz +DLBS0028451_session_1,F,43.61,dlbs_storage/DLBS_bias_corrected/0028451_session_1.stripped.N4.nii.gz +DLBS0028503_session_1,F,88.32,dlbs_storage/DLBS_bias_corrected/0028503_session_1.stripped.N4.nii.gz +sub-CC221220,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221220.stripped.N4.nii.gz +sub-CC310203,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310203.stripped.N4.nii.gz +ADNI73490,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I73490_067_S_1253.stripped.N4.nii.gz +fcon1000Beijing_sub04050,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub04050.stripped.N4.nii.gz +ADNI168101,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I168101_051_S_1072.stripped.N4.nii.gz +sub-CC420094,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420094.stripped.N4.nii.gz +fcon1000Cambridge_sub15172,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15172.stripped.N4.nii.gz +fcon1000Cambridge_sub14183,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14183.stripped.N4.nii.gz +sub-CC220506,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220506.stripped.N4.nii.gz +sub-CC722542,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722542.stripped.N4.nii.gz +DLBS0028401_session_1,F,54.05,dlbs_storage/DLBS_bias_corrected/0028401_session_1.stripped.N4.nii.gz +sub-CC721891,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721891.stripped.N4.nii.gz +sub-CC510161,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510161.stripped.N4.nii.gz +sub-CC621011,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621011.stripped.N4.nii.gz +sub-CC520209,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520209.stripped.N4.nii.gz +DLBS0028625_session_1,F,60.37,dlbs_storage/DLBS_bias_corrected/0028625_session_1.stripped.N4.nii.gz +ADNI60863,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I60863_133_S_0913.stripped.N4.nii.gz +ADNI1559412,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1559412_082_S_6629.stripped.N4.nii.gz +sub-CC220920,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220920.stripped.N4.nii.gz +fcon1000Cambridge_sub83409,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub83409.stripped.N4.nii.gz +ADNI1406523,F,55.5,adni_storage/ADNI_nii_gz_bias_corrected/I1406523_305_S_6899.stripped.N4.nii.gz +fcon1000Berlin_sub67166,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub67166.stripped.N4.nii.gz +sub-CC221336,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221336.stripped.N4.nii.gz +fcon1000Beijing_sub07717,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07717.stripped.N4.nii.gz +fcon1000AnnArbor_sub05580,F,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub05580.stripped.N4.nii.gz +DLBS0028386_session_1,F,33.13,dlbs_storage/DLBS_bias_corrected/0028386_session_1.stripped.N4.nii.gz +ADNI10386604,F,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I10386604_035_S_10067.stripped.N4.nii.gz +fcon1000Beijing_sub68012,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub68012.stripped.N4.nii.gz +ADNI1194377,F,55.1,adni_storage/ADNI_nii_gz_bias_corrected/I1194377_016_S_6773.stripped.N4.nii.gz +sub-CC410113,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410113.stripped.N4.nii.gz +sub-CC120264,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120264.stripped.N4.nii.gz +ADNI347410,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I347410_130_S_4997.stripped.N4.nii.gz +ADNI1254370,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1254370_014_S_6076.stripped.N4.nii.gz +ADNI423069,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I423069_128_S_4607.stripped.N4.nii.gz +DLBS0028476_session_1,F,65.91,dlbs_storage/DLBS_bias_corrected/0028476_session_1.stripped.N4.nii.gz +sub-CC510474,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510474.stripped.N4.nii.gz +fcon1000Milwaukee_sub56333,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56333.stripped.N4.nii.gz +sub-CC221373,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221373.stripped.N4.nii.gz +DLBS0028362_session_1,F,60.87,dlbs_storage/DLBS_bias_corrected/0028362_session_1.stripped.N4.nii.gz +sub-CC510015,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510015.stripped.N4.nii.gz +sub-CC510438,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510438.stripped.N4.nii.gz +ADNI974338,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I974338_003_S_6257.stripped.N4.nii.gz +sub-CC320636,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320636.stripped.N4.nii.gz +sub-CC520395,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520395.stripped.N4.nii.gz +fcon1000Berlin_sub33248,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub33248.stripped.N4.nii.gz +sub-CC210088,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210088.stripped.N4.nii.gz +DLBS0028472_session_1,M,42.45,dlbs_storage/DLBS_bias_corrected/0028472_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub39737,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39737.stripped.N4.nii.gz +ADNI344059,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I344059_041_S_4874.stripped.N4.nii.gz +fcon1000Milwaukee_sub45852,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub45852.stripped.N4.nii.gz +fcon1000Beijing_sub22715,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22715.stripped.N4.nii.gz +fcon1000Beijing_sub17093,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17093.stripped.N4.nii.gz +fcon1000NewYork_sub28795,M,10.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub28795.stripped.N4.nii.gz +DLBS0028544_session_1,M,81.75,dlbs_storage/DLBS_bias_corrected/0028544_session_1.stripped.N4.nii.gz +sub-CC520134,F,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520134.stripped.N4.nii.gz +ADNI10937009,M,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I10937009_052_S_10188.stripped.N4.nii.gz +ADNI132477,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I132477_016_S_1121.stripped.N4.nii.gz +sub-CC721519,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721519.stripped.N4.nii.gz +ADNI10454377,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I10454377_022_S_10055.stripped.N4.nii.gz +sub-CC222185,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222185.stripped.N4.nii.gz +ADNI1446679,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I1446679_070_S_6942.stripped.N4.nii.gz +fcon1000AnnArbor_sub85257,M,26.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub85257.stripped.N4.nii.gz +fcon1000NewYork_sub29216,M,29.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29216.stripped.N4.nii.gz +DLBS0028479_session_1,M,40.93,dlbs_storage/DLBS_bias_corrected/0028479_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub35776,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35776.stripped.N4.nii.gz +sub-CC210023,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210023.stripped.N4.nii.gz +ADNI267809,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I267809_037_S_4028.stripped.N4.nii.gz +fcon1000NewYork_sub53461,M,27.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub53461.stripped.N4.nii.gz +fcon1000Milwaukee_sub55176,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub55176.stripped.N4.nii.gz +DLBS0028420_session_1,F,81.2,dlbs_storage/DLBS_bias_corrected/0028420_session_1.stripped.N4.nii.gz +sub-CC510237,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510237.stripped.N4.nii.gz +fcon1000Cambridge_sub49998,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub49998.stripped.N4.nii.gz +fcon1000Cambridge_sub13187,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13187.stripped.N4.nii.gz +sub-CC222496,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222496.stripped.N4.nii.gz +fcon1000Cambridge_sub04491,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04491.stripped.N4.nii.gz +sub-CC120376,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120376.stripped.N4.nii.gz +ADNI114263,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I114263_133_S_0913.stripped.N4.nii.gz +DLBS0028602_session_1,F,29.19,dlbs_storage/DLBS_bias_corrected/0028602_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub15846,F,70.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub15846.stripped.N4.nii.gz +fcon1000Baltimore_sub76160,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub76160.stripped.N4.nii.gz +fcon1000Cambridge_sub99462,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99462.stripped.N4.nii.gz +fcon1000Beijing_sub66889,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66889.stripped.N4.nii.gz +ADNI87682,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I87682_133_S_0913.stripped.N4.nii.gz +ADNI1254369,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1254369_014_S_6076.stripped.N4.nii.gz +ADNI367180,M,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I367180_135_S_4954.stripped.N4.nii.gz +fcon1000Berlin_sub54976,M,37.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub54976.stripped.N4.nii.gz +fcon1000Beijing_sub87776,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub87776.stripped.N4.nii.gz +fcon1000Milwaukee_sub59359,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub59359.stripped.N4.nii.gz +ADNI1079629,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1079629_082_S_6629.stripped.N4.nii.gz +sub-CC221352,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221352.stripped.N4.nii.gz +sub-CC210124,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210124.stripped.N4.nii.gz +fcon1000NewYork_sub19579,M,46.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub19579.stripped.N4.nii.gz +sub-CC320568,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320568.stripped.N4.nii.gz +sub-CC520503,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520503.stripped.N4.nii.gz +fcon1000Baltimore_sub77572,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub77572.stripped.N4.nii.gz +DLBS0028375_session_1,F,59.07,dlbs_storage/DLBS_bias_corrected/0028375_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub30157,M,54.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub30157.stripped.N4.nii.gz +fcon1000AnnArbor_sub78151,M,23.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub78151.stripped.N4.nii.gz +DLBS0028586_session_1,M,79.85,dlbs_storage/DLBS_bias_corrected/0028586_session_1.stripped.N4.nii.gz +DLBS0028447_session_1,M,51.78,dlbs_storage/DLBS_bias_corrected/0028447_session_1.stripped.N4.nii.gz +sub-CC221954,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221954.stripped.N4.nii.gz +sub-CC320893,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320893.stripped.N4.nii.gz +fcon1000Beijing_sub07144,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07144.stripped.N4.nii.gz +DLBS0028482_session_1,M,63.47,dlbs_storage/DLBS_bias_corrected/0028482_session_1.stripped.N4.nii.gz +DLBS0028349_session_1,M,64.17,dlbs_storage/DLBS_bias_corrected/0028349_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub81737,F,67.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub81737.stripped.N4.nii.gz +ADNI341153,M,60.6,adni_storage/ADNI_nii_gz_bias_corrected/I341153_128_S_4599.stripped.N4.nii.gz +sub-CC110098,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110098.stripped.N4.nii.gz +sub-CC621118,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621118.stripped.N4.nii.gz +DLBS0028452_session_1,F,59.71,dlbs_storage/DLBS_bias_corrected/0028452_session_1.stripped.N4.nii.gz +ADNI228845,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I228845_037_S_4028.stripped.N4.nii.gz +DLBS0028614_session_1,F,53.77,dlbs_storage/DLBS_bias_corrected/0028614_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub24670,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub24670.stripped.N4.nii.gz +ADNI1181048,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1181048_116_S_6428.stripped.N4.nii.gz +fcon1000Cambridge_sub59729,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub59729.stripped.N4.nii.gz +DLBS0028425_session_1,M,23.02,dlbs_storage/DLBS_bias_corrected/0028425_session_1.stripped.N4.nii.gz +sub-CC510342,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510342.stripped.N4.nii.gz +fcon1000Milwaukee_sub58967,F,61.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub58967.stripped.N4.nii.gz +sub-CC220107,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220107.stripped.N4.nii.gz +sub-CC620499,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620499.stripped.N4.nii.gz +fcon1000Cambridge_sub89435,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89435.stripped.N4.nii.gz +sub-CC420162,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420162.stripped.N4.nii.gz +fcon1000Newark_sub78225,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub78225.stripped.N4.nii.gz +fcon1000AnnArbor_sub38614,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub38614.stripped.N4.nii.gz +fcon1000Leiden_sub52853,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub52853.stripped.N4.nii.gz +DLBS0028353_session_1,M,60.01,dlbs_storage/DLBS_bias_corrected/0028353_session_1.stripped.N4.nii.gz +ADNI10471094,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I10471094_073_S_10113.stripped.N4.nii.gz +sub-CC312058,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC312058.stripped.N4.nii.gz +sub-CC710176,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710176.stripped.N4.nii.gz +ADNI296147,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I296147_116_S_4625.stripped.N4.nii.gz +sub-CC520562,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520562.stripped.N4.nii.gz +DLBS0028621_session_1,F,30.6,dlbs_storage/DLBS_bias_corrected/0028621_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub53269,M,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub53269.stripped.N4.nii.gz +DLBS0028529_session_1,F,86.77,dlbs_storage/DLBS_bias_corrected/0028529_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub30272,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30272.stripped.N4.nii.gz +fcon1000Beijing_sub89088,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89088.stripped.N4.nii.gz +DLBS0028396_session_1,M,67.74,dlbs_storage/DLBS_bias_corrected/0028396_session_1.stripped.N4.nii.gz +sub-CC620479,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620479.stripped.N4.nii.gz +ADNI352951,M,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I352951_002_S_1155.stripped.N4.nii.gz +fcon1000Milwaukee_sub64463,M,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub64463.stripped.N4.nii.gz +sub-CC620129,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620129.stripped.N4.nii.gz +DLBS0028594_session_1,M,80.29,dlbs_storage/DLBS_bias_corrected/0028594_session_1.stripped.N4.nii.gz +sub-CC220974,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220974.stripped.N4.nii.gz +sub-CC321281,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321281.stripped.N4.nii.gz +sub-CC310252,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310252.stripped.N4.nii.gz +ADNI944422,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I944422_041_S_6136.stripped.N4.nii.gz +fcon1000Cambridge_sub61753,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61753.stripped.N4.nii.gz +sub-CC310129,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310129.stripped.N4.nii.gz +sub-CC320088,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320088.stripped.N4.nii.gz +sub-CC621642,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621642.stripped.N4.nii.gz +fcon1000Cambridge_sub17772,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17772.stripped.N4.nii.gz +sub-CC321174,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321174.stripped.N4.nii.gz +ADNI1486321,M,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I1486321_941_S_6998.stripped.N4.nii.gz +ADNI313534,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I313534_116_S_4625.stripped.N4.nii.gz +DLBS0028340_session_1,F,67.83,dlbs_storage/DLBS_bias_corrected/0028340_session_1.stripped.N4.nii.gz +sub-CC321431,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321431.stripped.N4.nii.gz +sub-CC711158,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711158.stripped.N4.nii.gz +sub-CC420412,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420412.stripped.N4.nii.gz +sub-CC510115,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510115.stripped.N4.nii.gz +sub-CC120208,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120208.stripped.N4.nii.gz +fcon1000NewYork_sub41546,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub41546.stripped.N4.nii.gz +sub-CC610372,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610372.stripped.N4.nii.gz +DLBS0028350_session_1,F,49.82,dlbs_storage/DLBS_bias_corrected/0028350_session_1.stripped.N4.nii.gz +sub-CC620785,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620785.stripped.N4.nii.gz +sub-CC710382,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710382.stripped.N4.nii.gz +DLBS0028352_session_1,F,29.84,dlbs_storage/DLBS_bias_corrected/0028352_session_1.stripped.N4.nii.gz +ADNI296878,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I296878_012_S_4642.stripped.N4.nii.gz +fcon1000Munchen_sub96752,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub96752.stripped.N4.nii.gz +ADNI1514331,F,52.8,adni_storage/ADNI_nii_gz_bias_corrected/I1514331_037_S_6992.stripped.N4.nii.gz +ADNI368465,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I368465_073_S_4552.stripped.N4.nii.gz +fcon1000Baltimore_sub90893,F,39.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub90893.stripped.N4.nii.gz +fcon1000Cambridge_sub82435,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82435.stripped.N4.nii.gz +fcon1000Beijing_sub15441,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub15441.stripped.N4.nii.gz +sub-CC621284,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621284.stripped.N4.nii.gz +sub-CC410354,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410354.stripped.N4.nii.gz +sub-CC122405,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122405.stripped.N4.nii.gz +fcon1000Cambridge_sub50272,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50272.stripped.N4.nii.gz +sub-CC721707,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721707.stripped.N4.nii.gz +fcon1000Bangor_sub04097,M,36.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub04097.stripped.N4.nii.gz +ADNI1092240,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1092240_114_S_6039.stripped.N4.nii.gz +DLBS0028631_session_1,F,29.92,dlbs_storage/DLBS_bias_corrected/0028631_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub87784,M,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub87784.stripped.N4.nii.gz +ADNI365455,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I365455_073_S_4795.stripped.N4.nii.gz +sub-CC310414,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310414.stripped.N4.nii.gz +fcon1000Cleveland_sub02480,F,56.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub02480.stripped.N4.nii.gz +fcon1000Milwaukee_sub24237,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub24237.stripped.N4.nii.gz +fcon1000NewYork_sub15213,M,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub15213.stripped.N4.nii.gz +sub-CC110037,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110037.stripped.N4.nii.gz +fcon1000Beijing_sub71693,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub71693.stripped.N4.nii.gz +DLBS0028490_session_1,F,63.73,dlbs_storage/DLBS_bias_corrected/0028490_session_1.stripped.N4.nii.gz +sub-CC321880,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321880.stripped.N4.nii.gz +sub-CC321594,M,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321594.stripped.N4.nii.gz +sub-CC221828,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221828.stripped.N4.nii.gz +DLBS0028474_session_1,F,83.7,dlbs_storage/DLBS_bias_corrected/0028474_session_1.stripped.N4.nii.gz +ADNI247842,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I247842_037_S_4028.stripped.N4.nii.gz +fcon1000Cambridge_sub57221,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub57221.stripped.N4.nii.gz +sub-CC120286,M,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120286.stripped.N4.nii.gz +DLBS0028441_session_1,M,45.18,dlbs_storage/DLBS_bias_corrected/0028441_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub28698,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28698.stripped.N4.nii.gz +ADNI117521,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I117521_051_S_1072.stripped.N4.nii.gz +fcon1000Cambridge_sub47162,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47162.stripped.N4.nii.gz +fcon1000Beijing_sub54890,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub54890.stripped.N4.nii.gz +sub-CC720304,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720304.stripped.N4.nii.gz +fcon1000Cambridge_sub58682,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58682.stripped.N4.nii.gz +fcon1000Beijing_sub05267,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub05267.stripped.N4.nii.gz +ADNI36695,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I36695_016_S_1121.stripped.N4.nii.gz +sub-CC520775,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520775.stripped.N4.nii.gz +fcon1000Beijing_sub81062,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub81062.stripped.N4.nii.gz +fcon1000Milwaukee_sub58677,F,46.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub58677.stripped.N4.nii.gz +DLBS0028374_session_1,F,55.62,dlbs_storage/DLBS_bias_corrected/0028374_session_1.stripped.N4.nii.gz +DLBS0028345_session_1,F,59.73,dlbs_storage/DLBS_bias_corrected/0028345_session_1.stripped.N4.nii.gz +DLBS0028381_session_1,F,24.24,dlbs_storage/DLBS_bias_corrected/0028381_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub42512,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42512.stripped.N4.nii.gz +sub-CC620557,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620557.stripped.N4.nii.gz +sub-CC120469,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120469.stripped.N4.nii.gz +ADNI399835,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I399835_137_S_0994.stripped.N4.nii.gz +ADNI379704,M,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I379704_131_S_5138.stripped.N4.nii.gz +DLBS0028574_session_1,M,50.35,dlbs_storage/DLBS_bias_corrected/0028574_session_1.stripped.N4.nii.gz +ADNI359049,M,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I359049_073_S_5090.stripped.N4.nii.gz +sub-CC222367,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222367.stripped.N4.nii.gz +fcon1000Beijing_sub56659,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56659.stripped.N4.nii.gz +fcon1000Cambridge_sub63661,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub63661.stripped.N4.nii.gz +DLBS0028566_session_1,F,57.36,dlbs_storage/DLBS_bias_corrected/0028566_session_1.stripped.N4.nii.gz +ADNI1079630,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1079630_082_S_6629.stripped.N4.nii.gz +ADNI358859,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I358859_130_S_4982.stripped.N4.nii.gz +DLBS0028428_session_1,F,45.85,dlbs_storage/DLBS_bias_corrected/0028428_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub99085,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99085.stripped.N4.nii.gz +fcon1000Beijing_sub66528,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66528.stripped.N4.nii.gz +ADNI1332718,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I1332718_123_S_6884.stripped.N4.nii.gz +ADNI1031290,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1031290_070_S_6542.stripped.N4.nii.gz +fcon1000NewYork_sub22349,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub22349.stripped.N4.nii.gz +fcon1000Cambridge_sub06987,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06987.stripped.N4.nii.gz +fcon1000Beijing_sub58029,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58029.stripped.N4.nii.gz +sub-CC610462,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610462.stripped.N4.nii.gz +ADNI1029048,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I1029048_177_S_6409.stripped.N4.nii.gz +DLBS0028502_session_1,F,82.54,dlbs_storage/DLBS_bias_corrected/0028502_session_1.stripped.N4.nii.gz +DLBS0028514_session_1,M,34.44,dlbs_storage/DLBS_bias_corrected/0028514_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub34189,M,55.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub34189.stripped.N4.nii.gz +sub-CC520517,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520517.stripped.N4.nii.gz +fcon1000Cambridge_sub68425,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub68425.stripped.N4.nii.gz +fcon1000Beijing_sub42555,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42555.stripped.N4.nii.gz +ADNI10453853,M,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I10453853_019_S_10102.stripped.N4.nii.gz +fcon1000Beijing_sub30988,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30988.stripped.N4.nii.gz +fcon1000Beijing_sub42843,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42843.stripped.N4.nii.gz +fcon1000Berlin_sub27797,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27797.stripped.N4.nii.gz +sub-CC610099,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610099.stripped.N4.nii.gz +fcon1000Cambridge_sub37374,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub37374.stripped.N4.nii.gz +fcon1000Cambridge_sub34586,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub34586.stripped.N4.nii.gz +fcon1000Cambridge_sub39142,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39142.stripped.N4.nii.gz +ADNI1559411,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1559411_082_S_6629.stripped.N4.nii.gz +fcon1000Cleveland_sub58811,M,36.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub58811.stripped.N4.nii.gz +fcon1000Cambridge_sub25058,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25058.stripped.N4.nii.gz +fcon1000Cambridge_sub90059,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90059.stripped.N4.nii.gz +fcon1000Beijing_sub88306,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub88306.stripped.N4.nii.gz +ADNI386097,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I386097_041_S_4874.stripped.N4.nii.gz +DLBS0028382_session_1,F,88.07,dlbs_storage/DLBS_bias_corrected/0028382_session_1.stripped.N4.nii.gz +sub-CC711245,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711245.stripped.N4.nii.gz +ADNI908586,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I908586_012_S_6073.stripped.N4.nii.gz +sub-CC221977,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221977.stripped.N4.nii.gz +fcon1000NewYork_sub48803,M,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub48803.stripped.N4.nii.gz +ADNI1002373,M,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1002373_014_S_6366.stripped.N4.nii.gz +ADNI298226,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I298226_023_S_4448.stripped.N4.nii.gz +fcon1000Cleveland_sub46075,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub46075.stripped.N4.nii.gz +fcon1000NewYork_sub26267,F,15.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub26267.stripped.N4.nii.gz +fcon1000Cambridge_sub84064,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84064.stripped.N4.nii.gz +fcon1000Cleveland_sub67936,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub67936.stripped.N4.nii.gz +sub-CC520065,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520065.stripped.N4.nii.gz +sub-CC320417,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320417.stripped.N4.nii.gz +ADNI20682,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I20682_131_S_0691.stripped.N4.nii.gz +sub-CC310473,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310473.stripped.N4.nii.gz +fcon1000NewYork_sub15758,M,32.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub15758.stripped.N4.nii.gz +fcon1000Berlin_sub47066,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub47066.stripped.N4.nii.gz +fcon1000Beijing_sub35309,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35309.stripped.N4.nii.gz +fcon1000Beijing_sub02403,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub02403.stripped.N4.nii.gz +fcon1000Cleveland_sub18566,F,33.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub18566.stripped.N4.nii.gz +ADNI298228,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I298228_023_S_4448.stripped.N4.nii.gz +sub-CC420260,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420260.stripped.N4.nii.gz +DLBS0028550_session_1,F,22.17,dlbs_storage/DLBS_bias_corrected/0028550_session_1.stripped.N4.nii.gz +sub-CC710350,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710350.stripped.N4.nii.gz +fcon1000AnnArbor_sub56028,F,26.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub56028.stripped.N4.nii.gz +fcon1000Cambridge_sub61185,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61185.stripped.N4.nii.gz +ADNI1592044,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1592044_014_S_7080.stripped.N4.nii.gz +DLBS0028469_session_1,M,50.46,dlbs_storage/DLBS_bias_corrected/0028469_session_1.stripped.N4.nii.gz +sub-CC510355,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510355.stripped.N4.nii.gz +fcon1000NewYork_sub24528,M,45.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub24528.stripped.N4.nii.gz +DLBS0028486_session_1,F,37.81,dlbs_storage/DLBS_bias_corrected/0028486_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub27519,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub27519.stripped.N4.nii.gz +DLBS0028609_session_1,M,85.77,dlbs_storage/DLBS_bias_corrected/0028609_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub44515,M,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44515.stripped.N4.nii.gz +ADNI10907107,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I10907107_073_S_10167.stripped.N4.nii.gz +fcon1000Cambridge_sub77337,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77337.stripped.N4.nii.gz +sub-CC420061,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420061.stripped.N4.nii.gz +fcon1000Cambridge_sub29800,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29800.stripped.N4.nii.gz +sub-CC710416,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710416.stripped.N4.nii.gz +ADNI1321252,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1321252_305_S_6744.stripped.N4.nii.gz +fcon1000Cambridge_sub61436,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61436.stripped.N4.nii.gz +fcon1000AnnArbor_sub04619,M,18.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub04619.stripped.N4.nii.gz +sub-CC420433,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420433.stripped.N4.nii.gz +fcon1000Cambridge_sub99330,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99330.stripped.N4.nii.gz +sub-CC420454,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420454.stripped.N4.nii.gz +sub-CC710494,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710494.stripped.N4.nii.gz +fcon1000NewYork_sub54828,M,41.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub54828.stripped.N4.nii.gz +ADNI339298,M,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I339298_073_S_4552.stripped.N4.nii.gz +ADNI271074,M,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I271074_116_S_4195.stripped.N4.nii.gz +sub-CC720497,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720497.stripped.N4.nii.gz +ADNI942628,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I942628_036_S_6134.stripped.N4.nii.gz +ADNI372468,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I372468_019_S_5019.stripped.N4.nii.gz +fcon1000Newark_sub53422,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub53422.stripped.N4.nii.gz +sub-CC510226,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510226.stripped.N4.nii.gz +sub-CC420241,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420241.stripped.N4.nii.gz +ADNI10417928,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10417928_037_S_10061.stripped.N4.nii.gz +fcon1000Beijing_sub08455,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08455.stripped.N4.nii.gz +sub-CC510534,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510534.stripped.N4.nii.gz +fcon1000Cambridge_sub61209,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61209.stripped.N4.nii.gz +sub-CC721434,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721434.stripped.N4.nii.gz +sub-CC720023,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720023.stripped.N4.nii.gz +DLBS0028442_session_1,F,29.32,dlbs_storage/DLBS_bias_corrected/0028442_session_1.stripped.N4.nii.gz +sub-CC410220,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410220.stripped.N4.nii.gz +fcon1000Baltimore_sub31837,F,34.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub31837.stripped.N4.nii.gz +sub-CC320680,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320680.stripped.N4.nii.gz +DLBS0028399_session_1,F,70.68,dlbs_storage/DLBS_bias_corrected/0028399_session_1.stripped.N4.nii.gz +ADNI1527249,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I1527249_035_S_7030.stripped.N4.nii.gz +sub-CC410226,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410226.stripped.N4.nii.gz +sub-CC620436,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620436.stripped.N4.nii.gz +fcon1000Atlanta_sub61442,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub61442.stripped.N4.nii.gz +sub-CC610288,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610288.stripped.N4.nii.gz +fcon1000Beijing_sub87089,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub87089.stripped.N4.nii.gz +fcon1000Beijing_sub53572,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub53572.stripped.N4.nii.gz +DLBS0028346_session_1,F,57.48,dlbs_storage/DLBS_bias_corrected/0028346_session_1.stripped.N4.nii.gz +ADNI1463003,M,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I1463003_033_S_6976.stripped.N4.nii.gz +fcon1000Newark_sub54933,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub54933.stripped.N4.nii.gz +sub-CC120123,F,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120123.stripped.N4.nii.gz +fcon1000Beijing_sub91952,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91952.stripped.N4.nii.gz +DLBS0028477_session_1,F,60.81,dlbs_storage/DLBS_bias_corrected/0028477_session_1.stripped.N4.nii.gz +DLBS0028372_session_1,F,74.83,dlbs_storage/DLBS_bias_corrected/0028372_session_1.stripped.N4.nii.gz +sub-CC610051,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610051.stripped.N4.nii.gz +fcon1000Munchen_sub66933,M,72.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub66933.stripped.N4.nii.gz +fcon1000Atlanta_sub61902,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub61902.stripped.N4.nii.gz +sub-CC620496,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620496.stripped.N4.nii.gz +fcon1000Beijing_sub10973,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10973.stripped.N4.nii.gz +fcon1000NewYork_sub21212,M,30.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub21212.stripped.N4.nii.gz +sub-CC520055,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520055.stripped.N4.nii.gz +ADNI1004030,F,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1004030_023_S_6400.stripped.N4.nii.gz +ADNI925573,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I925573_168_S_6098.stripped.N4.nii.gz +fcon1000Baltimore_sub81887,M,32.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub81887.stripped.N4.nii.gz +fcon1000NewYork_sub77203,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub77203.stripped.N4.nii.gz +sub-CC410177,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410177.stripped.N4.nii.gz +DLBS0028338_session_1,F,30.26,dlbs_storage/DLBS_bias_corrected/0028338_session_1.stripped.N4.nii.gz +ADNI10666918,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I10666918_301_S_10139.stripped.N4.nii.gz +fcon1000Cambridge_sub09015,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09015.stripped.N4.nii.gz +DLBS0028455_session_1,F,72.56,dlbs_storage/DLBS_bias_corrected/0028455_session_1.stripped.N4.nii.gz +sub-CC420197,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420197.stripped.N4.nii.gz +sub-CC710313,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710313.stripped.N4.nii.gz +fcon1000Atlanta_sub55652,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub55652.stripped.N4.nii.gz +fcon1000Leiden_sub10481,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub10481.stripped.N4.nii.gz +fcon1000Cambridge_sub64308,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub64308.stripped.N4.nii.gz +fcon1000Beijing_sub10869,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10869.stripped.N4.nii.gz +sub-CC520247,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520247.stripped.N4.nii.gz +DLBS0028367_session_1,F,29.58,dlbs_storage/DLBS_bias_corrected/0028367_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub35512,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub35512.stripped.N4.nii.gz +ADNI342679,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I342679_073_S_5016.stripped.N4.nii.gz +ADNI1215081,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1215081_116_S_6550.stripped.N4.nii.gz +sub-CC510304,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510304.stripped.N4.nii.gz +sub-CC620549,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620549.stripped.N4.nii.gz +DLBS0028569_session_1,M,67.65,dlbs_storage/DLBS_bias_corrected/0028569_session_1.stripped.N4.nii.gz +sub-CC320576,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320576.stripped.N4.nii.gz +fcon1000Cleveland_sub20003,M,39.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub20003.stripped.N4.nii.gz +sub-CC220115,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220115.stripped.N4.nii.gz +ADNI883189,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I883189_141_S_6042.stripped.N4.nii.gz +ADNI415587,M,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I415587_009_S_5252.stripped.N4.nii.gz +fcon1000Atlanta_sub18702,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub18702.stripped.N4.nii.gz +sub-CC723395,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC723395.stripped.N4.nii.gz +fcon1000NewYork_sub53710,F,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub53710.stripped.N4.nii.gz +ADNI372477,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I372477_019_S_5019.stripped.N4.nii.gz +ADNI238752,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I238752_014_S_4039.stripped.N4.nii.gz +sub-CC221031,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221031.stripped.N4.nii.gz +fcon1000Cambridge_sub51172,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51172.stripped.N4.nii.gz +sub-CC620515,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620515.stripped.N4.nii.gz +sub-CC320267,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320267.stripped.N4.nii.gz +sub-CC221038,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221038.stripped.N4.nii.gz +fcon1000AnnArbor_sub42616,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub42616.stripped.N4.nii.gz +sub-CC321595,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321595.stripped.N4.nii.gz +DLBS0028496_session_1,M,22.44,dlbs_storage/DLBS_bias_corrected/0028496_session_1.stripped.N4.nii.gz +sub-CC720290,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720290.stripped.N4.nii.gz +sub-CC520168,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520168.stripped.N4.nii.gz +fcon1000Berlin_sub97162,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub97162.stripped.N4.nii.gz +DLBS0028541_session_1,F,45.8,dlbs_storage/DLBS_bias_corrected/0028541_session_1.stripped.N4.nii.gz +DLBS0028402_session_1,M,86.41,dlbs_storage/DLBS_bias_corrected/0028402_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub45019,F,44.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub45019.stripped.N4.nii.gz +ADNI46723,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I46723_016_S_0769.stripped.N4.nii.gz +sub-CC720986,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720986.stripped.N4.nii.gz +sub-CC710342,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710342.stripped.N4.nii.gz +sub-CC520127,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520127.stripped.N4.nii.gz +ADNI117520,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I117520_051_S_1072.stripped.N4.nii.gz +fcon1000Beijing_sub33991,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33991.stripped.N4.nii.gz +sub-CC420180,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420180.stripped.N4.nii.gz +sub-CC610022,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610022.stripped.N4.nii.gz +sub-CC521040,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC521040.stripped.N4.nii.gz +fcon1000Beijing_sub62083,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62083.stripped.N4.nii.gz +fcon1000Atlanta_sub26938,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub26938.stripped.N4.nii.gz +ADNI958917,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I958917_070_S_6191.stripped.N4.nii.gz +sub-CC420623,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420623.stripped.N4.nii.gz +fcon1000NewYork_sub45217,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub45217.stripped.N4.nii.gz +sub-CC310135,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310135.stripped.N4.nii.gz +ADNI1427086,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1427086_003_S_6924.stripped.N4.nii.gz +DLBS0028456_session_1,M,53.75,dlbs_storage/DLBS_bias_corrected/0028456_session_1.stripped.N4.nii.gz +ADNI1549623,F,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1549623_035_S_7043.stripped.N4.nii.gz +ADNI1485047,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1485047_116_S_6550.stripped.N4.nii.gz +fcon1000Berlin_sub75506,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub75506.stripped.N4.nii.gz +fcon1000AnnArbor_sub47659,M,33.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub47659.stripped.N4.nii.gz +fcon1000NewYork_sub12486,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub12486.stripped.N4.nii.gz +DLBS0028364_session_1,F,24.49,dlbs_storage/DLBS_bias_corrected/0028364_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub98624,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub98624.stripped.N4.nii.gz +ADNI982856,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I982856_109_S_6218.stripped.N4.nii.gz +sub-CC321899,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321899.stripped.N4.nii.gz +sub-CC310397,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310397.stripped.N4.nii.gz +fcon1000NewYork_sub51677,F,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub51677.stripped.N4.nii.gz +fcon1000AnnArbor_sub72215,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub72215.stripped.N4.nii.gz +sub-CC221107,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221107.stripped.N4.nii.gz +fcon1000Newark_sub76647,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub76647.stripped.N4.nii.gz +fcon1000Atlanta_sub75153,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub75153.stripped.N4.nii.gz +fcon1000Cambridge_sub17737,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17737.stripped.N4.nii.gz +ADNI296138,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I296138_116_S_4625.stripped.N4.nii.gz +sub-CC410094,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410094.stripped.N4.nii.gz +fcon1000Cambridge_sub41567,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41567.stripped.N4.nii.gz +fcon1000Atlanta_sub24972,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub24972.stripped.N4.nii.gz +fcon1000AnnArbor_sub90950,M,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub90950.stripped.N4.nii.gz +fcon1000Beijing_sub35806,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35806.stripped.N4.nii.gz +sub-CC721532,F,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721532.stripped.N4.nii.gz +fcon1000Cambridge_sub51512,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51512.stripped.N4.nii.gz +ADNI946333,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I946333_024_S_6033.stripped.N4.nii.gz +fcon1000Cambridge_sub71849,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub71849.stripped.N4.nii.gz +ADNI23823,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I23823_016_S_0769.stripped.N4.nii.gz +DLBS0028462_session_1,M,31.03,dlbs_storage/DLBS_bias_corrected/0028462_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub17004,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub17004.stripped.N4.nii.gz +ADNI10460262,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I10460262_011_S_10041.stripped.N4.nii.gz +sub-CC510208,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510208.stripped.N4.nii.gz +DLBS0028524_session_1,F,56.55,dlbs_storage/DLBS_bias_corrected/0028524_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub73812,M,28.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub73812.stripped.N4.nii.gz +sub-CC410284,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410284.stripped.N4.nii.gz +fcon1000Atlanta_sub58250,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub58250.stripped.N4.nii.gz +fcon1000Newark_sub71743,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub71743.stripped.N4.nii.gz +ADNI115774,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I115774_033_S_0733.stripped.N4.nii.gz +ADNI394452,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I394452_135_S_4954.stripped.N4.nii.gz +ADNI358858,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I358858_130_S_4982.stripped.N4.nii.gz +sub-CC321203,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321203.stripped.N4.nii.gz +fcon1000Cambridge_sub94304,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub94304.stripped.N4.nii.gz +ADNI1591453,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I1591453_014_S_7072.stripped.N4.nii.gz +DLBS0028526_session_1,M,42.6,dlbs_storage/DLBS_bias_corrected/0028526_session_1.stripped.N4.nii.gz +sub-CC310400,M,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310400.stripped.N4.nii.gz +fcon1000Bangor_sub87568,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub87568.stripped.N4.nii.gz +sub-CC520200,F,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520200.stripped.N4.nii.gz +sub-CC722891,F,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722891.stripped.N4.nii.gz +sub-CC420100,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420100.stripped.N4.nii.gz +sub-CC520053,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520053.stripped.N4.nii.gz +fcon1000Berlin_sub23506,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub23506.stripped.N4.nii.gz +sub-CC520287,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520287.stripped.N4.nii.gz +DLBS0028568_session_1,M,41.17,dlbs_storage/DLBS_bias_corrected/0028568_session_1.stripped.N4.nii.gz +ADNI1032531,F,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I1032531_116_S_6550.stripped.N4.nii.gz +sub-CC320621,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320621.stripped.N4.nii.gz +fcon1000Cambridge_sub62424,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62424.stripped.N4.nii.gz +fcon1000Cambridge_sub43304,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub43304.stripped.N4.nii.gz +sub-CC610061,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610061.stripped.N4.nii.gz +sub-CC320478,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320478.stripped.N4.nii.gz +sub-CC722421,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722421.stripped.N4.nii.gz +ADNI1469780,M,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1469780_073_S_6669.stripped.N4.nii.gz +fcon1000Munchen_sub64202,F,67.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub64202.stripped.N4.nii.gz +fcon1000Beijing_sub33747,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33747.stripped.N4.nii.gz +ADNI37255,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I37255_067_S_1185.stripped.N4.nii.gz +sub-CC420229,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420229.stripped.N4.nii.gz +sub-CC221002,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221002.stripped.N4.nii.gz +DLBS0028599_session_1,F,62.14,dlbs_storage/DLBS_bias_corrected/0028599_session_1.stripped.N4.nii.gz +sub-CC320888,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320888.stripped.N4.nii.gz +DLBS0028618_session_1,F,26.36,dlbs_storage/DLBS_bias_corrected/0028618_session_1.stripped.N4.nii.gz +sub-CC610614,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610614.stripped.N4.nii.gz +sub-CC710679,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710679.stripped.N4.nii.gz +sub-CC222125,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222125.stripped.N4.nii.gz +ADNI10658149,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I10658149_016_S_10124.stripped.N4.nii.gz +sub-CC720622,F,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720622.stripped.N4.nii.gz +sub-CC712027,M,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC712027.stripped.N4.nii.gz +sub-CC221487,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221487.stripped.N4.nii.gz +sub-CC220352,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220352.stripped.N4.nii.gz +ADNI46724,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I46724_016_S_0769.stripped.N4.nii.gz +fcon1000Berlin_sub57028,F,37.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub57028.stripped.N4.nii.gz +fcon1000Beijing_sub06899,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub06899.stripped.N4.nii.gz +fcon1000Cambridge_sub00294,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub00294.stripped.N4.nii.gz +fcon1000Leiden_sub40907,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub40907.stripped.N4.nii.gz +DLBS0028355_session_1,M,70.7,dlbs_storage/DLBS_bias_corrected/0028355_session_1.stripped.N4.nii.gz +ADNI1476165,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1476165_305_S_6744.stripped.N4.nii.gz +ADNI1484638,F,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I1484638_067_S_6986.stripped.N4.nii.gz +fcon1000Beijing_sub26713,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub26713.stripped.N4.nii.gz +DLBS0028510_session_1,F,51.3,dlbs_storage/DLBS_bias_corrected/0028510_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub20563,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20563.stripped.N4.nii.gz +fcon1000Newark_sub36023,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub36023.stripped.N4.nii.gz +fcon1000Berlin_sub27536,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27536.stripped.N4.nii.gz +fcon1000Milwaukee_sub75919,F,50.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub75919.stripped.N4.nii.gz +sub-CC110062,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110062.stripped.N4.nii.gz +ADNI347408,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I347408_130_S_4997.stripped.N4.nii.gz +fcon1000Leiden_sub18456,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub18456.stripped.N4.nii.gz +ADNI1571742,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I1571742_067_S_7061.stripped.N4.nii.gz +sub-CC610469,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610469.stripped.N4.nii.gz +fcon1000Munchen_sub28902,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub28902.stripped.N4.nii.gz +ADNI67599,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I67599_033_S_0733.stripped.N4.nii.gz +sub-CC320686,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320686.stripped.N4.nii.gz +sub-CC220098,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220098.stripped.N4.nii.gz +DLBS0028489_session_1,F,70.28,dlbs_storage/DLBS_bias_corrected/0028489_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub66131,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub66131.stripped.N4.nii.gz +DLBS0028626_session_1,M,48.88,dlbs_storage/DLBS_bias_corrected/0028626_session_1.stripped.N4.nii.gz +sub-CC720511,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720511.stripped.N4.nii.gz +fcon1000Beijing_sub28403,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28403.stripped.N4.nii.gz +ADNI1478584,F,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1478584_037_S_6963.stripped.N4.nii.gz +sub-CC721648,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721648.stripped.N4.nii.gz +ADNI267802,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I267802_037_S_4028.stripped.N4.nii.gz +fcon1000Beijing_sub55856,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55856.stripped.N4.nii.gz +fcon1000NewYork_sub10582,M,47.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub10582.stripped.N4.nii.gz +ADNI87683,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I87683_133_S_0913.stripped.N4.nii.gz +ADNI883190,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I883190_141_S_6042.stripped.N4.nii.gz +fcon1000Milwaukee_sub51182,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub51182.stripped.N4.nii.gz +sub-CC720188,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720188.stripped.N4.nii.gz +sub-CC420231,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420231.stripped.N4.nii.gz +ADNI382181,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I382181_018_S_5240.stripped.N4.nii.gz +DLBS0028501_session_1,F,88.36,dlbs_storage/DLBS_bias_corrected/0028501_session_1.stripped.N4.nii.gz +DLBS0028584_session_1,F,51.24,dlbs_storage/DLBS_bias_corrected/0028584_session_1.stripped.N4.nii.gz +ADNI336509,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I336509_135_S_4954.stripped.N4.nii.gz +sub-CC610039,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610039.stripped.N4.nii.gz +fcon1000Cambridge_sub80557,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub80557.stripped.N4.nii.gz +fcon1000Beijing_sub77440,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub77440.stripped.N4.nii.gz +DLBS0028532_session_1,F,34.11,dlbs_storage/DLBS_bias_corrected/0028532_session_1.stripped.N4.nii.gz +DLBS0028505_session_1,M,20.75,dlbs_storage/DLBS_bias_corrected/0028505_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub45604,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45604.stripped.N4.nii.gz +sub-CC610625,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610625.stripped.N4.nii.gz +ADNI10883387,M,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I10883387_033_S_6976.stripped.N4.nii.gz +sub-CC420435,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420435.stripped.N4.nii.gz +fcon1000Milwaukee_sub84314,M,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub84314.stripped.N4.nii.gz +DLBS0028559_session_1,F,25.01,dlbs_storage/DLBS_bias_corrected/0028559_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub27123,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub27123.stripped.N4.nii.gz +fcon1000Beijing_sub32587,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub32587.stripped.N4.nii.gz +DLBS0028343_session_1,F,61.27,dlbs_storage/DLBS_bias_corrected/0028343_session_1.stripped.N4.nii.gz +sub-CC720516,F,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720516.stripped.N4.nii.gz +sub-CC510086,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510086.stripped.N4.nii.gz +fcon1000Cambridge_sub84504,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84504.stripped.N4.nii.gz +fcon1000Beijing_sub19642,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub19642.stripped.N4.nii.gz +ADNI369303,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I369303_130_S_4982.stripped.N4.nii.gz +fcon1000Cleveland_sub17946,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub17946.stripped.N4.nii.gz +sub-CC222555,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222555.stripped.N4.nii.gz +ADNI10972872,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10972872_033_S_10005.stripped.N4.nii.gz +sub-CC412004,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC412004.stripped.N4.nii.gz +DLBS0028517_session_1,M,23.14,dlbs_storage/DLBS_bias_corrected/0028517_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub80163,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80163.stripped.N4.nii.gz +ADNI346548,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I346548_137_S_0994.stripped.N4.nii.gz +sub-CC710664,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710664.stripped.N4.nii.gz +fcon1000Milwaukee_sub36386,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub36386.stripped.N4.nii.gz +fcon1000Cambridge_sub86637,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub86637.stripped.N4.nii.gz +sub-CC420075,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420075.stripped.N4.nii.gz +fcon1000Beijing_sub20246,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20246.stripped.N4.nii.gz +fcon1000Beijing_sub85030,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85030.stripped.N4.nii.gz +sub-CC320342,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320342.stripped.N4.nii.gz +ADNI970943,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I970943_153_S_6237.stripped.N4.nii.gz +sub-CC320759,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320759.stripped.N4.nii.gz +ADNI10939738,F,62.5,adni_storage/ADNI_nii_gz_bias_corrected/I10939738_301_S_10230.stripped.N4.nii.gz +sub-CC420091,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420091.stripped.N4.nii.gz +DLBS0028611_session_1,F,46.79,dlbs_storage/DLBS_bias_corrected/0028611_session_1.stripped.N4.nii.gz +sub-CC720180,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720180.stripped.N4.nii.gz +sub-CC610496,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610496.stripped.N4.nii.gz +sub-CC410119,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410119.stripped.N4.nii.gz +fcon1000Beijing_sub92544,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92544.stripped.N4.nii.gz +sub-CC610058,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610058.stripped.N4.nii.gz +fcon1000Bangor_sub73082,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub73082.stripped.N4.nii.gz +sub-CC220635,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220635.stripped.N4.nii.gz +sub-CC120987,F,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120987.stripped.N4.nii.gz +sub-CC210172,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210172.stripped.N4.nii.gz +fcon1000Milwaukee_sub56108,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56108.stripped.N4.nii.gz +DLBS0028330_session_1,F,35.36,dlbs_storage/DLBS_bias_corrected/0028330_session_1.stripped.N4.nii.gz +ADNI1002815,F,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I1002815_023_S_6374.stripped.N4.nii.gz +sub-CC420137,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420137.stripped.N4.nii.gz +DLBS0028504_session_1,F,73.07,dlbs_storage/DLBS_bias_corrected/0028504_session_1.stripped.N4.nii.gz +sub-CC620114,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620114.stripped.N4.nii.gz +DLBS0028591_session_1,M,86.25,dlbs_storage/DLBS_bias_corrected/0028591_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub68050,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub68050.stripped.N4.nii.gz +DLBS0028395_session_1,M,83.87,dlbs_storage/DLBS_bias_corrected/0028395_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub13959,M,31.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub13959.stripped.N4.nii.gz +fcon1000Cambridge_sub34741,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub34741.stripped.N4.nii.gz +DLBS0028616_session_1,F,61.54,dlbs_storage/DLBS_bias_corrected/0028616_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub46541,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46541.stripped.N4.nii.gz +sub-CC120049,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120049.stripped.N4.nii.gz +sub-CC610046,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610046.stripped.N4.nii.gz +DLBS0028418_session_1,M,70.49,dlbs_storage/DLBS_bias_corrected/0028418_session_1.stripped.N4.nii.gz +sub-CC721618,F,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721618.stripped.N4.nii.gz +fcon1000Beijing_sub92490,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92490.stripped.N4.nii.gz +fcon1000Leiden_sub08518,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub08518.stripped.N4.nii.gz +DLBS0028416_session_1,M,31.58,dlbs_storage/DLBS_bias_corrected/0028416_session_1.stripped.N4.nii.gz +ADNI10883427,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I10883427_016_S_10138.stripped.N4.nii.gz +sub-CC121795,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121795.stripped.N4.nii.gz +DLBS0028431_session_1,M,47.63,dlbs_storage/DLBS_bias_corrected/0028431_session_1.stripped.N4.nii.gz +ADNI1400867,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1400867_019_S_6635.stripped.N4.nii.gz +DLBS0028556_session_1,F,36.97,dlbs_storage/DLBS_bias_corrected/0028556_session_1.stripped.N4.nii.gz +ADNI67598,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I67598_033_S_0733.stripped.N4.nii.gz +sub-CC321137,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321137.stripped.N4.nii.gz +fcon1000Cambridge_sub53107,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53107.stripped.N4.nii.gz +fcon1000Beijing_sub98353,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub98353.stripped.N4.nii.gz +sub-CC710131,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710131.stripped.N4.nii.gz +DLBS0028564_session_1,F,40.21,dlbs_storage/DLBS_bias_corrected/0028564_session_1.stripped.N4.nii.gz +ADNI86564,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I86564_016_S_1121.stripped.N4.nii.gz +DLBS0028461_session_1,F,53.95,dlbs_storage/DLBS_bias_corrected/0028461_session_1.stripped.N4.nii.gz +ADNI70746,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I70746_016_S_0769.stripped.N4.nii.gz +sub-CC320059,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320059.stripped.N4.nii.gz +ADNI1433167,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1433167_024_S_6033.stripped.N4.nii.gz +ADNI487386,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I487386_128_S_4599.stripped.N4.nii.gz +DLBS0028511_session_1,F,23.55,dlbs_storage/DLBS_bias_corrected/0028511_session_1.stripped.N4.nii.gz +sub-CC610575,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610575.stripped.N4.nii.gz +sub-CC610227,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610227.stripped.N4.nii.gz +ADNI1031289,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1031289_070_S_6542.stripped.N4.nii.gz +fcon1000NewYork_sub63915,M,44.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub63915.stripped.N4.nii.gz +sub-CC220828,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220828.stripped.N4.nii.gz +DLBS0028551_session_1,M,24.66,dlbs_storage/DLBS_bias_corrected/0028551_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub08947,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08947.stripped.N4.nii.gz +sub-CC610050,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610050.stripped.N4.nii.gz +DLBS0028433_session_1,F,80.5,dlbs_storage/DLBS_bias_corrected/0028433_session_1.stripped.N4.nii.gz +ADNI1282405,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I1282405_019_S_6635.stripped.N4.nii.gz +sub-CC120816,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120816.stripped.N4.nii.gz +sub-CC120276,F,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120276.stripped.N4.nii.gz +ADNI65945,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I65945_067_S_1185.stripped.N4.nii.gz +fcon1000Beijing_sub55301,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55301.stripped.N4.nii.gz +ADNI839474,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I839474_141_S_6008.stripped.N4.nii.gz +fcon1000Cambridge_sub73477,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73477.stripped.N4.nii.gz +fcon1000Beijing_sub12220,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub12220.stripped.N4.nii.gz +sub-CC210422,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210422.stripped.N4.nii.gz +ADNI10435128,F,55.5,adni_storage/ADNI_nii_gz_bias_corrected/I10435128_035_S_10093.stripped.N4.nii.gz +fcon1000Cambridge_sub26348,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub26348.stripped.N4.nii.gz +fcon1000Beijing_sub10277,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10277.stripped.N4.nii.gz +DLBS0028329_session_1,M,30.74,dlbs_storage/DLBS_bias_corrected/0028329_session_1.stripped.N4.nii.gz +ADNI23822,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I23822_016_S_0769.stripped.N4.nii.gz +ADNI1184047,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1184047_022_S_6013.stripped.N4.nii.gz +sub-CC220567,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220567.stripped.N4.nii.gz +sub-CC120309,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120309.stripped.N4.nii.gz +fcon1000Cambridge_sub43358,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub43358.stripped.N4.nii.gz +fcon1000Cleveland_sub46739,F,60.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub46739.stripped.N4.nii.gz +sub-CC212153,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC212153.stripped.N4.nii.gz +ADNI1017005,M,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017005_116_S_6428.stripped.N4.nii.gz +fcon1000Baltimore_sub17017,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub17017.stripped.N4.nii.gz +DLBS0028449_session_1,F,28.96,dlbs_storage/DLBS_bias_corrected/0028449_session_1.stripped.N4.nii.gz +ADNI1536458,F,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1536458_016_S_7039.stripped.N4.nii.gz +sub-CC320297,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320297.stripped.N4.nii.gz +ADNI1156695,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I1156695_023_S_6723.stripped.N4.nii.gz +ADNI415207,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I415207_019_S_5019.stripped.N4.nii.gz +fcon1000Beijing_sub89238,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89238.stripped.N4.nii.gz +ADNI10461419,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I10461419_011_S_10044.stripped.N4.nii.gz +sub-CC721292,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721292.stripped.N4.nii.gz +ADNI495305,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I495305_128_S_4607.stripped.N4.nii.gz +sub-CC220323,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220323.stripped.N4.nii.gz +ADNI346547,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I346547_137_S_0994.stripped.N4.nii.gz +fcon1000Cambridge_sub81289,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81289.stripped.N4.nii.gz +ADNI10460278,F,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I10460278_019_S_10106.stripped.N4.nii.gz +fcon1000AnnArbor_sub45660,M,16.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub45660.stripped.N4.nii.gz +sub-CC721114,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721114.stripped.N4.nii.gz +fcon1000Beijing_sub95755,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub95755.stripped.N4.nii.gz +sub-CC221980,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221980.stripped.N4.nii.gz +ADNI461110,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I461110_137_S_0994.stripped.N4.nii.gz +sub-CC620259,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620259.stripped.N4.nii.gz +ADNI1070046,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1070046_006_S_6610.stripped.N4.nii.gz +ADNI37605,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37605_051_S_1072.stripped.N4.nii.gz +fcon1000Cleveland_sub82518,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub82518.stripped.N4.nii.gz +ADNI1373547,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I1373547_041_S_6801.stripped.N4.nii.gz +ADNI1181047,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1181047_116_S_6428.stripped.N4.nii.gz +fcon1000Leiden_sub97690,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub97690.stripped.N4.nii.gz +fcon1000Beijing_sub58332,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58332.stripped.N4.nii.gz +sub-CC120462,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120462.stripped.N4.nii.gz +fcon1000Milwaukee_sub93170,F,65.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub93170.stripped.N4.nii.gz +fcon1000Berlin_sub47791,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub47791.stripped.N4.nii.gz +DLBS0028387_session_1,F,54.68,dlbs_storage/DLBS_bias_corrected/0028387_session_1.stripped.N4.nii.gz +sub-CC720400,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720400.stripped.N4.nii.gz +DLBS0028411_session_1,F,83.09,dlbs_storage/DLBS_bias_corrected/0028411_session_1.stripped.N4.nii.gz +ADNI77627,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I77627_020_S_1288.stripped.N4.nii.gz +ADNI487400,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I487400_128_S_4599.stripped.N4.nii.gz +fcon1000NewYork_sub47633,F,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub47633.stripped.N4.nii.gz +sub-CC410251,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410251.stripped.N4.nii.gz +sub-CC410129,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410129.stripped.N4.nii.gz +sub-CC720407,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720407.stripped.N4.nii.gz +DLBS0028603_session_1,M,35.96,dlbs_storage/DLBS_bias_corrected/0028603_session_1.stripped.N4.nii.gz +sub-CC410289,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410289.stripped.N4.nii.gz +DLBS0028519_session_1,M,64.79,dlbs_storage/DLBS_bias_corrected/0028519_session_1.stripped.N4.nii.gz +ADNI1331165,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1331165_116_S_6550.stripped.N4.nii.gz +fcon1000AnnArbor_sub59573,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub59573.stripped.N4.nii.gz +ADNI1028373,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1028373_109_S_6406.stripped.N4.nii.gz +sub-CC320687,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320687.stripped.N4.nii.gz +fcon1000Cambridge_sub90681,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90681.stripped.N4.nii.gz +ADNI369298,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I369298_130_S_4982.stripped.N4.nii.gz +fcon1000NewYork_sub33062,F,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub33062.stripped.N4.nii.gz +fcon1000AnnArbor_sub47191,M,27.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub47191.stripped.N4.nii.gz +ADNI47972,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I47972_067_S_1253.stripped.N4.nii.gz +ADNI346266,F,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I346266_036_S_4894.stripped.N4.nii.gz +sub-CC420060,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420060.stripped.N4.nii.gz +fcon1000Beijing_sub00440,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub00440.stripped.N4.nii.gz +sub-CC520002,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520002.stripped.N4.nii.gz +sub-CC710858,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710858.stripped.N4.nii.gz +ADNI1002374,M,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1002374_014_S_6366.stripped.N4.nii.gz +fcon1000Atlanta_sub86323,F,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub86323.stripped.N4.nii.gz +fcon1000Baltimore_sub30072,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub30072.stripped.N4.nii.gz +fcon1000Beijing_sub01018,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub01018.stripped.N4.nii.gz +sub-CC120470,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120470.stripped.N4.nii.gz +fcon1000Cleveland_sub75398,F,43.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub75398.stripped.N4.nii.gz +sub-CC321107,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321107.stripped.N4.nii.gz +sub-CC520253,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520253.stripped.N4.nii.gz +DLBS0028509_session_1,F,51.39,dlbs_storage/DLBS_bias_corrected/0028509_session_1.stripped.N4.nii.gz +ADNI1070047,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1070047_006_S_6610.stripped.N4.nii.gz +ADNI10654619,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I10654619_100_S_10035.stripped.N4.nii.gz +fcon1000Beijing_sub37602,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub37602.stripped.N4.nii.gz +DLBS0028409_session_1,M,70.68,dlbs_storage/DLBS_bias_corrected/0028409_session_1.stripped.N4.nii.gz +ADNI346866,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I346866_128_S_4607.stripped.N4.nii.gz +fcon1000AnnArbor_sub39923,M,70.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub39923.stripped.N4.nii.gz +sub-CC420324,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420324.stripped.N4.nii.gz +fcon1000Cleveland_sub92232,F,45.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub92232.stripped.N4.nii.gz +fcon1000Baltimore_sub90658,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub90658.stripped.N4.nii.gz +DLBS0028634_session_1,F,38.33,dlbs_storage/DLBS_bias_corrected/0028634_session_1.stripped.N4.nii.gz +ADNI1536326,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I1536326_052_S_7037.stripped.N4.nii.gz +sub-CC510393,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510393.stripped.N4.nii.gz +DLBS0028639_session_1,F,74.96,dlbs_storage/DLBS_bias_corrected/0028639_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub62843,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62843.stripped.N4.nii.gz +fcon1000Leiden_sub01553,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub01553.stripped.N4.nii.gz +fcon1000Leiden_sub72247,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub72247.stripped.N4.nii.gz +DLBS0028429_session_1,F,42.63,dlbs_storage/DLBS_bias_corrected/0028429_session_1.stripped.N4.nii.gz +fcon1000Atlanta_sub72096,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub72096.stripped.N4.nii.gz +fcon1000Cambridge_sub89894,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89894.stripped.N4.nii.gz +fcon1000Cambridge_sub69287,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69287.stripped.N4.nii.gz +fcon1000Beijing_sub88947,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub88947.stripped.N4.nii.gz +sub-CC320429,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320429.stripped.N4.nii.gz +fcon1000Cambridge_sub59434,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub59434.stripped.N4.nii.gz +fcon1000Beijing_sub55541,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55541.stripped.N4.nii.gz +fcon1000Cambridge_sub42146,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub42146.stripped.N4.nii.gz +sub-CC320107,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320107.stripped.N4.nii.gz +ADNI10666922,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10666922_100_S_10091.stripped.N4.nii.gz +DLBS0028588_session_1,M,48.53,dlbs_storage/DLBS_bias_corrected/0028588_session_1.stripped.N4.nii.gz +sub-CC221324,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221324.stripped.N4.nii.gz +DLBS0028361_session_1,M,55.56,dlbs_storage/DLBS_bias_corrected/0028361_session_1.stripped.N4.nii.gz +ADNI10976428,F,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I10976428_052_S_10275.stripped.N4.nii.gz +sub-CC310214,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310214.stripped.N4.nii.gz +DLBS0028360_session_1,F,54.03,dlbs_storage/DLBS_bias_corrected/0028360_session_1.stripped.N4.nii.gz +sub-CC210519,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210519.stripped.N4.nii.gz +fcon1000Cambridge_sub87846,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub87846.stripped.N4.nii.gz +ADNI1514753,F,50.5,adni_storage/ADNI_nii_gz_bias_corrected/I1514753_037_S_7011.stripped.N4.nii.gz +ADNI10889397,M,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I10889397_019_S_10152.stripped.N4.nii.gz +DLBS0028495_session_1,F,40.56,dlbs_storage/DLBS_bias_corrected/0028495_session_1.stripped.N4.nii.gz +sub-CC620284,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620284.stripped.N4.nii.gz +sub-CC210617,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210617.stripped.N4.nii.gz +sub-CC420462,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420462.stripped.N4.nii.gz +ADNI1151022,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I1151022_016_S_6708.stripped.N4.nii.gz +sub-CC420322,M,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420322.stripped.N4.nii.gz +ADNI36696,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I36696_016_S_1121.stripped.N4.nii.gz +fcon1000AnnArbor_sub98007,F,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub98007.stripped.N4.nii.gz +fcon1000Beijing_sub04191,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub04191.stripped.N4.nii.gz +ADNI388757,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I388757_116_S_4195.stripped.N4.nii.gz +sub-CC610576,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610576.stripped.N4.nii.gz +sub-CC720358,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720358.stripped.N4.nii.gz +sub-CC420493,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420493.stripped.N4.nii.gz +fcon1000Cambridge_sub81562,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81562.stripped.N4.nii.gz +DLBS0028408_session_1,F,20.7,dlbs_storage/DLBS_bias_corrected/0028408_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub39335,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub39335.stripped.N4.nii.gz +ADNI907712,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I907712_014_S_6076.stripped.N4.nii.gz +fcon1000Beijing_sub56703,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56703.stripped.N4.nii.gz +ADNI313318,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I313318_128_S_4607.stripped.N4.nii.gz +sub-CC721888,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721888.stripped.N4.nii.gz +ADNI324988,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I324988_023_S_4448.stripped.N4.nii.gz +fcon1000Beijing_sub83624,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83624.stripped.N4.nii.gz +fcon1000Beijing_sub19974,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub19974.stripped.N4.nii.gz +ADNI228879,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I228879_031_S_4024.stripped.N4.nii.gz +ADNI376810,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I376810_067_S_5205.stripped.N4.nii.gz +fcon1000Bangor_sub63767,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub63767.stripped.N4.nii.gz +sub-CC320448,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320448.stripped.N4.nii.gz +ADNI341795,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I341795_130_S_4982.stripped.N4.nii.gz +ADNI140028,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I140028_020_S_1288.stripped.N4.nii.gz +sub-CC120795,M,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120795.stripped.N4.nii.gz +ADNI382180,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I382180_018_S_5240.stripped.N4.nii.gz +fcon1000Beijing_sub69518,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub69518.stripped.N4.nii.gz +sub-CC420720,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420720.stripped.N4.nii.gz +ADNI1005735,M,55.3,adni_storage/ADNI_nii_gz_bias_corrected/I1005735_003_S_6264.stripped.N4.nii.gz +fcon1000Cambridge_sub02953,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub02953.stripped.N4.nii.gz +sub-CC610631,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610631.stripped.N4.nii.gz +fcon1000Cambridge_sub17584,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17584.stripped.N4.nii.gz +sub-CC710591,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710591.stripped.N4.nii.gz +fcon1000AnnArbor_sub33437,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub33437.stripped.N4.nii.gz +sub-CC711035,F,88.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711035.stripped.N4.nii.gz +fcon1000Milwaukee_sub50771,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub50771.stripped.N4.nii.gz +fcon1000Cleveland_sub64706,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub64706.stripped.N4.nii.gz +ADNI1062510,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1062510_019_S_6585.stripped.N4.nii.gz +sub-CC320218,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320218.stripped.N4.nii.gz +sub-CC121144,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121144.stripped.N4.nii.gz +sub-CC320269,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320269.stripped.N4.nii.gz +fcon1000Beijing_sub50972,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50972.stripped.N4.nii.gz +DLBS0028593_session_1,F,62.06,dlbs_storage/DLBS_bias_corrected/0028593_session_1.stripped.N4.nii.gz +ADNI1532649,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1532649_067_S_7029.stripped.N4.nii.gz +fcon1000NewYork_sub08595,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub08595.stripped.N4.nii.gz +fcon1000Newark_sub71042,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub71042.stripped.N4.nii.gz +ADNI37256,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I37256_067_S_1185.stripped.N4.nii.gz +fcon1000Beijing_sub22890,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22890.stripped.N4.nii.gz +fcon1000Beijing_sub16091,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub16091.stripped.N4.nii.gz +fcon1000NewYork_sub51309,F,27.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub51309.stripped.N4.nii.gz +fcon1000NewYork_sub09539,F,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub09539.stripped.N4.nii.gz +sub-CC321053,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321053.stripped.N4.nii.gz +DLBS0028481_session_1,F,41.87,dlbs_storage/DLBS_bias_corrected/0028481_session_1.stripped.N4.nii.gz +DLBS0028597_session_1,M,52.52,dlbs_storage/DLBS_bias_corrected/0028597_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub61908,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub61908.stripped.N4.nii.gz +sub-CC410325,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410325.stripped.N4.nii.gz +DLBS0028347_session_1,F,85.66,dlbs_storage/DLBS_bias_corrected/0028347_session_1.stripped.N4.nii.gz +ADNI10245972,M,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10245972_033_S_6976.stripped.N4.nii.gz +sub-CC221033,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221033.stripped.N4.nii.gz +ADNI1221674,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1221674_013_S_6780.stripped.N4.nii.gz +DLBS0028635_session_1,F,23.5,dlbs_storage/DLBS_bias_corrected/0028635_session_1.stripped.N4.nii.gz +ADNI345563,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345563_019_S_5019.stripped.N4.nii.gz +ADNI98972,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I98972_016_S_0769.stripped.N4.nii.gz +ADNI254248,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I254248_116_S_4195.stripped.N4.nii.gz +ADNI1154285,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1154285_011_S_6714.stripped.N4.nii.gz +fcon1000Beijing_sub30616,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30616.stripped.N4.nii.gz +DLBS0028632_session_1,F,59.96,dlbs_storage/DLBS_bias_corrected/0028632_session_1.stripped.N4.nii.gz +ADNI10461435,F,56.1,adni_storage/ADNI_nii_gz_bias_corrected/I10461435_022_S_10066.stripped.N4.nii.gz +DLBS0028377_session_1,F,64.37,dlbs_storage/DLBS_bias_corrected/0028377_session_1.stripped.N4.nii.gz +ADNI1433667,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I1433667_067_S_6912.stripped.N4.nii.gz +ADNI1669252,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1669252_035_S_7121.stripped.N4.nii.gz +fcon1000Baltimore_sub52358,F,40.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub52358.stripped.N4.nii.gz +sub-CC610071,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610071.stripped.N4.nii.gz +sub-CC722536,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722536.stripped.N4.nii.gz +fcon1000NewYork_sub14299,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub14299.stripped.N4.nii.gz +fcon1000Atlanta_sub81596,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub81596.stripped.N4.nii.gz +fcon1000Beijing_sub28965,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28965.stripped.N4.nii.gz +sub-CC710486,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710486.stripped.N4.nii.gz +fcon1000Cambridge_sub72068,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub72068.stripped.N4.nii.gz +ADNI1143230,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1143230_023_S_6702.stripped.N4.nii.gz +DLBS0028573_session_1,M,44.29,dlbs_storage/DLBS_bias_corrected/0028573_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub43409,M,71.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub43409.stripped.N4.nii.gz +fcon1000Cleveland_sub97844,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub97844.stripped.N4.nii.gz +sub-CC620572,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620572.stripped.N4.nii.gz +ADNI10954719,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10954719_052_S_10168.stripped.N4.nii.gz +ADNI10989649,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I10989649_019_S_10263.stripped.N4.nii.gz +ADNI308620,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I308620_014_S_4039.stripped.N4.nii.gz +sub-CC721704,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721704.stripped.N4.nii.gz +sub-CC510568,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510568.stripped.N4.nii.gz +fcon1000Beijing_sub94536,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub94536.stripped.N4.nii.gz +ADNI10392424,F,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I10392424_035_S_7043.stripped.N4.nii.gz +fcon1000Leiden_sub64642,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub64642.stripped.N4.nii.gz +fcon1000AnnArbor_sub07921,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub07921.stripped.N4.nii.gz +DLBS0028557_session_1,F,75.89,dlbs_storage/DLBS_bias_corrected/0028557_session_1.stripped.N4.nii.gz +DLBS0028443_session_1,M,36.18,dlbs_storage/DLBS_bias_corrected/0028443_session_1.stripped.N4.nii.gz +sub-CC721418,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721418.stripped.N4.nii.gz +sub-CC221740,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221740.stripped.N4.nii.gz +fcon1000Bangor_sub14388,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub14388.stripped.N4.nii.gz +ADNI73491,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I73491_067_S_1253.stripped.N4.nii.gz +sub-CC120218,F,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120218.stripped.N4.nii.gz +fcon1000Beijing_sub28792,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28792.stripped.N4.nii.gz +fcon1000Beijing_sub17159,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17159.stripped.N4.nii.gz +ADNI1261605,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1261605_016_S_6802.stripped.N4.nii.gz +fcon1000Milwaukee_sub99479,F,65.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub99479.stripped.N4.nii.gz +sub-CC320089,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320089.stripped.N4.nii.gz +fcon1000AnnArbor_sub53959,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub53959.stripped.N4.nii.gz +fcon1000Cambridge_sub25099,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25099.stripped.N4.nii.gz +fcon1000Cleveland_sub65858,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub65858.stripped.N4.nii.gz +fcon1000Cambridge_sub10268,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub10268.stripped.N4.nii.gz +fcon1000Beijing_sub22661,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22661.stripped.N4.nii.gz +sub-CC620413,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620413.stripped.N4.nii.gz +ADNI1634180,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1634180_013_S_7103.stripped.N4.nii.gz +ADNI44673,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I44673_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub48563,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48563.stripped.N4.nii.gz +sub-CC410387,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410387.stripped.N4.nii.gz +fcon1000Beijing_sub89941,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89941.stripped.N4.nii.gz +DLBS0028630_session_1,M,38.37,dlbs_storage/DLBS_bias_corrected/0028630_session_1.stripped.N4.nii.gz +sub-CC620821,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620821.stripped.N4.nii.gz +ADNI10914005,F,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I10914005_052_S_10185.stripped.N4.nii.gz +ADNI1494601,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1494601_037_S_6995.stripped.N4.nii.gz +fcon1000Cambridge_sub53296,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53296.stripped.N4.nii.gz +ADNI399834,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I399834_137_S_0994.stripped.N4.nii.gz +sub-CC420402,M,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420402.stripped.N4.nii.gz +ADNI73381,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I73381_051_S_1072.stripped.N4.nii.gz +fcon1000NewYork_sub10011,F,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub10011.stripped.N4.nii.gz +fcon1000Atlanta_sub60499,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub60499.stripped.N4.nii.gz +ADNI1584200,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I1584200_035_S_7076.stripped.N4.nii.gz +sub-CC720646,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720646.stripped.N4.nii.gz +sub-CC221775,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221775.stripped.N4.nii.gz +ADNI31766,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I31766_023_S_1104.stripped.N4.nii.gz +ADNI291512,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I291512_116_S_4195.stripped.N4.nii.gz +fcon1000Cambridge_sub11388,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub11388.stripped.N4.nii.gz +DLBS0028437_session_1,F,64.01,dlbs_storage/DLBS_bias_corrected/0028437_session_1.stripped.N4.nii.gz +DLBS0028533_session_1,F,46.77,dlbs_storage/DLBS_bias_corrected/0028533_session_1.stripped.N4.nii.gz +ADNI974673,M,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I974673_023_S_6270.stripped.N4.nii.gz +fcon1000Cambridge_sub15258,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15258.stripped.N4.nii.gz +ADNI367181,M,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I367181_135_S_4954.stripped.N4.nii.gz +ADNI879215,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I879215_114_S_6039.stripped.N4.nii.gz +fcon1000NewYork_sub04856,M,9.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub04856.stripped.N4.nii.gz +ADNI1604933,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1604933_067_S_7094.stripped.N4.nii.gz +fcon1000Cambridge_sub62732,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62732.stripped.N4.nii.gz +sub-CC222652,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222652.stripped.N4.nii.gz +sub-CC620405,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620405.stripped.N4.nii.gz +sub-CC520197,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520197.stripped.N4.nii.gz +fcon1000Cambridge_sub66351,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub66351.stripped.N4.nii.gz +fcon1000Beijing_sub36942,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub36942.stripped.N4.nii.gz +sub-CC520868,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520868.stripped.N4.nii.gz +fcon1000AnnArbor_sub28433,M,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub28433.stripped.N4.nii.gz +ADNI394453,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I394453_135_S_4954.stripped.N4.nii.gz +ADNI345558,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345558_019_S_5019.stripped.N4.nii.gz +ADNI114057,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I114057_016_S_1121.stripped.N4.nii.gz +fcon1000Bangor_sub77520,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub77520.stripped.N4.nii.gz +ADNI389098,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I389098_067_S_5205.stripped.N4.nii.gz +fcon1000Cambridge_sub27796,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27796.stripped.N4.nii.gz +fcon1000Cambridge_sub09633,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09633.stripped.N4.nii.gz +ADNI99328,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I99328_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub62438,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62438.stripped.N4.nii.gz +DLBS0028548_session_1,F,40.83,dlbs_storage/DLBS_bias_corrected/0028548_session_1.stripped.N4.nii.gz +sub-CC420348,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420348.stripped.N4.nii.gz +fcon1000NewYork_sub18638,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub18638.stripped.N4.nii.gz +ADNI379689,M,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I379689_131_S_5138.stripped.N4.nii.gz +ADNI376818,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I376818_067_S_5205.stripped.N4.nii.gz +ADNI10443906,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I10443906_389_S_10076.stripped.N4.nii.gz +fcon1000Cambridge_sub41814,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41814.stripped.N4.nii.gz +sub-CC620451,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620451.stripped.N4.nii.gz +ADNI705596,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I705596_128_S_4607.stripped.N4.nii.gz +sub-CC320850,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320850.stripped.N4.nii.gz +sub-CC321428,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321428.stripped.N4.nii.gz +sub-CC420071,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420071.stripped.N4.nii.gz +ADNI335137,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I335137_073_S_4552.stripped.N4.nii.gz +ADNI10932456,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I10932456_035_S_7121.stripped.N4.nii.gz +fcon1000Milwaukee_sub73547,F,55.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub73547.stripped.N4.nii.gz +ADNI1356513,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I1356513_137_S_6883.stripped.N4.nii.gz +ADNI1228298,F,61.9,adni_storage/ADNI_nii_gz_bias_corrected/I1228298_131_S_6805.stripped.N4.nii.gz +fcon1000Cambridge_sub92393,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92393.stripped.N4.nii.gz +fcon1000Beijing_sub18960,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18960.stripped.N4.nii.gz +fcon1000NewYork_sub14465,M,47.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub14465.stripped.N4.nii.gz +DLBS0028577_session_1,M,65.52,dlbs_storage/DLBS_bias_corrected/0028577_session_1.stripped.N4.nii.gz +sub-CC310256,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310256.stripped.N4.nii.gz +fcon1000Beijing_sub59347,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub59347.stripped.N4.nii.gz +DLBS0028500_session_1,M,32.85,dlbs_storage/DLBS_bias_corrected/0028500_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub69696,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub69696.stripped.N4.nii.gz +fcon1000Milwaukee_sub23607,F,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub23607.stripped.N4.nii.gz +ADNI313538,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I313538_116_S_4625.stripped.N4.nii.gz +fcon1000NewYork_sub03951,M,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub03951.stripped.N4.nii.gz +sub-CC310407,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310407.stripped.N4.nii.gz +ADNI1260254,M,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1260254_006_S_6610.stripped.N4.nii.gz +ADNI114262,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I114262_133_S_0913.stripped.N4.nii.gz +ADNI365441,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I365441_073_S_5023.stripped.N4.nii.gz +DLBS0028628_session_1,M,51.81,dlbs_storage/DLBS_bias_corrected/0028628_session_1.stripped.N4.nii.gz +ADNI705606,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I705606_128_S_4607.stripped.N4.nii.gz +fcon1000Bangor_sub61418,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub61418.stripped.N4.nii.gz +DLBS0028623_session_1,F,30.31,dlbs_storage/DLBS_bias_corrected/0028623_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub47278,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47278.stripped.N4.nii.gz +sub-CC110056,F,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110056.stripped.N4.nii.gz +fcon1000Cambridge_sub47231,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47231.stripped.N4.nii.gz +sub-CC510648,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510648.stripped.N4.nii.gz +sub-CC210051,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210051.stripped.N4.nii.gz +fcon1000Berlin_sub40143,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub40143.stripped.N4.nii.gz +ADNI367565,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I367565_131_S_5138.stripped.N4.nii.gz +DLBS0028439_session_1,M,25.38,dlbs_storage/DLBS_bias_corrected/0028439_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub55736,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55736.stripped.N4.nii.gz +ADNI10908346,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I10908346_073_S_6925.stripped.N4.nii.gz +DLBS0028615_session_1,F,80.95,dlbs_storage/DLBS_bias_corrected/0028615_session_1.stripped.N4.nii.gz +DLBS0028326_session_1,M,66.42,dlbs_storage/DLBS_bias_corrected/0028326_session_1.stripped.N4.nii.gz +ADNI31765,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I31765_023_S_1104.stripped.N4.nii.gz +DLBS0028553_session_1,M,30.76,dlbs_storage/DLBS_bias_corrected/0028553_session_1.stripped.N4.nii.gz +ADNI1423364,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1423364_003_S_6915.stripped.N4.nii.gz +DLBS0028470_session_1,F,43.19,dlbs_storage/DLBS_bias_corrected/0028470_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub73168,M,78.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub73168.stripped.N4.nii.gz +sub-CC310331,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310331.stripped.N4.nii.gz +ADNI10952478,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I10952478_022_S_10186.stripped.N4.nii.gz +ADNI1032530,F,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I1032530_116_S_6550.stripped.N4.nii.gz +ADNI10939739,F,62.5,adni_storage/ADNI_nii_gz_bias_corrected/I10939739_301_S_10230.stripped.N4.nii.gz +fcon1000Cambridge_sub88445,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88445.stripped.N4.nii.gz +DLBS0028582_session_1,M,48.45,dlbs_storage/DLBS_bias_corrected/0028582_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub09397,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09397.stripped.N4.nii.gz +sub-CC222264,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222264.stripped.N4.nii.gz +fcon1000Leiden_sub19281,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub19281.stripped.N4.nii.gz +ADNI1017357,F,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017357_024_S_6033.stripped.N4.nii.gz +fcon1000Baltimore_sub86414,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub86414.stripped.N4.nii.gz +fcon1000Beijing_sub72678,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub72678.stripped.N4.nii.gz +fcon1000Berlin_sub06204,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub06204.stripped.N4.nii.gz +ADNI335031,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I335031_116_S_4195.stripped.N4.nii.gz +sub-CC510548,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510548.stripped.N4.nii.gz +sub-CC220394,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220394.stripped.N4.nii.gz +DLBS0028523_session_1,M,49.68,dlbs_storage/DLBS_bias_corrected/0028523_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub35262,F,28.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub35262.stripped.N4.nii.gz +sub-CC520584,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520584.stripped.N4.nii.gz +fcon1000Beijing_sub43290,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub43290.stripped.N4.nii.gz +fcon1000Cambridge_sub39053,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39053.stripped.N4.nii.gz +DLBS0028388_session_1,M,82.93,dlbs_storage/DLBS_bias_corrected/0028388_session_1.stripped.N4.nii.gz +sub-CC320651,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320651.stripped.N4.nii.gz +fcon1000Beijing_sub95575,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub95575.stripped.N4.nii.gz +fcon1000Cambridge_sub84256,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84256.stripped.N4.nii.gz +sub-CC520377,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520377.stripped.N4.nii.gz +fcon1000NewYork_sub30623,F,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30623.stripped.N4.nii.gz +fcon1000Beijing_sub80551,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80551.stripped.N4.nii.gz +sub-CC510043,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510043.stripped.N4.nii.gz +sub-CC720238,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720238.stripped.N4.nii.gz +fcon1000Baltimore_sub85922,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub85922.stripped.N4.nii.gz +fcon1000Munchen_sub50162,M,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub50162.stripped.N4.nii.gz +DLBS0028518_session_1,F,71.09,dlbs_storage/DLBS_bias_corrected/0028518_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub24757,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub24757.stripped.N4.nii.gz +fcon1000Beijing_sub46259,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46259.stripped.N4.nii.gz +sub-CC420589,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420589.stripped.N4.nii.gz +ADNI37607,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37607_051_S_1072.stripped.N4.nii.gz +fcon1000NewYork_sub44979,F,15.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44979.stripped.N4.nii.gz +sub-CC620314,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620314.stripped.N4.nii.gz +fcon1000Cambridge_sub55660,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55660.stripped.N4.nii.gz +sub-CC320359,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320359.stripped.N4.nii.gz +sub-CC320608,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320608.stripped.N4.nii.gz +DLBS0028595_session_1,F,87.68,dlbs_storage/DLBS_bias_corrected/0028595_session_1.stripped.N4.nii.gz +sub-CC620193,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620193.stripped.N4.nii.gz +fcon1000Cambridge_sub51671,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51671.stripped.N4.nii.gz +sub-CC721374,M,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721374.stripped.N4.nii.gz +fcon1000Cambridge_sub81524,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81524.stripped.N4.nii.gz +sub-CC221040,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221040.stripped.N4.nii.gz +sub-CC310361,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310361.stripped.N4.nii.gz +fcon1000Cambridge_sub45344,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45344.stripped.N4.nii.gz +ADNI1484664,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1484664_067_S_6525.stripped.N4.nii.gz +DLBS0028334_session_1,F,55.26,dlbs_storage/DLBS_bias_corrected/0028334_session_1.stripped.N4.nii.gz +ADNI10951691,F,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I10951691_014_S_10236.stripped.N4.nii.gz +fcon1000Munchen_sub74607,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub74607.stripped.N4.nii.gz +fcon1000Milwaukee_sub16666,F,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub16666.stripped.N4.nii.gz +ADNI1501367,F,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I1501367_035_S_7004.stripped.N4.nii.gz +fcon1000Cleveland_sub28596,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub28596.stripped.N4.nii.gz +DLBS0028466_session_1,M,74.5,dlbs_storage/DLBS_bias_corrected/0028466_session_1.stripped.N4.nii.gz +ADNI60862,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I60862_133_S_0913.stripped.N4.nii.gz +sub-CC510284,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510284.stripped.N4.nii.gz +sub-CC620526,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620526.stripped.N4.nii.gz +fcon1000Cambridge_sub64985,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub64985.stripped.N4.nii.gz +fcon1000NewYork_sub37864,F,41.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub37864.stripped.N4.nii.gz +sub-CC620935,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620935.stripped.N4.nii.gz +sub-CC610285,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610285.stripped.N4.nii.gz +ADNI291506,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I291506_116_S_4195.stripped.N4.nii.gz +sub-CC320109,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320109.stripped.N4.nii.gz +sub-CC620359,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620359.stripped.N4.nii.gz +ADNI1246020,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I1246020_003_S_6479.stripped.N4.nii.gz +sub-CC420392,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420392.stripped.N4.nii.gz +sub-CC222304,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222304.stripped.N4.nii.gz +ADNI339295,M,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I339295_073_S_4552.stripped.N4.nii.gz +fcon1000Atlanta_sub91049,F,48.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub91049.stripped.N4.nii.gz +DLBS0028637_session_1,F,44.54,dlbs_storage/DLBS_bias_corrected/0028637_session_1.stripped.N4.nii.gz +ADNI1267895,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1267895_041_S_6136.stripped.N4.nii.gz +DLBS0028363_session_1,M,26.02,dlbs_storage/DLBS_bias_corrected/0028363_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub39065,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39065.stripped.N4.nii.gz +sub-CC510486,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510486.stripped.N4.nii.gz +fcon1000Cambridge_sub08588,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08588.stripped.N4.nii.gz +ADNI1092176,F,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I1092176_019_S_6635.stripped.N4.nii.gz +ADNI256318,M,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I256318_014_S_4039.stripped.N4.nii.gz +sub-CC223085,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223085.stripped.N4.nii.gz +fcon1000Atlanta_sub06870,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub06870.stripped.N4.nii.gz +sub-CC720670,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720670.stripped.N4.nii.gz +DLBS0028392_session_1,F,54.85,dlbs_storage/DLBS_bias_corrected/0028392_session_1.stripped.N4.nii.gz +fcon1000Berlin_sub28092,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub28092.stripped.N4.nii.gz +fcon1000AnnArbor_sub82334,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub82334.stripped.N4.nii.gz +fcon1000Beijing_sub98617,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub98617.stripped.N4.nii.gz +fcon1000Cambridge_sub58874,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58874.stripped.N4.nii.gz +fcon1000Beijing_sub68597,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub68597.stripped.N4.nii.gz +ADNI90755,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90755_051_S_1072.stripped.N4.nii.gz +sub-CC620264,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620264.stripped.N4.nii.gz +DLBS0028400_session_1,M,49.92,dlbs_storage/DLBS_bias_corrected/0028400_session_1.stripped.N4.nii.gz +DLBS0028607_session_1,M,66.74,dlbs_storage/DLBS_bias_corrected/0028607_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub86034,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub86034.stripped.N4.nii.gz +fcon1000Beijing_sub74587,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub74587.stripped.N4.nii.gz +DLBS0028513_session_1,M,26.68,dlbs_storage/DLBS_bias_corrected/0028513_session_1.stripped.N4.nii.gz +sub-CC320661,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320661.stripped.N4.nii.gz +sub-CC121479,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121479.stripped.N4.nii.gz +ADNI1236085,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1236085_022_S_6822.stripped.N4.nii.gz +sub-CC321073,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321073.stripped.N4.nii.gz +DLBS0028578_session_1,M,87.34,dlbs_storage/DLBS_bias_corrected/0028578_session_1.stripped.N4.nii.gz +ADNI871835,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I871835_141_S_6041.stripped.N4.nii.gz +sub-CC722651,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722651.stripped.N4.nii.gz +fcon1000Cambridge_sub52036,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52036.stripped.N4.nii.gz +ADNI228854,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I228854_037_S_4028.stripped.N4.nii.gz +ADNI916399,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I916399_168_S_6085.stripped.N4.nii.gz +ADNI982860,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I982860_109_S_6218.stripped.N4.nii.gz +fcon1000NewYork_sub77903,M,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub77903.stripped.N4.nii.gz +ADNI367563,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I367563_131_S_5138.stripped.N4.nii.gz +fcon1000Beijing_sub65467,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub65467.stripped.N4.nii.gz +sub-CC520011,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520011.stripped.N4.nii.gz +fcon1000Beijing_sub72654,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub72654.stripped.N4.nii.gz +sub-CC120008,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120008.stripped.N4.nii.gz +fcon1000Cambridge_sub27065,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27065.stripped.N4.nii.gz +fcon1000Beijing_sub01244,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub01244.stripped.N4.nii.gz +sub-CC711128,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711128.stripped.N4.nii.gz +sub-CC110606,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110606.stripped.N4.nii.gz +fcon1000AnnArbor_sub97518,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub97518.stripped.N4.nii.gz +fcon1000Atlanta_sub71337,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub71337.stripped.N4.nii.gz diff --git a/combined_metadata.csv b/combined_metadata.csv new file mode 100644 index 0000000..63a8fc7 --- /dev/null +++ b/combined_metadata.csv @@ -0,0 +1,1750 @@ +indx,Project,uid,age_at_scan,partition,path +0,IXI,IXI002,35.8,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI002-Guys-0828-T1.nii.gz +1,IXI,IXI012,38.78,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI012-HH-1211-T1.nii.gz +2,IXI,IXI013,46.71,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI013-HH-1212-T1.nii.gz +3,IXI,IXI014,34.24,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI014-HH-1236-T1.nii.gz +4,IXI,IXI015,24.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI015-HH-1258-T1.nii.gz +5,IXI,IXI016,55.17,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI016-Guys-0697-T1.nii.gz +6,IXI,IXI017,29.09,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI017-Guys-0698-T1.nii.gz +7,IXI,IXI019,58.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI019-Guys-0702-T1.nii.gz +8,IXI,IXI020,39.47,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI020-Guys-0700-T1.nii.gz +9,IXI,IXI021,21.57,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI021-Guys-0703-T1.nii.gz +10,IXI,IXI022,30.67,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI022-Guys-0701-T1.nii.gz +11,IXI,IXI023,33.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI023-Guys-0699-T1.nii.gz +12,IXI,IXI024,37.7,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI024-Guys-0705-T1.nii.gz +13,IXI,IXI025,29.78,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI025-Guys-0852-T1.nii.gz +14,IXI,IXI026,34.48,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI026-Guys-0696-T1.nii.gz +15,IXI,IXI027,30.42,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI027-Guys-0710-T1.nii.gz +16,IXI,IXI028,74.03,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI028-Guys-1038-T1.nii.gz +17,IXI,IXI029,59.22,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI029-Guys-0829-T1.nii.gz +18,IXI,IXI030,31.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI030-Guys-0708-T1.nii.gz +19,IXI,IXI031,31.13,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI031-Guys-0797-T1.nii.gz +20,IXI,IXI033,24.76,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI033-HH-1259-T1.nii.gz +21,IXI,IXI034,24.34,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI034-HH-1260-T1.nii.gz +22,IXI,IXI035,37.14,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI035-IOP-0873-T1.nii.gz +23,IXI,IXI036,23.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI036-Guys-0736-T1.nii.gz +24,IXI,IXI037,37.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI037-Guys-0704-T1.nii.gz +25,IXI,IXI038,21.38,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI038-Guys-0729-T1.nii.gz +26,IXI,IXI039,23.35,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI039-HH-1261-T1.nii.gz +27,IXI,IXI040,44.09,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI040-Guys-0724-T1.nii.gz +28,IXI,IXI041,27.39,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI041-Guys-0706-T1.nii.gz +29,IXI,IXI042,27.82,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI042-Guys-0725-T1.nii.gz +30,IXI,IXI043,22.65,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI043-Guys-0714-T1.nii.gz +31,IXI,IXI044,44.85,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI044-Guys-0712-T1.nii.gz +32,IXI,IXI045,40.04,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI045-Guys-0713-T1.nii.gz +33,IXI,IXI046,37.73,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI046-Guys-0824-T1.nii.gz +34,IXI,IXI048,50.65,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI048-HH-1326-T1.nii.gz +35,IXI,IXI049,31.85,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI049-HH-1358-T1.nii.gz +36,IXI,IXI050,63.19,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI050-Guys-0711-T1.nii.gz +37,IXI,IXI051,25.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI051-HH-1328-T1.nii.gz +38,IXI,IXI052,33.76,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI052-HH-1343-T1.nii.gz +39,IXI,IXI053,53.31,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI053-Guys-0727-T1.nii.gz +40,IXI,IXI054,41.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI054-Guys-0707-T1.nii.gz +41,IXI,IXI055,49.4,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI055-Guys-0730-T1.nii.gz +42,IXI,IXI056,25.94,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI056-HH-1327-T1.nii.gz +43,IXI,IXI057,28.16,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI057-HH-1342-T1.nii.gz +44,IXI,IXI058,29.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI058-Guys-0726-T1.nii.gz +45,IXI,IXI059,34.14,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI059-HH-1284-T1.nii.gz +46,IXI,IXI060,30.7,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI060-Guys-0709-T1.nii.gz +47,IXI,IXI061,59.0,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI061-Guys-0715-T1.nii.gz +48,IXI,IXI062,36.22,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI062-Guys-0740-T1.nii.gz +49,IXI,IXI063,41.12,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI063-Guys-0742-T1.nii.gz +50,IXI,IXI064,20.07,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI064-Guys-0743-T1.nii.gz +51,IXI,IXI065,23.72,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI065-Guys-0744-T1.nii.gz +52,IXI,IXI066,46.17,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI066-Guys-0731-T1.nii.gz +53,IXI,IXI067,24.69,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI067-HH-1356-T1.nii.gz +54,IXI,IXI068,24.57,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI068-Guys-0756-T1.nii.gz +55,IXI,IXI069,26.27,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI069-Guys-0769-T1.nii.gz +56,IXI,IXI070,20.7,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI070-Guys-0767-T1.nii.gz +57,IXI,IXI071,37.0,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI071-Guys-0770-T1.nii.gz +58,IXI,IXI072,68.6,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI072-HH-2324-T1.nii.gz +59,IXI,IXI073,46.37,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI073-Guys-0755-T1.nii.gz +60,IXI,IXI074,22.53,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI074-Guys-0771-T1.nii.gz +61,IXI,IXI075,35.99,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI075-Guys-0754-T1.nii.gz +62,IXI,IXI076,55.83,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI076-Guys-0753-T1.nii.gz +63,IXI,IXI077,36.48,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI077-Guys-0752-T1.nii.gz +64,IXI,IXI078,28.51,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI078-Guys-0751-T1.nii.gz +65,IXI,IXI079,52.53,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI079-HH-1388-T1.nii.gz +66,IXI,IXI080,21.2,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI080-HH-1341-T1.nii.gz +67,IXI,IXI083,30.89,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI083-HH-1357-T1.nii.gz +68,IXI,IXI084,38.23,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI084-Guys-0741-T1.nii.gz +69,IXI,IXI085,31.85,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI085-Guys-0759-T1.nii.gz +70,IXI,IXI086,30.07,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI086-Guys-0728-T1.nii.gz +71,IXI,IXI087,25.66,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI087-Guys-0768-T1.nii.gz +72,IXI,IXI089,49.4,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI089-Guys-0757-T1.nii.gz +73,IXI,IXI090,41.82,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI090-Guys-0800-T1.nii.gz +74,IXI,IXI091,28.61,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI091-Guys-0762-T1.nii.gz +75,IXI,IXI092,33.24,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI092-HH-1436-T1.nii.gz +76,IXI,IXI093,26.88,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI093-HH-1359-T1.nii.gz +77,IXI,IXI094,24.85,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI094-HH-1355-T1.nii.gz +78,IXI,IXI095,24.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI095-HH-1390-T1.nii.gz +79,IXI,IXI096,26.92,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI096-HH-1391-T1.nii.gz +80,IXI,IXI097,35.02,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI097-HH-1619-T1.nii.gz +81,IXI,IXI098,29.73,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI098-Guys-0745-T1.nii.gz +82,IXI,IXI099,51.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI099-Guys-0748-T1.nii.gz +83,IXI,IXI100,41.51,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI100-Guys-0747-T1.nii.gz +84,IXI,IXI101,45.77,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI101-Guys-0749-T1.nii.gz +85,IXI,IXI102,24.62,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI102-HH-1416-T1.nii.gz +86,IXI,IXI103,31.81,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI103-Guys-0750-T1.nii.gz +87,IXI,IXI104,26.98,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI104-HH-1450-T1.nii.gz +88,IXI,IXI105,38.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI105-HH-1471-T1.nii.gz +89,IXI,IXI106,36.67,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI106-Guys-0760-T1.nii.gz +90,IXI,IXI107,31.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI107-Guys-0761-T1.nii.gz +91,IXI,IXI108,43.16,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI108-Guys-0865-T1.nii.gz +92,IXI,IXI109,36.47,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI109-Guys-0732-T1.nii.gz +93,IXI,IXI110,37.77,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI110-Guys-0733-T1.nii.gz +94,IXI,IXI111,25.19,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI111-Guys-0734-T1.nii.gz +95,IXI,IXI112,23.7,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI112-Guys-0735-T1.nii.gz +96,IXI,IXI113,32.36,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI113-Guys-0776-T1.nii.gz +97,IXI,IXI114,65.41,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI114-Guys-0737-T1.nii.gz +98,IXI,IXI115,72.13,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI115-Guys-0738-T1.nii.gz +99,IXI,IXI116,23.85,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI116-Guys-0739-T1.nii.gz +100,IXI,IXI118,25.93,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI118-Guys-0764-T1.nii.gz +101,IXI,IXI119,32.17,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI119-Guys-0765-T1.nii.gz +102,IXI,IXI120,53.67,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI120-Guys-0766-T1.nii.gz +103,IXI,IXI121,35.07,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI121-Guys-0772-T1.nii.gz +104,IXI,IXI122,22.97,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI122-Guys-0773-T1.nii.gz +105,IXI,IXI123,46.58,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI123-Guys-0774-T1.nii.gz +106,IXI,IXI126,57.22,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI126-HH-1437-T1.nii.gz +107,IXI,IXI127,29.5,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI127-HH-1451-T1.nii.gz +108,IXI,IXI128,27.33,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI128-HH-1470-T1.nii.gz +109,IXI,IXI129,23.04,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI129-Guys-0775-T1.nii.gz +110,IXI,IXI130,38.77,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI130-HH-1528-T1.nii.gz +111,IXI,IXI131,45.23,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI131-HH-1527-T1.nii.gz +112,IXI,IXI132,58.72,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI132-HH-1415-T1.nii.gz +113,IXI,IXI134,47.35,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI134-Guys-0780-T1.nii.gz +114,IXI,IXI135,29.0,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI135-Guys-0779-T1.nii.gz +115,IXI,IXI136,35.81,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI136-HH-1452-T1.nii.gz +116,IXI,IXI137,41.23,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI137-HH-1472-T1.nii.gz +117,IXI,IXI138,33.14,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI138-Guys-0746-T1.nii.gz +118,IXI,IXI139,32.94,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI139-Guys-0815-T1.nii.gz +119,IXI,IXI140,27.84,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI140-Guys-0787-T1.nii.gz +120,IXI,IXI141,46.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI141-Guys-0789-T1.nii.gz +121,IXI,IXI142,48.25,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI142-Guys-0786-T1.nii.gz +122,IXI,IXI143,31.96,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI143-Guys-0785-T1.nii.gz +123,IXI,IXI144,29.36,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI144-Guys-0788-T1.nii.gz +124,IXI,IXI145,49.39,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI145-Guys-0781-T1.nii.gz +125,IXI,IXI146,33.59,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI146-HH-1389-T1.nii.gz +126,IXI,IXI148,40.56,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI148-HH-1453-T1.nii.gz +127,IXI,IXI150,27.01,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI150-HH-1550-T1.nii.gz +128,IXI,IXI151,45.39,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI151-Guys-0793-T1.nii.gz +129,IXI,IXI153,22.43,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI153-Guys-0782-T1.nii.gz +130,IXI,IXI154,24.34,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI154-Guys-0821-T1.nii.gz +131,IXI,IXI156,59.38,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI156-Guys-0837-T1.nii.gz +132,IXI,IXI157,54.43,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI157-Guys-0816-T1.nii.gz +133,IXI,IXI158,75.63,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI158-Guys-0783-T1.nii.gz +134,IXI,IXI159,24.14,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI159-HH-1549-T1.nii.gz +135,IXI,IXI160,39.4,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI160-HH-1637-T1.nii.gz +136,IXI,IXI161,65.11,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI161-HH-2533-T1.nii.gz +137,IXI,IXI162,50.52,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI162-HH-1548-T1.nii.gz +138,IXI,IXI163,48.05,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI163-HH-1621-T1.nii.gz +139,IXI,IXI164,64.47,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI164-Guys-0844-T1.nii.gz +140,IXI,IXI165,24.38,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI165-HH-1589-T1.nii.gz +141,IXI,IXI166,41.2,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI166-Guys-0846-T1.nii.gz +142,IXI,IXI167,67.53,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI167-HH-1569-T1.nii.gz +143,IXI,IXI168,43.82,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI168-HH-1607-T1.nii.gz +144,IXI,IXI169,58.77,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI169-Guys-0842-T1.nii.gz +145,IXI,IXI170,31.59,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI170-Guys-0843-T1.nii.gz +146,IXI,IXI172,74.99,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI172-Guys-0982-T1.nii.gz +147,IXI,IXI173,29.57,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI173-HH-1590-T1.nii.gz +148,IXI,IXI174,63.1,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI174-HH-1571-T1.nii.gz +149,IXI,IXI175,72.27,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI175-HH-1570-T1.nii.gz +150,IXI,IXI176,24.85,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI176-HH-1604-T1.nii.gz +151,IXI,IXI177,34.29,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI177-Guys-0831-T1.nii.gz +152,IXI,IXI178,25.41,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI178-Guys-0778-T1.nii.gz +153,IXI,IXI179,30.14,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI179-Guys-0777-T1.nii.gz +154,IXI,IXI180,42.15,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI180-HH-1605-T1.nii.gz +155,IXI,IXI181,45.7,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI181-Guys-0790-T1.nii.gz +156,IXI,IXI182,60.97,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI182-Guys-0792-T1.nii.gz +157,IXI,IXI183,30.18,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI183-Guys-0791-T1.nii.gz +158,IXI,IXI184,30.12,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI184-Guys-0794-T1.nii.gz +159,IXI,IXI185,83.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI185-Guys-0795-T1.nii.gz +160,IXI,IXI186,61.15,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI186-Guys-0796-T1.nii.gz +161,IXI,IXI188,44.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI188-Guys-0798-T1.nii.gz +162,IXI,IXI189,41.72,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI189-Guys-0799-T1.nii.gz +163,IXI,IXI191,44.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI191-Guys-0801-T1.nii.gz +164,IXI,IXI192,38.94,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI192-Guys-0878-T1.nii.gz +165,IXI,IXI193,55.24,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI193-Guys-0810-T1.nii.gz +166,IXI,IXI194,48.33,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI194-Guys-0818-T1.nii.gz +167,IXI,IXI195,37.83,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI195-HH-1620-T1.nii.gz +168,IXI,IXI196,29.11,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI196-Guys-0805-T1.nii.gz +169,IXI,IXI197,60.46,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI197-Guys-0811-T1.nii.gz +170,IXI,IXI198,45.26,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI198-Guys-0803-T1.nii.gz +171,IXI,IXI199,63.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI199-Guys-0802-T1.nii.gz +172,IXI,IXI200,49.92,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI200-Guys-0812-T1.nii.gz +173,IXI,IXI201,22.41,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI201-HH-1588-T1.nii.gz +174,IXI,IXI202,20.17,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI202-HH-1526-T1.nii.gz +175,IXI,IXI204,74.64,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI204-HH-1651-T1.nii.gz +176,IXI,IXI205,45.38,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI205-HH-1649-T1.nii.gz +177,IXI,IXI206,50.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI206-HH-1650-T1.nii.gz +178,IXI,IXI207,40.36,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI207-Guys-0809-T1.nii.gz +179,IXI,IXI208,34.0,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI208-Guys-0808-T1.nii.gz +180,IXI,IXI209,32.64,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI209-Guys-0804-T1.nii.gz +181,IXI,IXI210,69.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI210-Guys-0856-T1.nii.gz +182,IXI,IXI211,55.12,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI211-HH-1568-T1.nii.gz +183,IXI,IXI212,59.13,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI212-HH-1643-T1.nii.gz +184,IXI,IXI213,54.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI213-HH-1642-T1.nii.gz +185,IXI,IXI214,24.31,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI214-HH-1636-T1.nii.gz +186,IXI,IXI216,73.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI216-HH-1635-T1.nii.gz +187,IXI,IXI217,57.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI217-HH-1638-T1.nii.gz +188,IXI,IXI218,35.41,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI218-HH-1815-T1.nii.gz +189,IXI,IXI219,53.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI219-Guys-0894-T1.nii.gz +190,IXI,IXI219,58.07,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI219-Guys-0894-T1.nii.gz +191,IXI,IXI221,48.55,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI221-HH-1606-T1.nii.gz +192,IXI,IXI222,36.06,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI222-Guys-0819-T1.nii.gz +193,IXI,IXI223,63.25,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI223-Guys-0830-T1.nii.gz +194,IXI,IXI224,36.92,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI224-Guys-0823-T1.nii.gz +195,IXI,IXI225,47.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI225-Guys-0832-T1.nii.gz +196,IXI,IXI226,41.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI226-HH-1618-T1.nii.gz +197,IXI,IXI227,67.06,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI227-Guys-0813-T1.nii.gz +198,IXI,IXI229,72.35,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI229-Guys-0980-T1.nii.gz +199,IXI,IXI230,21.15,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI230-IOP-0869-T1.nii.gz +200,IXI,IXI231,58.99,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI231-IOP-0866-T1.nii.gz +201,IXI,IXI232,28.81,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI232-IOP-0898-T1.nii.gz +202,IXI,IXI233,26.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI233-IOP-0875-T1.nii.gz +203,IXI,IXI234,33.13,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI234-IOP-0870-T1.nii.gz +204,IXI,IXI236,25.71,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI236-Guys-0817-T1.nii.gz +205,IXI,IXI237,78.2,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI237-Guys-1049-T1.nii.gz +206,IXI,IXI238,27.73,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI238-IOP-0883-T1.nii.gz +207,IXI,IXI239,62.96,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI239-HH-2296-T1.nii.gz +208,IXI,IXI240,39.04,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI240-Guys-0834-T1.nii.gz +209,IXI,IXI241,30.01,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI241-Guys-0833-T1.nii.gz +210,IXI,IXI242,31.37,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI242-HH-1722-T1.nii.gz +211,IXI,IXI244,49.04,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI244-Guys-0841-T1.nii.gz +212,IXI,IXI246,42.22,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI246-Guys-0840-T1.nii.gz +213,IXI,IXI247,29.82,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI247-Guys-0838-T1.nii.gz +214,IXI,IXI248,44.88,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI248-HH-1972-T1.nii.gz +215,IXI,IXI249,68.27,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI249-Guys-1072-T1.nii.gz +216,IXI,IXI250,72.88,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI250-Guys-0836-T1.nii.gz +217,IXI,IXI251,80.17,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI251-Guys-1055-T1.nii.gz +218,IXI,IXI252,70.56,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI252-HH-1693-T1.nii.gz +219,IXI,IXI253,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI253-HH-1694-T1.nii.gz +220,IXI,IXI254,25.58,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI254-HH-1705-T1.nii.gz +221,IXI,IXI255,57.7,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI255-HH-1882-T1.nii.gz +222,IXI,IXI256,27.38,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI256-HH-1723-T1.nii.gz +223,IXI,IXI257,69.55,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI257-HH-1724-T1.nii.gz +224,IXI,IXI258,22.57,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI258-HH-1769-T1.nii.gz +225,IXI,IXI259,59.78,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI259-HH-1804-T1.nii.gz +226,IXI,IXI260,60.91,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI260-HH-1805-T1.nii.gz +227,IXI,IXI261,34.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI261-HH-1704-T1.nii.gz +228,IXI,IXI262,20.93,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI262-HH-1861-T1.nii.gz +229,IXI,IXI263,25.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI263-HH-1684-T1.nii.gz +230,IXI,IXI264,44.88,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI264-Guys-0854-T1.nii.gz +231,IXI,IXI265,27.38,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI265-Guys-0845-T1.nii.gz +232,IXI,IXI266,61.07,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI266-Guys-0853-T1.nii.gz +233,IXI,IXI267,35.45,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI267-HH-1772-T1.nii.gz +234,IXI,IXI268,44.92,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI268-Guys-0858-T1.nii.gz +235,IXI,IXI269,26.58,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI269-Guys-0839-T1.nii.gz +236,IXI,IXI270,61.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI270-Guys-0847-T1.nii.gz +237,IXI,IXI274,73.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI274-HH-2294-T1.nii.gz +238,IXI,IXI275,24.18,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI275-HH-1803-T1.nii.gz +239,IXI,IXI276,20.91,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI276-HH-1840-T1.nii.gz +240,IXI,IXI277,61.34,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI277-HH-1770-T1.nii.gz +241,IXI,IXI278,20.21,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI278-HH-1771-T1.nii.gz +242,IXI,IXI279,51.88,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI279-Guys-1044-T1.nii.gz +243,IXI,IXI280,42.51,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI280-HH-1860-T1.nii.gz +244,IXI,IXI282,40.01,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI282-HH-2025-T1.nii.gz +245,IXI,IXI284,63.04,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI284-HH-2354-T1.nii.gz +246,IXI,IXI285,40.81,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI285-Guys-0857-T1.nii.gz +247,IXI,IXI286,54.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI286-Guys-0859-T1.nii.gz +248,IXI,IXI287,44.99,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI287-Guys-0863-T1.nii.gz +249,IXI,IXI288,78.58,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI288-Guys-0879-T1.nii.gz +250,IXI,IXI289,60.84,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI289-Guys-0864-T1.nii.gz +251,IXI,IXI290,45.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI290-IOP-0874-T1.nii.gz +252,IXI,IXI291,30.69,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI291-IOP-0882-T1.nii.gz +253,IXI,IXI292,23.73,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI292-IOP-0877-T1.nii.gz +254,IXI,IXI293,26.52,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI293-IOP-0876-T1.nii.gz +255,IXI,IXI294,27.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI294-IOP-0868-T1.nii.gz +256,IXI,IXI295,50.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI295-HH-1814-T1.nii.gz +257,IXI,IXI296,63.97,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI296-HH-1970-T1.nii.gz +258,IXI,IXI297,51.29,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI297-Guys-0886-T1.nii.gz +259,IXI,IXI298,43.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI298-Guys-0861-T1.nii.gz +260,IXI,IXI299,53.41,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI299-Guys-0893-T1.nii.gz +261,IXI,IXI300,38.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI300-Guys-0880-T1.nii.gz +262,IXI,IXI302,59.51,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI302-HH-1883-T1.nii.gz +263,IXI,IXI303,25.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI303-IOP-0968-T1.nii.gz +264,IXI,IXI304,46.59,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI304-Guys-0862-T1.nii.gz +265,IXI,IXI305,62.51,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI305-IOP-0871-T1.nii.gz +266,IXI,IXI306,30.18,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI306-IOP-0867-T1.nii.gz +267,IXI,IXI307,33.0,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI307-IOP-0872-T1.nii.gz +268,IXI,IXI308,41.2,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI308-Guys-0884-T1.nii.gz +269,IXI,IXI309,33.92,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI309-IOP-0897-T1.nii.gz +270,IXI,IXI310,62.02,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI310-IOP-0890-T1.nii.gz +271,IXI,IXI311,61.59,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI311-Guys-0885-T1.nii.gz +272,IXI,IXI312,59.15,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI312-Guys-0887-T1.nii.gz +273,IXI,IXI313,65.85,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI313-HH-2241-T1.nii.gz +274,IXI,IXI314,45.86,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI314-IOP-0889-T1.nii.gz +275,IXI,IXI315,25.45,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI315-IOP-0888-T1.nii.gz +276,IXI,IXI316,56.94,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI316-HH-1862-T1.nii.gz +277,IXI,IXI317,67.79,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI317-Guys-0896-T1.nii.gz +278,IXI,IXI318,54.49,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI318-Guys-0895-T1.nii.gz +279,IXI,IXI319,59.47,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI319-Guys-0901-T1.nii.gz +280,IXI,IXI320,29.74,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI320-Guys-0902-T1.nii.gz +281,IXI,IXI321,54.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI321-Guys-0903-T1.nii.gz +282,IXI,IXI322,28.48,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI322-IOP-0891-T1.nii.gz +283,IXI,IXI324,60.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI324-Guys-0922-T1.nii.gz +284,IXI,IXI325,52.67,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI325-Guys-0911-T1.nii.gz +285,IXI,IXI326,67.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI326-Guys-0907-T1.nii.gz +286,IXI,IXI327,73.56,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI327-HH-1999-T1.nii.gz +287,IXI,IXI328,61.79,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI328-HH-2295-T1.nii.gz +288,IXI,IXI328,62.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI328-HH-2295-T1.nii.gz +289,IXI,IXI329,55.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI329-HH-1908-T1.nii.gz +290,IXI,IXI330,44.48,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI330-Guys-0881-T1.nii.gz +291,IXI,IXI331,23.49,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI331-IOP-0892-T1.nii.gz +292,IXI,IXI332,42.37,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI332-IOP-1134-T1.nii.gz +293,IXI,IXI334,69.29,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI334-HH-1907-T1.nii.gz +294,IXI,IXI335,69.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI335-HH-1906-T1.nii.gz +295,IXI,IXI336,67.77,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI336-Guys-0904-T1.nii.gz +296,IXI,IXI338,61.49,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI338-HH-1971-T1.nii.gz +297,IXI,IXI342,48.68,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI342-Guys-0909-T1.nii.gz +298,IXI,IXI344,62.09,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI344-Guys-0905-T1.nii.gz +299,IXI,IXI348,38.59,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI348-Guys-0910-T1.nii.gz +300,IXI,IXI350,62.68,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI350-Guys-0908-T1.nii.gz +301,IXI,IXI351,56.92,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI351-Guys-0914-T1.nii.gz +302,IXI,IXI353,52.69,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI353-HH-1996-T1.nii.gz +303,IXI,IXI354,45.62,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI354-HH-2024-T1.nii.gz +304,IXI,IXI356,64.1,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI356-HH-2049-T1.nii.gz +305,IXI,IXI357,63.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI357-HH-2076-T1.nii.gz +306,IXI,IXI358,62.06,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI358-Guys-0919-T1.nii.gz +307,IXI,IXI359,62.06,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI359-Guys-0918-T1.nii.gz +308,IXI,IXI360,54.19,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI360-Guys-0912-T1.nii.gz +309,IXI,IXI361,54.19,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI361-Guys-0913-T1.nii.gz +310,IXI,IXI362,41.1,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI362-HH-2051-T1.nii.gz +311,IXI,IXI363,60.92,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI363-HH-2050-T1.nii.gz +312,IXI,IXI364,67.16,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI364-Guys-0920-T1.nii.gz +313,IXI,IXI365,66.53,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI365-Guys-0923-T1.nii.gz +314,IXI,IXI367,54.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI367-Guys-0917-T1.nii.gz +315,IXI,IXI368,54.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI368-Guys-0916-T1.nii.gz +316,IXI,IXI369,60.6,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI369-Guys-0924-T1.nii.gz +317,IXI,IXI370,60.6,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI370-Guys-0921-T1.nii.gz +318,IXI,IXI371,26.4,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI371-IOP-0970-T1.nii.gz +319,IXI,IXI372,29.26,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI372-IOP-0971-T1.nii.gz +320,IXI,IXI373,58.79,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI373-IOP-0967-T1.nii.gz +321,IXI,IXI375,41.06,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI375-Guys-0925-T1.nii.gz +322,IXI,IXI376,72.59,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI376-Guys-0938-T1.nii.gz +323,IXI,IXI377,72.59,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI377-Guys-0937-T1.nii.gz +324,IXI,IXI378,38.84,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI378-IOP-0972-T1.nii.gz +325,IXI,IXI379,66.91,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI379-Guys-0943-T1.nii.gz +326,IXI,IXI380,66.91,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI380-Guys-0944-T1.nii.gz +327,IXI,IXI381,59.67,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI381-Guys-1024-T1.nii.gz +328,IXI,IXI382,65.91,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI382-IOP-1135-T1.nii.gz +329,IXI,IXI383,74.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI383-HH-2099-T1.nii.gz +330,IXI,IXI384,74.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI384-HH-2100-T1.nii.gz +331,IXI,IXI385,64.65,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI385-HH-2078-T1.nii.gz +332,IXI,IXI386,52.3,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI386-HH-2077-T1.nii.gz +333,IXI,IXI387,46.43,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI387-HH-2101-T1.nii.gz +334,IXI,IXI388,33.35,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI388-IOP-0973-T1.nii.gz +335,IXI,IXI389,58.37,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI389-Guys-0930-T1.nii.gz +336,IXI,IXI390,41.89,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI390-Guys-0931-T1.nii.gz +337,IXI,IXI391,52.53,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI391-Guys-0934-T1.nii.gz +338,IXI,IXI392,62.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI392-Guys-1064-T1.nii.gz +339,IXI,IXI393,60.1,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI393-Guys-0941-T1.nii.gz +340,IXI,IXI394,53.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI394-Guys-0940-T1.nii.gz +341,IXI,IXI395,45.03,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI395-IOP-0969-T1.nii.gz +342,IXI,IXI396,53.57,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI396-HH-2115-T1.nii.gz +343,IXI,IXI397,51.66,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI397-Guys-0953-T1.nii.gz +344,IXI,IXI398,51.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI398-Guys-0952-T1.nii.gz +345,IXI,IXI399,73.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI399-Guys-0966-T1.nii.gz +346,IXI,IXI400,55.58,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI400-Guys-0977-T1.nii.gz +347,IXI,IXI401,55.58,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI401-Guys-0978-T1.nii.gz +348,IXI,IXI402,53.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI402-Guys-0961-T1.nii.gz +349,IXI,IXI403,53.54,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI403-Guys-0965-T1.nii.gz +350,IXI,IXI404,62.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI404-Guys-0950-T1.nii.gz +351,IXI,IXI405,58.57,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI405-Guys-0948-T1.nii.gz +352,IXI,IXI406,58.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI406-Guys-0963-T1.nii.gz +353,IXI,IXI407,58.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI407-Guys-0964-T1.nii.gz +354,IXI,IXI408,52.13,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI408-Guys-0962-T1.nii.gz +355,IXI,IXI409,70.95,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI409-Guys-0960-T1.nii.gz +356,IXI,IXI410,53.41,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI410-Guys-0958-T1.nii.gz +357,IXI,IXI411,53.41,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI411-Guys-0959-T1.nii.gz +358,IXI,IXI412,58.57,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI412-Guys-0949-T1.nii.gz +359,IXI,IXI413,59.84,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI413-Guys-0955-T1.nii.gz +360,IXI,IXI414,59.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI414-Guys-0957-T1.nii.gz +361,IXI,IXI415,72.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI415-Guys-0942-T1.nii.gz +362,IXI,IXI416,72.15,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI416-Guys-1051-T1.nii.gz +363,IXI,IXI417,59.88,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI417-Guys-0939-T1.nii.gz +364,IXI,IXI418,59.74,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI418-Guys-0956-T1.nii.gz +365,IXI,IXI419,73.18,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI419-Guys-1027-T1.nii.gz +366,IXI,IXI420,73.18,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI420-Guys-1028-T1.nii.gz +367,IXI,IXI422,37.1,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI422-Guys-1071-T1.nii.gz +368,IXI,IXI423,39.02,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI423-IOP-0974-T1.nii.gz +369,IXI,IXI424,46.3,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI424-IOP-0991-T1.nii.gz +370,IXI,IXI425,19.98,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI425-IOP-0988-T1.nii.gz +371,IXI,IXI426,23.11,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI426-IOP-1011-T1.nii.gz +372,IXI,IXI427,34.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI427-IOP-1012-T1.nii.gz +373,IXI,IXI428,55.54,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI428-Guys-0996-T1.nii.gz +374,IXI,IXI429,55.54,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI429-Guys-0997-T1.nii.gz +375,IXI,IXI430,72.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI430-IOP-0990-T1.nii.gz +376,IXI,IXI431,58.78,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI431-Guys-0986-T1.nii.gz +377,IXI,IXI432,57.74,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI432-Guys-0987-T1.nii.gz +378,IXI,IXI433,73.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI433-IOP-0989-T1.nii.gz +379,IXI,IXI434,67.24,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI434-IOP-1010-T1.nii.gz +380,IXI,IXI436,28.35,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI436-HH-2153-T1.nii.gz +381,IXI,IXI437,55.6,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI437-HH-2152-T1.nii.gz +382,IXI,IXI438,63.68,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI438-HH-2155-T1.nii.gz +383,IXI,IXI439,43.92,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI439-HH-2114-T1.nii.gz +384,IXI,IXI440,48.1,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI440-HH-2127-T1.nii.gz +385,IXI,IXI441,48.1,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI441-HH-2154-T1.nii.gz +386,IXI,IXI442,61.37,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI442-IOP-1041-T1.nii.gz +387,IXI,IXI443,69.13,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI443-HH-2215-T1.nii.gz +388,IXI,IXI444,58.38,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI444-HH-2270-T1.nii.gz +389,IXI,IXI445,60.03,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI445-HH-2269-T1.nii.gz +390,IXI,IXI446,60.11,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI446-HH-2325-T1.nii.gz +391,IXI,IXI447,72.83,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI447-Guys-0979-T1.nii.gz +392,IXI,IXI448,79.41,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI448-HH-2393-T1.nii.gz +393,IXI,IXI449,46.9,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI449-Guys-1082-T1.nii.gz +394,IXI,IXI450,68.51,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI450-Guys-1093-T1.nii.gz +395,IXI,IXI451,41.13,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI451-HH-2212-T1.nii.gz +396,IXI,IXI452,63.4,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI452-HH-2213-T1.nii.gz +397,IXI,IXI453,63.42,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI453-HH-2214-T1.nii.gz +398,IXI,IXI454,32.58,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI454-Guys-1083-T1.nii.gz +399,IXI,IXI455,68.48,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI455-Guys-0981-T1.nii.gz +400,IXI,IXI456,70.25,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI456-Guys-1019-T1.nii.gz +401,IXI,IXI458,70.71,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI458-Guys-0993-T1.nii.gz +402,IXI,IXI459,62.43,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI459-Guys-0992-T1.nii.gz +403,IXI,IXI460,60.9,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI460-Guys-0999-T1.nii.gz +404,IXI,IXI461,60.9,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI461-Guys-0998-T1.nii.gz +405,IXI,IXI462,75.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI462-IOP-1042-T1.nii.gz +406,IXI,IXI463,70.14,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI463-IOP-1043-T1.nii.gz +407,IXI,IXI464,86.32,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI464-IOP-1029-T1.nii.gz +408,IXI,IXI465,69.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI465-HH-2176-T1.nii.gz +409,IXI,IXI467,66.95,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI467-Guys-0983-T1.nii.gz +410,IXI,IXI468,67.7,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI468-Guys-0985-T1.nii.gz +411,IXI,IXI469,32.84,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI469-IOP-1136-T1.nii.gz +412,IXI,IXI470,35.98,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI470-IOP-1030-T1.nii.gz +413,IXI,IXI473,68.13,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI473-IOP-1137-T1.nii.gz +414,IXI,IXI474,34.01,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI474-IOP-1138-T1.nii.gz +415,IXI,IXI475,32.7,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI475-IOP-1139-T1.nii.gz +416,IXI,IXI476,78.36,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI476-IOP-1140-T1.nii.gz +417,IXI,IXI477,46.43,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI477-IOP-1141-T1.nii.gz +418,IXI,IXI478,49.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI478-IOP-1142-T1.nii.gz +419,IXI,IXI479,60.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI479-Guys-1034-T1.nii.gz +420,IXI,IXI480,60.02,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI480-Guys-1033-T1.nii.gz +421,IXI,IXI481,65.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI481-HH-2175-T1.nii.gz +422,IXI,IXI482,72.09,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI482-HH-2178-T1.nii.gz +423,IXI,IXI483,63.39,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI483-HH-2177-T1.nii.gz +424,IXI,IXI484,66.37,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI484-HH-2179-T1.nii.gz +425,IXI,IXI485,68.85,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI485-HH-2180-T1.nii.gz +426,IXI,IXI486,63.84,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI486-Guys-1005-T1.nii.gz +427,IXI,IXI487,66.28,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI487-Guys-1037-T1.nii.gz +428,IXI,IXI488,69.07,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI488-Guys-1015-T1.nii.gz +429,IXI,IXI489,69.07,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI489-Guys-1014-T1.nii.gz +430,IXI,IXI490,70.14,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI490-Guys-1018-T1.nii.gz +431,IXI,IXI491,75.97,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI491-Guys-1032-T1.nii.gz +432,IXI,IXI492,69.29,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI492-Guys-1022-T1.nii.gz +433,IXI,IXI493,67.77,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI493-Guys-1007-T1.nii.gz +434,IXI,IXI494,66.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI494-Guys-1008-T1.nii.gz +435,IXI,IXI495,60.87,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI495-Guys-1009-T1.nii.gz +436,IXI,IXI496,62.8,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI496-Guys-1045-T1.nii.gz +437,IXI,IXI497,72.31,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI497-Guys-1002-T1.nii.gz +438,IXI,IXI498,76.78,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI498-Guys-1050-T1.nii.gz +439,IXI,IXI499,82.19,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI499-Guys-1004-T1.nii.gz +440,IXI,IXI500,63.18,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI500-Guys-1017-T1.nii.gz +441,IXI,IXI501,67.11,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI501-Guys-1016-T1.nii.gz +442,IXI,IXI502,63.88,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI502-Guys-1020-T1.nii.gz +443,IXI,IXI503,65.1,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI503-Guys-1021-T1.nii.gz +444,IXI,IXI504,68.15,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI504-Guys-1025-T1.nii.gz +445,IXI,IXI505,62.25,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI505-Guys-1026-T1.nii.gz +446,IXI,IXI506,69.69,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI506-Guys-1035-T1.nii.gz +447,IXI,IXI507,71.66,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI507-Guys-1036-T1.nii.gz +448,IXI,IXI508,60.93,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI508-HH-2268-T1.nii.gz +449,IXI,IXI510,32.42,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI510-IOP-1143-T1.nii.gz +450,IXI,IXI511,64.58,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI511-HH-2238-T1.nii.gz +451,IXI,IXI512,64.75,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI512-Guys-1054-T1.nii.gz +452,IXI,IXI515,62.09,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI515-HH-2377-T1.nii.gz +453,IXI,IXI516,60.41,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI516-HH-2297-T1.nii.gz +454,IXI,IXI517,36.16,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI517-IOP-1144-T1.nii.gz +455,IXI,IXI518,75.83,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI518-HH-2239-T1.nii.gz +456,IXI,IXI519,57.51,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI519-HH-2240-T1.nii.gz +457,IXI,IXI521,70.84,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI521-HH-2353-T1.nii.gz +458,IXI,IXI522,28.93,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI522-HH-2453-T1.nii.gz +459,IXI,IXI523,63.42,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI523-Guys-1056-T1.nii.gz +460,IXI,IXI524,33.52,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI524-HH-2412-T1.nii.gz +461,IXI,IXI525,41.52,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI525-HH-2413-T1.nii.gz +462,IXI,IXI526,54.61,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI526-HH-2392-T1.nii.gz +463,IXI,IXI527,53.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI527-HH-2376-T1.nii.gz +464,IXI,IXI528,40.53,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI528-Guys-1073-T1.nii.gz +465,IXI,IXI531,75.94,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI531-Guys-1057-T1.nii.gz +466,IXI,IXI532,36.55,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI532-IOP-1145-T1.nii.gz +467,IXI,IXI533,73.6,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI533-Guys-1066-T1.nii.gz +468,IXI,IXI534,69.61,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI534-Guys-1062-T1.nii.gz +469,IXI,IXI535,65.26,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI535-Guys-1061-T1.nii.gz +470,IXI,IXI536,58.83,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI536-Guys-1059-T1.nii.gz +471,IXI,IXI537,67.46,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI537-HH-2378-T1.nii.gz +472,IXI,IXI538,81.94,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI538-HH-2411-T1.nii.gz +473,IXI,IXI539,78.07,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI539-Guys-1067-T1.nii.gz +474,IXI,IXI541,36.42,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI541-IOP-1146-T1.nii.gz +475,IXI,IXI542,44.38,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI542-IOP-1147-T1.nii.gz +476,IXI,IXI543,70.52,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI543-IOP-1148-T1.nii.gz +477,IXI,IXI544,58.04,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI544-HH-2395-T1.nii.gz +478,IXI,IXI546,60.07,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI546-HH-2450-T1.nii.gz +479,IXI,IXI547,33.83,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI547-IOP-1149-T1.nii.gz +480,IXI,IXI548,66.33,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI548-IOP-1150-T1.nii.gz +481,IXI,IXI549,25.02,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI549-Guys-1046-T1.nii.gz +482,IXI,IXI550,59.91,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI550-Guys-1069-T1.nii.gz +483,IXI,IXI551,70.5,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI551-Guys-1065-T1.nii.gz +484,IXI,IXI552,64.66,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI552-Guys-1063-T1.nii.gz +485,IXI,IXI553,28.24,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI553-IOP-1151-T1.nii.gz +486,IXI,IXI554,70.11,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI554-Guys-1068-T1.nii.gz +487,IXI,IXI555,65.67,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI555-Guys-1074-T1.nii.gz +488,IXI,IXI556,55.64,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI556-HH-2452-T1.nii.gz +489,IXI,IXI558,66.86,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI558-Guys-1079-T1.nii.gz +490,IXI,IXI559,67.82,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI559-HH-2394-T1.nii.gz +491,IXI,IXI560,63.87,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI560-Guys-1070-T1.nii.gz +492,IXI,IXI561,31.58,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI561-IOP-1152-T1.nii.gz +493,IXI,IXI562,42.79,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI562-Guys-1131-T1.nii.gz +494,IXI,IXI563,28.37,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI563-IOP-1153-T1.nii.gz +495,IXI,IXI565,63.82,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI565-HH-2534-T1.nii.gz +496,IXI,IXI566,42.97,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI566-HH-2535-T1.nii.gz +497,IXI,IXI567,28.56,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI567-HH-2536-T1.nii.gz +498,IXI,IXI568,33.69,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI568-HH-2607-T1.nii.gz +499,IXI,IXI569,56.96,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI569-Guys-1101-T1.nii.gz +500,IXI,IXI571,38.89,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI571-IOP-1154-T1.nii.gz +501,IXI,IXI572,41.95,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI572-HH-2605-T1.nii.gz +502,IXI,IXI573,35.46,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI573-IOP-1155-T1.nii.gz +503,IXI,IXI574,50.57,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI574-IOP-1156-T1.nii.gz +504,IXI,IXI575,57.75,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI575-HH-2658-T1.nii.gz +505,IXI,IXI576,67.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI576-Guys-1077-T1.nii.gz +506,IXI,IXI577,64.19,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI577-HH-2661-T1.nii.gz +507,IXI,IXI578,57.86,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI578-Guys-1078-T1.nii.gz +508,IXI,IXI579,41.22,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI579-Guys-1126-T1.nii.gz +509,IXI,IXI582,29.77,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI582-Guys-1127-T1.nii.gz +510,IXI,IXI584,41.33,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI584-Guys-1129-T1.nii.gz +511,IXI,IXI585,28.12,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI585-Guys-1130-T1.nii.gz +512,IXI,IXI586,34.37,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI586-HH-2451-T1.nii.gz +513,IXI,IXI587,33.59,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI587-Guys-1128-T1.nii.gz +514,IXI,IXI588,45.3,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI588-IOP-1158-T1.nii.gz +515,IXI,IXI591,59.89,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI591-Guys-1084-T1.nii.gz +516,IXI,IXI592,48.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI592-Guys-1085-T1.nii.gz +517,IXI,IXI593,55.22,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI593-Guys-1109-T1.nii.gz +518,IXI,IXI594,62.0,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI594-Guys-1089-T1.nii.gz +519,IXI,IXI595,49.6,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI595-IOP-1159-T1.nii.gz +520,IXI,IXI596,29.66,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI596-IOP-1160-T1.nii.gz +521,IXI,IXI597,43.08,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI597-IOP-1161-T1.nii.gz +522,IXI,IXI598,52.89,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI598-HH-2606-T1.nii.gz +523,IXI,IXI599,39.38,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI599-HH-2659-T1.nii.gz +524,IXI,IXI600,38.96,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI600-HH-2660-T1.nii.gz +525,IXI,IXI601,35.52,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI601-HH-2700-T1.nii.gz +526,IXI,IXI603,66.02,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI603-HH-2701-T1.nii.gz +527,IXI,IXI605,70.33,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI605-HH-2598-T1.nii.gz +528,IXI,IXI606,60.54,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI606-HH-2601-T1.nii.gz +529,IXI,IXI607,83.81,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI607-Guys-1097-T1.nii.gz +530,IXI,IXI608,52.5,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI608-HH-2599-T1.nii.gz +531,IXI,IXI609,29.0,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI609-HH-2600-T1.nii.gz +532,IXI,IXI610,56.68,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI610-HH-2649-T1.nii.gz +533,IXI,IXI611,28.87,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI611-HH-2650-T1.nii.gz +534,IXI,IXI612,33.92,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI612-HH-2688-T1.nii.gz +535,IXI,IXI613,25.59,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI613-HH-2734-T1.nii.gz +536,IXI,IXI614,26.93,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI614-HH-2735-T1.nii.gz +537,IXI,IXI616,55.09,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI616-Guys-1092-T1.nii.gz +538,IXI,IXI617,39.18,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI617-Guys-1090-T1.nii.gz +539,IXI,IXI618,37.95,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI618-Guys-1091-T1.nii.gz +540,IXI,IXI619,24.88,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI619-Guys-1099-T1.nii.gz +541,IXI,IXI621,31.62,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI621-Guys-1100-T1.nii.gz +542,IXI,IXI622,59.69,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI622-Guys-1102-T1.nii.gz +543,IXI,IXI625,47.07,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI625-Guys-1098-T1.nii.gz +544,IXI,IXI626,64.27,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI626-Guys-1094-T1.nii.gz +545,IXI,IXI627,68.48,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI627-Guys-1103-T1.nii.gz +546,IXI,IXI629,59.26,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI629-Guys-1095-T1.nii.gz +547,IXI,IXI630,54.69,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI630-Guys-1108-T1.nii.gz +548,IXI,IXI631,41.3,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI631-HH-2651-T1.nii.gz +549,IXI,IXI632,56.44,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI632-HH-2652-T1.nii.gz +550,IXI,IXI633,36.71,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI633-HH-2689-T1.nii.gz +551,IXI,IXI634,34.06,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI634-HH-2690-T1.nii.gz +552,IXI,IXI635,25.53,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI635-HH-2691-T1.nii.gz +553,IXI,IXI636,43.16,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI636-HH-2733-T1.nii.gz +554,IXI,IXI639,86.2,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI639-Guys-1088-T1.nii.gz +555,IXI,IXI640,80.8,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI640-Guys-1106-T1.nii.gz +556,IXI,IXI641,68.12,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI641-Guys-1105-T1.nii.gz +557,IXI,IXI642,57.07,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI642-Guys-1104-T1.nii.gz +558,IXI,IXI644,56.87,test,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI644-Guys-1121-T1.nii.gz +559,IXI,IXI646,71.21,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI646-HH-2653-T1.nii.gz +560,IXI,IXI648,47.72,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI648-Guys-1107-T1.nii.gz +561,IXI,IXI651,50.4,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI651-Guys-1118-T1.nii.gz +562,IXI,IXI652,42.99,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI652-Guys-1116-T1.nii.gz +563,IXI,IXI653,46.22,train,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI653-Guys-1122-T1.nii.gz +564,IXI,IXI662,41.74,dev,/home/nafiu/BasicData/cse472_DL_project/ixi_storage/IXI-T1/IXI662-Guys-1120-T1.nii.gz +565,FCON1000,fcon1000AnnArbor_sub00306,68.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub00306.nii.gz +566,FCON1000,fcon1000AnnArbor_sub04111,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub04111.nii.gz +567,FCON1000,fcon1000AnnArbor_sub04619,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub04619.nii.gz +568,FCON1000,fcon1000AnnArbor_sub05580,77.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub05580.nii.gz +569,FCON1000,fcon1000AnnArbor_sub07921,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub07921.nii.gz +570,FCON1000,fcon1000AnnArbor_sub11043,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub11043.nii.gz +571,FCON1000,fcon1000AnnArbor_sub13636,29.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub13636.nii.gz +572,FCON1000,fcon1000AnnArbor_sub13959,31.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub13959.nii.gz +573,FCON1000,fcon1000AnnArbor_sub15846,70.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub15846.nii.gz +574,FCON1000,fcon1000AnnArbor_sub16960,13.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub16960.nii.gz +575,FCON1000,fcon1000AnnArbor_sub18546,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub18546.nii.gz +576,FCON1000,fcon1000AnnArbor_sub18698,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub18698.nii.gz +577,FCON1000,fcon1000AnnArbor_sub20317,15.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub20317.nii.gz +578,FCON1000,fcon1000AnnArbor_sub26099,73.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub26099.nii.gz +579,FCON1000,fcon1000AnnArbor_sub28433,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub28433.nii.gz +580,FCON1000,fcon1000AnnArbor_sub30250,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub30250.nii.gz +581,FCON1000,fcon1000AnnArbor_sub30421,17.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub30421.nii.gz +582,FCON1000,fcon1000AnnArbor_sub33437,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub33437.nii.gz +583,FCON1000,fcon1000AnnArbor_sub34781,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub34781.nii.gz +584,FCON1000,fcon1000AnnArbor_sub38614,14.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub38614.nii.gz +585,FCON1000,fcon1000AnnArbor_sub39635,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub39635.nii.gz +586,FCON1000,fcon1000AnnArbor_sub39923,70.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub39923.nii.gz +587,FCON1000,fcon1000AnnArbor_sub42616,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub42616.nii.gz +588,FCON1000,fcon1000AnnArbor_sub43409,71.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub43409.nii.gz +589,FCON1000,fcon1000AnnArbor_sub45569,63.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub45569.nii.gz +590,FCON1000,fcon1000AnnArbor_sub45660,16.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub45660.nii.gz +591,FCON1000,fcon1000AnnArbor_sub46727,13.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub46727.nii.gz +592,FCON1000,fcon1000AnnArbor_sub47191,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub47191.nii.gz +593,FCON1000,fcon1000AnnArbor_sub47659,33.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub47659.nii.gz +594,FCON1000,fcon1000AnnArbor_sub49687,13.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub49687.nii.gz +595,FCON1000,fcon1000AnnArbor_sub50859,79.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub50859.nii.gz +596,FCON1000,fcon1000AnnArbor_sub51248,40.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub51248.nii.gz +597,FCON1000,fcon1000AnnArbor_sub53269,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub53269.nii.gz +598,FCON1000,fcon1000AnnArbor_sub53959,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub53959.nii.gz +599,FCON1000,fcon1000AnnArbor_sub56028,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub56028.nii.gz +600,FCON1000,fcon1000AnnArbor_sub56686,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub56686.nii.gz +601,FCON1000,fcon1000AnnArbor_sub57025,68.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub57025.nii.gz +602,FCON1000,fcon1000AnnArbor_sub57196,77.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub57196.nii.gz +603,FCON1000,fcon1000AnnArbor_sub59573,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub59573.nii.gz +604,FCON1000,fcon1000AnnArbor_sub62819,65.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub62819.nii.gz +605,FCON1000,fcon1000AnnArbor_sub64831,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub64831.nii.gz +606,FCON1000,fcon1000AnnArbor_sub64969,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub64969.nii.gz +607,FCON1000,fcon1000AnnArbor_sub66506,78.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub66506.nii.gz +608,FCON1000,fcon1000AnnArbor_sub70106,17.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub70106.nii.gz +609,FCON1000,fcon1000AnnArbor_sub72215,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub72215.nii.gz +610,FCON1000,fcon1000AnnArbor_sub72416,80.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub72416.nii.gz +611,FCON1000,fcon1000AnnArbor_sub73168,78.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub73168.nii.gz +612,FCON1000,fcon1000AnnArbor_sub73812,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub73812.nii.gz +613,FCON1000,fcon1000AnnArbor_sub75922,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub75922.nii.gz +614,FCON1000,fcon1000AnnArbor_sub78151,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub78151.nii.gz +615,FCON1000,fcon1000AnnArbor_sub82334,14.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub82334.nii.gz +616,FCON1000,fcon1000AnnArbor_sub85257,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub85257.nii.gz +617,FCON1000,fcon1000AnnArbor_sub86367,15.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub86367.nii.gz +618,FCON1000,fcon1000AnnArbor_sub87745,14.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub87745.nii.gz +619,FCON1000,fcon1000AnnArbor_sub90127,77.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub90127.nii.gz +620,FCON1000,fcon1000AnnArbor_sub90950,66.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub90950.nii.gz +621,FCON1000,fcon1000AnnArbor_sub96621,15.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub96621.nii.gz +622,FCON1000,fcon1000AnnArbor_sub97518,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub97518.nii.gz +623,FCON1000,fcon1000AnnArbor_sub98007,66.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub98007.nii.gz +624,FCON1000,fcon1000AnnArbor_sub99692,66.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/AnnArbor_sub99692.nii.gz +625,FCON1000,fcon1000Atlanta_sub00354,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub00354.nii.gz +626,FCON1000,fcon1000Atlanta_sub00368,28.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub00368.nii.gz +627,FCON1000,fcon1000Atlanta_sub06870,57.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub06870.nii.gz +628,FCON1000,fcon1000Atlanta_sub07145,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub07145.nii.gz +629,FCON1000,fcon1000Atlanta_sub15817,31.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub15817.nii.gz +630,FCON1000,fcon1000Atlanta_sub16563,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub16563.nii.gz +631,FCON1000,fcon1000Atlanta_sub18219,33.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub18219.nii.gz +632,FCON1000,fcon1000Atlanta_sub18702,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub18702.nii.gz +633,FCON1000,fcon1000Atlanta_sub24972,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub24972.nii.gz +634,FCON1000,fcon1000Atlanta_sub26938,31.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub26938.nii.gz +635,FCON1000,fcon1000Atlanta_sub32093,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub32093.nii.gz +636,FCON1000,fcon1000Atlanta_sub49816,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub49816.nii.gz +637,FCON1000,fcon1000Atlanta_sub52783,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub52783.nii.gz +638,FCON1000,fcon1000Atlanta_sub53122,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub53122.nii.gz +639,FCON1000,fcon1000Atlanta_sub55652,25.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub55652.nii.gz +640,FCON1000,fcon1000Atlanta_sub58250,54.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub58250.nii.gz +641,FCON1000,fcon1000Atlanta_sub59806,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub59806.nii.gz +642,FCON1000,fcon1000Atlanta_sub60499,29.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub60499.nii.gz +643,FCON1000,fcon1000Atlanta_sub61442,29.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub61442.nii.gz +644,FCON1000,fcon1000Atlanta_sub61902,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub61902.nii.gz +645,FCON1000,fcon1000Atlanta_sub71337,27.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub71337.nii.gz +646,FCON1000,fcon1000Atlanta_sub72096,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub72096.nii.gz +647,FCON1000,fcon1000Atlanta_sub72971,30.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub72971.nii.gz +648,FCON1000,fcon1000Atlanta_sub75153,32.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub75153.nii.gz +649,FCON1000,fcon1000Atlanta_sub76280,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub76280.nii.gz +650,FCON1000,fcon1000Atlanta_sub81596,53.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub81596.nii.gz +651,FCON1000,fcon1000Atlanta_sub86323,31.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub86323.nii.gz +652,FCON1000,fcon1000Atlanta_sub91049,48.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Atlanta_sub91049.nii.gz +653,FCON1000,fcon1000Baltimore_sub17017,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub17017.nii.gz +654,FCON1000,fcon1000Baltimore_sub19738,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub19738.nii.gz +655,FCON1000,fcon1000Baltimore_sub23750,37.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub23750.nii.gz +656,FCON1000,fcon1000Baltimore_sub23927,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub23927.nii.gz +657,FCON1000,fcon1000Baltimore_sub29158,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub29158.nii.gz +658,FCON1000,fcon1000Baltimore_sub30072,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub30072.nii.gz +659,FCON1000,fcon1000Baltimore_sub31837,34.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub31837.nii.gz +660,FCON1000,fcon1000Baltimore_sub37548,30.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub37548.nii.gz +661,FCON1000,fcon1000Baltimore_sub52358,40.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub52358.nii.gz +662,FCON1000,fcon1000Baltimore_sub54257,29.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub54257.nii.gz +663,FCON1000,fcon1000Baltimore_sub54329,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub54329.nii.gz +664,FCON1000,fcon1000Baltimore_sub73823,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub73823.nii.gz +665,FCON1000,fcon1000Baltimore_sub76160,34.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub76160.nii.gz +666,FCON1000,fcon1000Baltimore_sub77572,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub77572.nii.gz +667,FCON1000,fcon1000Baltimore_sub80221,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub80221.nii.gz +668,FCON1000,fcon1000Baltimore_sub81887,32.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub81887.nii.gz +669,FCON1000,fcon1000Baltimore_sub85922,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub85922.nii.gz +670,FCON1000,fcon1000Baltimore_sub86414,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub86414.nii.gz +671,FCON1000,fcon1000Baltimore_sub90658,32.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub90658.nii.gz +672,FCON1000,fcon1000Baltimore_sub90893,39.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub90893.nii.gz +673,FCON1000,fcon1000Baltimore_sub91622,33.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub91622.nii.gz +674,FCON1000,fcon1000Baltimore_sub94042,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub94042.nii.gz +675,FCON1000,fcon1000Baltimore_sub96234,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Baltimore_sub96234.nii.gz +676,FCON1000,fcon1000Bangor_sub00031,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub00031.nii.gz +677,FCON1000,fcon1000Bangor_sub01903,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub01903.nii.gz +678,FCON1000,fcon1000Bangor_sub03557,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub03557.nii.gz +679,FCON1000,fcon1000Bangor_sub04097,36.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub04097.nii.gz +680,FCON1000,fcon1000Bangor_sub14388,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub14388.nii.gz +681,FCON1000,fcon1000Bangor_sub27519,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub27519.nii.gz +682,FCON1000,fcon1000Bangor_sub36736,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub36736.nii.gz +683,FCON1000,fcon1000Bangor_sub46870,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub46870.nii.gz +684,FCON1000,fcon1000Bangor_sub48632,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub48632.nii.gz +685,FCON1000,fcon1000Bangor_sub61418,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub61418.nii.gz +686,FCON1000,fcon1000Bangor_sub61908,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub61908.nii.gz +687,FCON1000,fcon1000Bangor_sub63767,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub63767.nii.gz +688,FCON1000,fcon1000Bangor_sub66585,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub66585.nii.gz +689,FCON1000,fcon1000Bangor_sub68050,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub68050.nii.gz +690,FCON1000,fcon1000Bangor_sub73082,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub73082.nii.gz +691,FCON1000,fcon1000Bangor_sub77520,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub77520.nii.gz +692,FCON1000,fcon1000Bangor_sub81464,38.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub81464.nii.gz +693,FCON1000,fcon1000Bangor_sub82625,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub82625.nii.gz +694,FCON1000,fcon1000Bangor_sub87568,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub87568.nii.gz +695,FCON1000,fcon1000Bangor_sub91556,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Bangor_sub91556.nii.gz +696,FCON1000,fcon1000Beijing_sub00440,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub00440.nii.gz +697,FCON1000,fcon1000Beijing_sub01018,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub01018.nii.gz +698,FCON1000,fcon1000Beijing_sub01244,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub01244.nii.gz +699,FCON1000,fcon1000Beijing_sub02403,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub02403.nii.gz +700,FCON1000,fcon1000Beijing_sub04050,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub04050.nii.gz +701,FCON1000,fcon1000Beijing_sub04191,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub04191.nii.gz +702,FCON1000,fcon1000Beijing_sub05267,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub05267.nii.gz +703,FCON1000,fcon1000Beijing_sub06880,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub06880.nii.gz +704,FCON1000,fcon1000Beijing_sub06899,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub06899.nii.gz +705,FCON1000,fcon1000Beijing_sub07144,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub07144.nii.gz +706,FCON1000,fcon1000Beijing_sub07716,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub07716.nii.gz +707,FCON1000,fcon1000Beijing_sub07717,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub07717.nii.gz +708,FCON1000,fcon1000Beijing_sub08001,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub08001.nii.gz +709,FCON1000,fcon1000Beijing_sub08251,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub08251.nii.gz +710,FCON1000,fcon1000Beijing_sub08455,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub08455.nii.gz +711,FCON1000,fcon1000Beijing_sub08816,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub08816.nii.gz +712,FCON1000,fcon1000Beijing_sub08992,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub08992.nii.gz +713,FCON1000,fcon1000Beijing_sub10186,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub10186.nii.gz +714,FCON1000,fcon1000Beijing_sub10277,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub10277.nii.gz +715,FCON1000,fcon1000Beijing_sub10869,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub10869.nii.gz +716,FCON1000,fcon1000Beijing_sub10973,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub10973.nii.gz +717,FCON1000,fcon1000Beijing_sub11072,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub11072.nii.gz +718,FCON1000,fcon1000Beijing_sub11344,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub11344.nii.gz +719,FCON1000,fcon1000Beijing_sub12220,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub12220.nii.gz +720,FCON1000,fcon1000Beijing_sub14238,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub14238.nii.gz +721,FCON1000,fcon1000Beijing_sub15441,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub15441.nii.gz +722,FCON1000,fcon1000Beijing_sub16091,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub16091.nii.gz +723,FCON1000,fcon1000Beijing_sub16943,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub16943.nii.gz +724,FCON1000,fcon1000Beijing_sub17093,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17093.nii.gz +725,FCON1000,fcon1000Beijing_sub17159,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17159.nii.gz +726,FCON1000,fcon1000Beijing_sub17315,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17315.nii.gz +727,FCON1000,fcon1000Beijing_sub17586,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17586.nii.gz +728,FCON1000,fcon1000Beijing_sub17603,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17603.nii.gz +729,FCON1000,fcon1000Beijing_sub17642,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17642.nii.gz +730,FCON1000,fcon1000Beijing_sub17688,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub17688.nii.gz +731,FCON1000,fcon1000Beijing_sub18326,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub18326.nii.gz +732,FCON1000,fcon1000Beijing_sub18758,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub18758.nii.gz +733,FCON1000,fcon1000Beijing_sub18960,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub18960.nii.gz +734,FCON1000,fcon1000Beijing_sub19642,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub19642.nii.gz +735,FCON1000,fcon1000Beijing_sub19974,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub19974.nii.gz +736,FCON1000,fcon1000Beijing_sub20127,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub20127.nii.gz +737,FCON1000,fcon1000Beijing_sub20246,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub20246.nii.gz +738,FCON1000,fcon1000Beijing_sub20765,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub20765.nii.gz +739,FCON1000,fcon1000Beijing_sub20948,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub20948.nii.gz +740,FCON1000,fcon1000Beijing_sub21115,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub21115.nii.gz +741,FCON1000,fcon1000Beijing_sub22201,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub22201.nii.gz +742,FCON1000,fcon1000Beijing_sub22595,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub22595.nii.gz +743,FCON1000,fcon1000Beijing_sub22661,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub22661.nii.gz +744,FCON1000,fcon1000Beijing_sub22715,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub22715.nii.gz +745,FCON1000,fcon1000Beijing_sub22890,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub22890.nii.gz +746,FCON1000,fcon1000Beijing_sub26713,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub26713.nii.gz +747,FCON1000,fcon1000Beijing_sub28206,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28206.nii.gz +748,FCON1000,fcon1000Beijing_sub28403,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28403.nii.gz +749,FCON1000,fcon1000Beijing_sub28698,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28698.nii.gz +750,FCON1000,fcon1000Beijing_sub28792,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28792.nii.gz +751,FCON1000,fcon1000Beijing_sub28801,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28801.nii.gz +752,FCON1000,fcon1000Beijing_sub28907,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28907.nii.gz +753,FCON1000,fcon1000Beijing_sub28965,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub28965.nii.gz +754,FCON1000,fcon1000Beijing_sub29590,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub29590.nii.gz +755,FCON1000,fcon1000Beijing_sub29785,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub29785.nii.gz +756,FCON1000,fcon1000Beijing_sub30272,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub30272.nii.gz +757,FCON1000,fcon1000Beijing_sub30310,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub30310.nii.gz +758,FCON1000,fcon1000Beijing_sub30556,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub30556.nii.gz +759,FCON1000,fcon1000Beijing_sub30616,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub30616.nii.gz +760,FCON1000,fcon1000Beijing_sub30988,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub30988.nii.gz +761,FCON1000,fcon1000Beijing_sub31058,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub31058.nii.gz +762,FCON1000,fcon1000Beijing_sub31729,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub31729.nii.gz +763,FCON1000,fcon1000Beijing_sub32517,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub32517.nii.gz +764,FCON1000,fcon1000Beijing_sub32587,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub32587.nii.gz +765,FCON1000,fcon1000Beijing_sub33747,26.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub33747.nii.gz +766,FCON1000,fcon1000Beijing_sub33943,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub33943.nii.gz +767,FCON1000,fcon1000Beijing_sub33991,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub33991.nii.gz +768,FCON1000,fcon1000Beijing_sub34895,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub34895.nii.gz +769,FCON1000,fcon1000Beijing_sub34943,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub34943.nii.gz +770,FCON1000,fcon1000Beijing_sub35309,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub35309.nii.gz +771,FCON1000,fcon1000Beijing_sub35776,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub35776.nii.gz +772,FCON1000,fcon1000Beijing_sub35806,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub35806.nii.gz +773,FCON1000,fcon1000Beijing_sub36580,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub36580.nii.gz +774,FCON1000,fcon1000Beijing_sub36942,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub36942.nii.gz +775,FCON1000,fcon1000Beijing_sub37602,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub37602.nii.gz +776,FCON1000,fcon1000Beijing_sub38602,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub38602.nii.gz +777,FCON1000,fcon1000Beijing_sub39725,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub39725.nii.gz +778,FCON1000,fcon1000Beijing_sub40037,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub40037.nii.gz +779,FCON1000,fcon1000Beijing_sub40427,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub40427.nii.gz +780,FCON1000,fcon1000Beijing_sub41170,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub41170.nii.gz +781,FCON1000,fcon1000Beijing_sub41621,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub41621.nii.gz +782,FCON1000,fcon1000Beijing_sub42512,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub42512.nii.gz +783,FCON1000,fcon1000Beijing_sub42555,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub42555.nii.gz +784,FCON1000,fcon1000Beijing_sub42843,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub42843.nii.gz +785,FCON1000,fcon1000Beijing_sub43290,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub43290.nii.gz +786,FCON1000,fcon1000Beijing_sub44573,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub44573.nii.gz +787,FCON1000,fcon1000Beijing_sub45552,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub45552.nii.gz +788,FCON1000,fcon1000Beijing_sub46058,25.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub46058.nii.gz +789,FCON1000,fcon1000Beijing_sub46259,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub46259.nii.gz +790,FCON1000,fcon1000Beijing_sub46541,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub46541.nii.gz +791,FCON1000,fcon1000Beijing_sub48501,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub48501.nii.gz +792,FCON1000,fcon1000Beijing_sub48563,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub48563.nii.gz +793,FCON1000,fcon1000Beijing_sub48676,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub48676.nii.gz +794,FCON1000,fcon1000Beijing_sub49782,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub49782.nii.gz +795,FCON1000,fcon1000Beijing_sub50498,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub50498.nii.gz +796,FCON1000,fcon1000Beijing_sub50873,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub50873.nii.gz +797,FCON1000,fcon1000Beijing_sub50972,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub50972.nii.gz +798,FCON1000,fcon1000Beijing_sub50985,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub50985.nii.gz +799,FCON1000,fcon1000Beijing_sub51015,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub51015.nii.gz +800,FCON1000,fcon1000Beijing_sub51586,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub51586.nii.gz +801,FCON1000,fcon1000Beijing_sub52044,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub52044.nii.gz +802,FCON1000,fcon1000Beijing_sub52259,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub52259.nii.gz +803,FCON1000,fcon1000Beijing_sub53572,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub53572.nii.gz +804,FCON1000,fcon1000Beijing_sub53998,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub53998.nii.gz +805,FCON1000,fcon1000Beijing_sub54890,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub54890.nii.gz +806,FCON1000,fcon1000Beijing_sub55301,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub55301.nii.gz +807,FCON1000,fcon1000Beijing_sub55541,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub55541.nii.gz +808,FCON1000,fcon1000Beijing_sub55736,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub55736.nii.gz +809,FCON1000,fcon1000Beijing_sub55856,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub55856.nii.gz +810,FCON1000,fcon1000Beijing_sub56136,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub56136.nii.gz +811,FCON1000,fcon1000Beijing_sub56659,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub56659.nii.gz +812,FCON1000,fcon1000Beijing_sub56703,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub56703.nii.gz +813,FCON1000,fcon1000Beijing_sub56757,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub56757.nii.gz +814,FCON1000,fcon1000Beijing_sub58029,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub58029.nii.gz +815,FCON1000,fcon1000Beijing_sub58332,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub58332.nii.gz +816,FCON1000,fcon1000Beijing_sub58614,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub58614.nii.gz +817,FCON1000,fcon1000Beijing_sub59347,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub59347.nii.gz +818,FCON1000,fcon1000Beijing_sub59448,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub59448.nii.gz +819,FCON1000,fcon1000Beijing_sub61961,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub61961.nii.gz +820,FCON1000,fcon1000Beijing_sub62083,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub62083.nii.gz +821,FCON1000,fcon1000Beijing_sub62438,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub62438.nii.gz +822,FCON1000,fcon1000Beijing_sub62843,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub62843.nii.gz +823,FCON1000,fcon1000Beijing_sub62966,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub62966.nii.gz +824,FCON1000,fcon1000Beijing_sub64923,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub64923.nii.gz +825,FCON1000,fcon1000Beijing_sub65467,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub65467.nii.gz +826,FCON1000,fcon1000Beijing_sub65659,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub65659.nii.gz +827,FCON1000,fcon1000Beijing_sub66158,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub66158.nii.gz +828,FCON1000,fcon1000Beijing_sub66528,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub66528.nii.gz +829,FCON1000,fcon1000Beijing_sub66781,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub66781.nii.gz +830,FCON1000,fcon1000Beijing_sub66889,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub66889.nii.gz +831,FCON1000,fcon1000Beijing_sub67435,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub67435.nii.gz +832,FCON1000,fcon1000Beijing_sub67844,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub67844.nii.gz +833,FCON1000,fcon1000Beijing_sub68012,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub68012.nii.gz +834,FCON1000,fcon1000Beijing_sub68597,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub68597.nii.gz +835,FCON1000,fcon1000Beijing_sub69518,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub69518.nii.gz +836,FCON1000,fcon1000Beijing_sub69696,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub69696.nii.gz +837,FCON1000,fcon1000Beijing_sub71693,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub71693.nii.gz +838,FCON1000,fcon1000Beijing_sub72654,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub72654.nii.gz +839,FCON1000,fcon1000Beijing_sub72678,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub72678.nii.gz +840,FCON1000,fcon1000Beijing_sub73098,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub73098.nii.gz +841,FCON1000,fcon1000Beijing_sub73245,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub73245.nii.gz +842,FCON1000,fcon1000Beijing_sub73279,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub73279.nii.gz +843,FCON1000,fcon1000Beijing_sub73421,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub73421.nii.gz +844,FCON1000,fcon1000Beijing_sub74386,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub74386.nii.gz +845,FCON1000,fcon1000Beijing_sub74587,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub74587.nii.gz +846,FCON1000,fcon1000Beijing_sub75878,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub75878.nii.gz +847,FCON1000,fcon1000Beijing_sub76377,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub76377.nii.gz +848,FCON1000,fcon1000Beijing_sub77440,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub77440.nii.gz +849,FCON1000,fcon1000Beijing_sub80163,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub80163.nii.gz +850,FCON1000,fcon1000Beijing_sub80551,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub80551.nii.gz +851,FCON1000,fcon1000Beijing_sub80569,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub80569.nii.gz +852,FCON1000,fcon1000Beijing_sub80927,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub80927.nii.gz +853,FCON1000,fcon1000Beijing_sub81062,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub81062.nii.gz +854,FCON1000,fcon1000Beijing_sub81074,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub81074.nii.gz +855,FCON1000,fcon1000Beijing_sub82352,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub82352.nii.gz +856,FCON1000,fcon1000Beijing_sub82426,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub82426.nii.gz +857,FCON1000,fcon1000Beijing_sub82714,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub82714.nii.gz +858,FCON1000,fcon1000Beijing_sub82826,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub82826.nii.gz +859,FCON1000,fcon1000Beijing_sub82980,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub82980.nii.gz +860,FCON1000,fcon1000Beijing_sub83430,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub83430.nii.gz +861,FCON1000,fcon1000Beijing_sub83624,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub83624.nii.gz +862,FCON1000,fcon1000Beijing_sub83728,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub83728.nii.gz +863,FCON1000,fcon1000Beijing_sub85030,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub85030.nii.gz +864,FCON1000,fcon1000Beijing_sub85543,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub85543.nii.gz +865,FCON1000,fcon1000Beijing_sub85818,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub85818.nii.gz +866,FCON1000,fcon1000Beijing_sub86114,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub86114.nii.gz +867,FCON1000,fcon1000Beijing_sub87089,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub87089.nii.gz +868,FCON1000,fcon1000Beijing_sub87776,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub87776.nii.gz +869,FCON1000,fcon1000Beijing_sub88306,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub88306.nii.gz +870,FCON1000,fcon1000Beijing_sub88947,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub88947.nii.gz +871,FCON1000,fcon1000Beijing_sub89088,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub89088.nii.gz +872,FCON1000,fcon1000Beijing_sub89238,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub89238.nii.gz +873,FCON1000,fcon1000Beijing_sub89592,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub89592.nii.gz +874,FCON1000,fcon1000Beijing_sub89742,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub89742.nii.gz +875,FCON1000,fcon1000Beijing_sub89941,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub89941.nii.gz +876,FCON1000,fcon1000Beijing_sub91145,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub91145.nii.gz +877,FCON1000,fcon1000Beijing_sub91399,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub91399.nii.gz +878,FCON1000,fcon1000Beijing_sub91952,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub91952.nii.gz +879,FCON1000,fcon1000Beijing_sub92430,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92430.nii.gz +880,FCON1000,fcon1000Beijing_sub92490,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92490.nii.gz +881,FCON1000,fcon1000Beijing_sub92544,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92544.nii.gz +882,FCON1000,fcon1000Beijing_sub92602,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92602.nii.gz +883,FCON1000,fcon1000Beijing_sub92799,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92799.nii.gz +884,FCON1000,fcon1000Beijing_sub92859,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub92859.nii.gz +885,FCON1000,fcon1000Beijing_sub93689,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub93689.nii.gz +886,FCON1000,fcon1000Beijing_sub93856,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub93856.nii.gz +887,FCON1000,fcon1000Beijing_sub94536,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub94536.nii.gz +888,FCON1000,fcon1000Beijing_sub95575,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub95575.nii.gz +889,FCON1000,fcon1000Beijing_sub95755,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub95755.nii.gz +890,FCON1000,fcon1000Beijing_sub96163,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub96163.nii.gz +891,FCON1000,fcon1000Beijing_sub97442,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub97442.nii.gz +892,FCON1000,fcon1000Beijing_sub98353,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub98353.nii.gz +893,FCON1000,fcon1000Beijing_sub98617,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Beijing_sub98617.nii.gz +894,FCON1000,fcon1000Berlin_sub06204,34.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub06204.nii.gz +895,FCON1000,fcon1000Berlin_sub06716,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub06716.nii.gz +896,FCON1000,fcon1000Berlin_sub12855,33.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub12855.nii.gz +897,FCON1000,fcon1000Berlin_sub18913,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub18913.nii.gz +898,FCON1000,fcon1000Berlin_sub23506,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub23506.nii.gz +899,FCON1000,fcon1000Berlin_sub27536,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub27536.nii.gz +900,FCON1000,fcon1000Berlin_sub27711,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub27711.nii.gz +901,FCON1000,fcon1000Berlin_sub27797,31.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub27797.nii.gz +902,FCON1000,fcon1000Berlin_sub28092,26.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub28092.nii.gz +903,FCON1000,fcon1000Berlin_sub33248,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub33248.nii.gz +904,FCON1000,fcon1000Berlin_sub38279,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub38279.nii.gz +905,FCON1000,fcon1000Berlin_sub40143,34.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub40143.nii.gz +906,FCON1000,fcon1000Berlin_sub47066,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub47066.nii.gz +907,FCON1000,fcon1000Berlin_sub47791,31.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub47791.nii.gz +908,FCON1000,fcon1000Berlin_sub49134,44.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub49134.nii.gz +909,FCON1000,fcon1000Berlin_sub54976,37.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub54976.nii.gz +910,FCON1000,fcon1000Berlin_sub57028,37.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub57028.nii.gz +911,FCON1000,fcon1000Berlin_sub67166,32.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub67166.nii.gz +912,FCON1000,fcon1000Berlin_sub75506,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub75506.nii.gz +913,FCON1000,fcon1000Berlin_sub77281,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub77281.nii.gz +914,FCON1000,fcon1000Berlin_sub85681,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub85681.nii.gz +915,FCON1000,fcon1000Berlin_sub86111,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub86111.nii.gz +916,FCON1000,fcon1000Berlin_sub91116,39.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub91116.nii.gz +917,FCON1000,fcon1000Berlin_sub91966,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub91966.nii.gz +918,FCON1000,fcon1000Berlin_sub95068,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub95068.nii.gz +919,FCON1000,fcon1000Berlin_sub97162,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Berlin_sub97162.nii.gz +920,FCON1000,fcon1000Cambridge_sub00156,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub00156.nii.gz +921,FCON1000,fcon1000Cambridge_sub00294,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub00294.nii.gz +922,FCON1000,fcon1000Cambridge_sub01361,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub01361.nii.gz +923,FCON1000,fcon1000Cambridge_sub02591,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub02591.nii.gz +924,FCON1000,fcon1000Cambridge_sub02953,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub02953.nii.gz +925,FCON1000,fcon1000Cambridge_sub04187,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub04187.nii.gz +926,FCON1000,fcon1000Cambridge_sub04270,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub04270.nii.gz +927,FCON1000,fcon1000Cambridge_sub04491,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub04491.nii.gz +928,FCON1000,fcon1000Cambridge_sub04665,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub04665.nii.gz +929,FCON1000,fcon1000Cambridge_sub05306,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub05306.nii.gz +930,FCON1000,fcon1000Cambridge_sub05453,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub05453.nii.gz +931,FCON1000,fcon1000Cambridge_sub06037,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub06037.nii.gz +932,FCON1000,fcon1000Cambridge_sub06272,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub06272.nii.gz +933,FCON1000,fcon1000Cambridge_sub06987,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub06987.nii.gz +934,FCON1000,fcon1000Cambridge_sub07413,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub07413.nii.gz +935,FCON1000,fcon1000Cambridge_sub07798,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub07798.nii.gz +936,FCON1000,fcon1000Cambridge_sub07902,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub07902.nii.gz +937,FCON1000,fcon1000Cambridge_sub08204,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub08204.nii.gz +938,FCON1000,fcon1000Cambridge_sub08588,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub08588.nii.gz +939,FCON1000,fcon1000Cambridge_sub08723,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub08723.nii.gz +940,FCON1000,fcon1000Cambridge_sub08947,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub08947.nii.gz +941,FCON1000,fcon1000Cambridge_sub09015,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub09015.nii.gz +942,FCON1000,fcon1000Cambridge_sub09397,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub09397.nii.gz +943,FCON1000,fcon1000Cambridge_sub09633,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub09633.nii.gz +944,FCON1000,fcon1000Cambridge_sub10268,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub10268.nii.gz +945,FCON1000,fcon1000Cambridge_sub10619,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub10619.nii.gz +946,FCON1000,fcon1000Cambridge_sub11388,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub11388.nii.gz +947,FCON1000,fcon1000Cambridge_sub12346,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub12346.nii.gz +948,FCON1000,fcon1000Cambridge_sub13093,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub13093.nii.gz +949,FCON1000,fcon1000Cambridge_sub13187,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub13187.nii.gz +950,FCON1000,fcon1000Cambridge_sub13216,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub13216.nii.gz +951,FCON1000,fcon1000Cambridge_sub13902,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub13902.nii.gz +952,FCON1000,fcon1000Cambridge_sub14183,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub14183.nii.gz +953,FCON1000,fcon1000Cambridge_sub14194,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub14194.nii.gz +954,FCON1000,fcon1000Cambridge_sub14278,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub14278.nii.gz +955,FCON1000,fcon1000Cambridge_sub15172,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub15172.nii.gz +956,FCON1000,fcon1000Cambridge_sub15258,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub15258.nii.gz +957,FCON1000,fcon1000Cambridge_sub15432,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub15432.nii.gz +958,FCON1000,fcon1000Cambridge_sub15905,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub15905.nii.gz +959,FCON1000,fcon1000Cambridge_sub16122,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub16122.nii.gz +960,FCON1000,fcon1000Cambridge_sub16390,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub16390.nii.gz +961,FCON1000,fcon1000Cambridge_sub16846,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub16846.nii.gz +962,FCON1000,fcon1000Cambridge_sub17584,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub17584.nii.gz +963,FCON1000,fcon1000Cambridge_sub17737,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub17737.nii.gz +964,FCON1000,fcon1000Cambridge_sub17772,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub17772.nii.gz +965,FCON1000,fcon1000Cambridge_sub18295,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub18295.nii.gz +966,FCON1000,fcon1000Cambridge_sub18449,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub18449.nii.gz +967,FCON1000,fcon1000Cambridge_sub19717,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub19717.nii.gz +968,FCON1000,fcon1000Cambridge_sub20389,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub20389.nii.gz +969,FCON1000,fcon1000Cambridge_sub20543,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub20543.nii.gz +970,FCON1000,fcon1000Cambridge_sub20563,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub20563.nii.gz +971,FCON1000,fcon1000Cambridge_sub21755,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub21755.nii.gz +972,FCON1000,fcon1000Cambridge_sub23780,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub23780.nii.gz +973,FCON1000,fcon1000Cambridge_sub23869,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub23869.nii.gz +974,FCON1000,fcon1000Cambridge_sub24670,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub24670.nii.gz +975,FCON1000,fcon1000Cambridge_sub24757,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub24757.nii.gz +976,FCON1000,fcon1000Cambridge_sub25044,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub25044.nii.gz +977,FCON1000,fcon1000Cambridge_sub25058,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub25058.nii.gz +978,FCON1000,fcon1000Cambridge_sub25099,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub25099.nii.gz +979,FCON1000,fcon1000Cambridge_sub26348,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub26348.nii.gz +980,FCON1000,fcon1000Cambridge_sub27065,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub27065.nii.gz +981,FCON1000,fcon1000Cambridge_sub27230,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub27230.nii.gz +982,FCON1000,fcon1000Cambridge_sub27613,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub27613.nii.gz +983,FCON1000,fcon1000Cambridge_sub27796,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub27796.nii.gz +984,FCON1000,fcon1000Cambridge_sub29044,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub29044.nii.gz +985,FCON1000,fcon1000Cambridge_sub29425,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub29425.nii.gz +986,FCON1000,fcon1000Cambridge_sub29800,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub29800.nii.gz +987,FCON1000,fcon1000Cambridge_sub31522,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub31522.nii.gz +988,FCON1000,fcon1000Cambridge_sub34586,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub34586.nii.gz +989,FCON1000,fcon1000Cambridge_sub34741,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub34741.nii.gz +990,FCON1000,fcon1000Cambridge_sub35430,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub35430.nii.gz +991,FCON1000,fcon1000Cambridge_sub35512,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub35512.nii.gz +992,FCON1000,fcon1000Cambridge_sub37374,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub37374.nii.gz +993,FCON1000,fcon1000Cambridge_sub39053,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub39053.nii.gz +994,FCON1000,fcon1000Cambridge_sub39065,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub39065.nii.gz +995,FCON1000,fcon1000Cambridge_sub39142,25.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub39142.nii.gz +996,FCON1000,fcon1000Cambridge_sub39737,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub39737.nii.gz +997,FCON1000,fcon1000Cambridge_sub40635,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub40635.nii.gz +998,FCON1000,fcon1000Cambridge_sub41567,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub41567.nii.gz +999,FCON1000,fcon1000Cambridge_sub41773,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub41773.nii.gz +1000,FCON1000,fcon1000Cambridge_sub41814,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub41814.nii.gz +1001,FCON1000,fcon1000Cambridge_sub42146,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub42146.nii.gz +1002,FCON1000,fcon1000Cambridge_sub42253,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub42253.nii.gz +1003,FCON1000,fcon1000Cambridge_sub43304,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub43304.nii.gz +1004,FCON1000,fcon1000Cambridge_sub43358,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub43358.nii.gz +1005,FCON1000,fcon1000Cambridge_sub45344,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub45344.nii.gz +1006,FCON1000,fcon1000Cambridge_sub45354,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub45354.nii.gz +1007,FCON1000,fcon1000Cambridge_sub45604,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub45604.nii.gz +1008,FCON1000,fcon1000Cambridge_sub47162,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub47162.nii.gz +1009,FCON1000,fcon1000Cambridge_sub47231,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub47231.nii.gz +1010,FCON1000,fcon1000Cambridge_sub47278,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub47278.nii.gz +1011,FCON1000,fcon1000Cambridge_sub47498,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub47498.nii.gz +1012,FCON1000,fcon1000Cambridge_sub49259,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub49259.nii.gz +1013,FCON1000,fcon1000Cambridge_sub49998,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub49998.nii.gz +1014,FCON1000,fcon1000Cambridge_sub50272,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub50272.nii.gz +1015,FCON1000,fcon1000Cambridge_sub50454,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub50454.nii.gz +1016,FCON1000,fcon1000Cambridge_sub50953,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub50953.nii.gz +1017,FCON1000,fcon1000Cambridge_sub51050,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub51050.nii.gz +1018,FCON1000,fcon1000Cambridge_sub51172,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub51172.nii.gz +1019,FCON1000,fcon1000Cambridge_sub51512,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub51512.nii.gz +1020,FCON1000,fcon1000Cambridge_sub51671,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub51671.nii.gz +1021,FCON1000,fcon1000Cambridge_sub52036,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub52036.nii.gz +1022,FCON1000,fcon1000Cambridge_sub52300,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub52300.nii.gz +1023,FCON1000,fcon1000Cambridge_sub52442,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub52442.nii.gz +1024,FCON1000,fcon1000Cambridge_sub53059,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub53059.nii.gz +1025,FCON1000,fcon1000Cambridge_sub53107,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub53107.nii.gz +1026,FCON1000,fcon1000Cambridge_sub53193,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub53193.nii.gz +1027,FCON1000,fcon1000Cambridge_sub53296,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub53296.nii.gz +1028,FCON1000,fcon1000Cambridge_sub53615,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub53615.nii.gz +1029,FCON1000,fcon1000Cambridge_sub54846,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub54846.nii.gz +1030,FCON1000,fcon1000Cambridge_sub55114,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub55114.nii.gz +1031,FCON1000,fcon1000Cambridge_sub55660,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub55660.nii.gz +1032,FCON1000,fcon1000Cambridge_sub55874,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub55874.nii.gz +1033,FCON1000,fcon1000Cambridge_sub57221,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub57221.nii.gz +1034,FCON1000,fcon1000Cambridge_sub58360,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub58360.nii.gz +1035,FCON1000,fcon1000Cambridge_sub58470,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub58470.nii.gz +1036,FCON1000,fcon1000Cambridge_sub58682,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub58682.nii.gz +1037,FCON1000,fcon1000Cambridge_sub58874,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub58874.nii.gz +1038,FCON1000,fcon1000Cambridge_sub59434,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub59434.nii.gz +1039,FCON1000,fcon1000Cambridge_sub59729,23.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub59729.nii.gz +1040,FCON1000,fcon1000Cambridge_sub60578,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub60578.nii.gz +1041,FCON1000,fcon1000Cambridge_sub60797,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub60797.nii.gz +1042,FCON1000,fcon1000Cambridge_sub61185,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub61185.nii.gz +1043,FCON1000,fcon1000Cambridge_sub61209,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub61209.nii.gz +1044,FCON1000,fcon1000Cambridge_sub61436,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub61436.nii.gz +1045,FCON1000,fcon1000Cambridge_sub61753,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub61753.nii.gz +1046,FCON1000,fcon1000Cambridge_sub62383,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub62383.nii.gz +1047,FCON1000,fcon1000Cambridge_sub62424,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub62424.nii.gz +1048,FCON1000,fcon1000Cambridge_sub62732,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub62732.nii.gz +1049,FCON1000,fcon1000Cambridge_sub62908,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub62908.nii.gz +1050,FCON1000,fcon1000Cambridge_sub63412,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub63412.nii.gz +1051,FCON1000,fcon1000Cambridge_sub63661,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub63661.nii.gz +1052,FCON1000,fcon1000Cambridge_sub64308,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub64308.nii.gz +1053,FCON1000,fcon1000Cambridge_sub64985,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub64985.nii.gz +1054,FCON1000,fcon1000Cambridge_sub65373,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub65373.nii.gz +1055,FCON1000,fcon1000Cambridge_sub65682,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub65682.nii.gz +1056,FCON1000,fcon1000Cambridge_sub66351,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub66351.nii.gz +1057,FCON1000,fcon1000Cambridge_sub67117,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub67117.nii.gz +1058,FCON1000,fcon1000Cambridge_sub68101,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub68101.nii.gz +1059,FCON1000,fcon1000Cambridge_sub68425,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub68425.nii.gz +1060,FCON1000,fcon1000Cambridge_sub69287,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub69287.nii.gz +1061,FCON1000,fcon1000Cambridge_sub69315,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub69315.nii.gz +1062,FCON1000,fcon1000Cambridge_sub69397,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub69397.nii.gz +1063,FCON1000,fcon1000Cambridge_sub71849,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub71849.nii.gz +1064,FCON1000,fcon1000Cambridge_sub72068,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub72068.nii.gz +1065,FCON1000,fcon1000Cambridge_sub73317,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub73317.nii.gz +1066,FCON1000,fcon1000Cambridge_sub73399,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub73399.nii.gz +1067,FCON1000,fcon1000Cambridge_sub73477,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub73477.nii.gz +1068,FCON1000,fcon1000Cambridge_sub76631,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub76631.nii.gz +1069,FCON1000,fcon1000Cambridge_sub76745,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub76745.nii.gz +1070,FCON1000,fcon1000Cambridge_sub77337,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub77337.nii.gz +1071,FCON1000,fcon1000Cambridge_sub77435,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub77435.nii.gz +1072,FCON1000,fcon1000Cambridge_sub77598,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub77598.nii.gz +1073,FCON1000,fcon1000Cambridge_sub77989,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub77989.nii.gz +1074,FCON1000,fcon1000Cambridge_sub78547,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub78547.nii.gz +1075,FCON1000,fcon1000Cambridge_sub78552,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub78552.nii.gz +1076,FCON1000,fcon1000Cambridge_sub78614,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub78614.nii.gz +1077,FCON1000,fcon1000Cambridge_sub80557,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub80557.nii.gz +1078,FCON1000,fcon1000Cambridge_sub81289,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub81289.nii.gz +1079,FCON1000,fcon1000Cambridge_sub81524,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub81524.nii.gz +1080,FCON1000,fcon1000Cambridge_sub81562,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub81562.nii.gz +1081,FCON1000,fcon1000Cambridge_sub82113,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub82113.nii.gz +1082,FCON1000,fcon1000Cambridge_sub82213,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub82213.nii.gz +1083,FCON1000,fcon1000Cambridge_sub82435,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub82435.nii.gz +1084,FCON1000,fcon1000Cambridge_sub83409,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub83409.nii.gz +1085,FCON1000,fcon1000Cambridge_sub83683,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub83683.nii.gz +1086,FCON1000,fcon1000Cambridge_sub84064,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub84064.nii.gz +1087,FCON1000,fcon1000Cambridge_sub84256,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub84256.nii.gz +1088,FCON1000,fcon1000Cambridge_sub84504,18.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub84504.nii.gz +1089,FCON1000,fcon1000Cambridge_sub84845,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub84845.nii.gz +1090,FCON1000,fcon1000Cambridge_sub86115,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub86115.nii.gz +1091,FCON1000,fcon1000Cambridge_sub86637,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub86637.nii.gz +1092,FCON1000,fcon1000Cambridge_sub87846,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub87846.nii.gz +1093,FCON1000,fcon1000Cambridge_sub88445,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub88445.nii.gz +1094,FCON1000,fcon1000Cambridge_sub88464,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub88464.nii.gz +1095,FCON1000,fcon1000Cambridge_sub88853,29.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub88853.nii.gz +1096,FCON1000,fcon1000Cambridge_sub89107,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub89107.nii.gz +1097,FCON1000,fcon1000Cambridge_sub89435,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub89435.nii.gz +1098,FCON1000,fcon1000Cambridge_sub89894,18.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub89894.nii.gz +1099,FCON1000,fcon1000Cambridge_sub90059,19.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub90059.nii.gz +1100,FCON1000,fcon1000Cambridge_sub90674,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub90674.nii.gz +1101,FCON1000,fcon1000Cambridge_sub90681,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub90681.nii.gz +1102,FCON1000,fcon1000Cambridge_sub90699,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub90699.nii.gz +1103,FCON1000,fcon1000Cambridge_sub92288,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub92288.nii.gz +1104,FCON1000,fcon1000Cambridge_sub92393,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub92393.nii.gz +1105,FCON1000,fcon1000Cambridge_sub92440,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub92440.nii.gz +1106,FCON1000,fcon1000Cambridge_sub93269,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub93269.nii.gz +1107,FCON1000,fcon1000Cambridge_sub93488,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub93488.nii.gz +1108,FCON1000,fcon1000Cambridge_sub93609,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub93609.nii.gz +1109,FCON1000,fcon1000Cambridge_sub94304,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub94304.nii.gz +1110,FCON1000,fcon1000Cambridge_sub95187,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub95187.nii.gz +1111,FCON1000,fcon1000Cambridge_sub95644,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub95644.nii.gz +1112,FCON1000,fcon1000Cambridge_sub95959,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub95959.nii.gz +1113,FCON1000,fcon1000Cambridge_sub98528,19.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub98528.nii.gz +1114,FCON1000,fcon1000Cambridge_sub98624,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub98624.nii.gz +1115,FCON1000,fcon1000Cambridge_sub99085,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub99085.nii.gz +1116,FCON1000,fcon1000Cambridge_sub99330,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub99330.nii.gz +1117,FCON1000,fcon1000Cambridge_sub99462,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cambridge_sub99462.nii.gz +1118,FCON1000,fcon1000Cleveland_sub02480,56.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub02480.nii.gz +1119,FCON1000,fcon1000Cleveland_sub07835,43.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub07835.nii.gz +1120,FCON1000,fcon1000Cleveland_sub12330,54.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub12330.nii.gz +1121,FCON1000,fcon1000Cleveland_sub13495,45.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub13495.nii.gz +1122,FCON1000,fcon1000Cleveland_sub17946,29.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub17946.nii.gz +1123,FCON1000,fcon1000Cleveland_sub18011,55.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub18011.nii.gz +1124,FCON1000,fcon1000Cleveland_sub18566,33.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub18566.nii.gz +1125,FCON1000,fcon1000Cleveland_sub19005,29.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub19005.nii.gz +1126,FCON1000,fcon1000Cleveland_sub20003,39.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub20003.nii.gz +1127,FCON1000,fcon1000Cleveland_sub22736,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub22736.nii.gz +1128,FCON1000,fcon1000Cleveland_sub22935,39.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub22935.nii.gz +1129,FCON1000,fcon1000Cleveland_sub26557,51.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub26557.nii.gz +1130,FCON1000,fcon1000Cleveland_sub28596,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub28596.nii.gz +1131,FCON1000,fcon1000Cleveland_sub34189,55.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub34189.nii.gz +1132,FCON1000,fcon1000Cleveland_sub46075,33.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub46075.nii.gz +1133,FCON1000,fcon1000Cleveland_sub46739,60.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub46739.nii.gz +1134,FCON1000,fcon1000Cleveland_sub47482,28.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub47482.nii.gz +1135,FCON1000,fcon1000Cleveland_sub50092,56.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub50092.nii.gz +1136,FCON1000,fcon1000Cleveland_sub58811,36.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub58811.nii.gz +1137,FCON1000,fcon1000Cleveland_sub61868,48.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub61868.nii.gz +1138,FCON1000,fcon1000Cleveland_sub64706,57.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub64706.nii.gz +1139,FCON1000,fcon1000Cleveland_sub65858,53.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub65858.nii.gz +1140,FCON1000,fcon1000Cleveland_sub67936,57.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub67936.nii.gz +1141,FCON1000,fcon1000Cleveland_sub75398,43.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub75398.nii.gz +1142,FCON1000,fcon1000Cleveland_sub76139,41.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub76139.nii.gz +1143,FCON1000,fcon1000Cleveland_sub80263,44.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub80263.nii.gz +1144,FCON1000,fcon1000Cleveland_sub82518,30.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub82518.nii.gz +1145,FCON1000,fcon1000Cleveland_sub85091,52.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub85091.nii.gz +1146,FCON1000,fcon1000Cleveland_sub92232,45.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub92232.nii.gz +1147,FCON1000,fcon1000Cleveland_sub97844,30.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub97844.nii.gz +1148,FCON1000,fcon1000Cleveland_sub99664,57.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Cleveland_sub99664.nii.gz +1149,FCON1000,fcon1000ICBM_sub00448,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub00448.nii.gz +1150,FCON1000,fcon1000ICBM_sub00623,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub00623.nii.gz +1151,FCON1000,fcon1000ICBM_sub02382,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub02382.nii.gz +1152,FCON1000,fcon1000ICBM_sub02503,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub02503.nii.gz +1153,FCON1000,fcon1000ICBM_sub05208,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub05208.nii.gz +1154,FCON1000,fcon1000ICBM_sub07286,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub07286.nii.gz +1155,FCON1000,fcon1000ICBM_sub08255,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub08255.nii.gz +1156,FCON1000,fcon1000ICBM_sub08806,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub08806.nii.gz +1157,FCON1000,fcon1000ICBM_sub09539,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub09539.nii.gz +1158,FCON1000,fcon1000ICBM_sub10582,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub10582.nii.gz +1159,FCON1000,fcon1000ICBM_sub13384,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub13384.nii.gz +1160,FCON1000,fcon1000ICBM_sub13478,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub13478.nii.gz +1161,FCON1000,fcon1000ICBM_sub13789,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub13789.nii.gz +1162,FCON1000,fcon1000ICBM_sub16607,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub16607.nii.gz +1163,FCON1000,fcon1000ICBM_sub19395,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub19395.nii.gz +1164,FCON1000,fcon1000ICBM_sub20718,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub20718.nii.gz +1165,FCON1000,fcon1000ICBM_sub22674,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub22674.nii.gz +1166,FCON1000,fcon1000ICBM_sub26183,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub26183.nii.gz +1167,FCON1000,fcon1000ICBM_sub26796,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub26796.nii.gz +1168,FCON1000,fcon1000ICBM_sub28422,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub28422.nii.gz +1169,FCON1000,fcon1000ICBM_sub28795,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub28795.nii.gz +1170,FCON1000,fcon1000ICBM_sub28808,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub28808.nii.gz +1171,FCON1000,fcon1000ICBM_sub29353,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub29353.nii.gz +1172,FCON1000,fcon1000ICBM_sub30003,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub30003.nii.gz +1173,FCON1000,fcon1000ICBM_sub30623,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub30623.nii.gz +1174,FCON1000,fcon1000ICBM_sub32549,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub32549.nii.gz +1175,FCON1000,fcon1000ICBM_sub33677,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub33677.nii.gz +1176,FCON1000,fcon1000ICBM_sub34252,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub34252.nii.gz +1177,FCON1000,fcon1000ICBM_sub35262,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub35262.nii.gz +1178,FCON1000,fcon1000ICBM_sub35370,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub35370.nii.gz +1179,FCON1000,fcon1000ICBM_sub37140,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub37140.nii.gz +1180,FCON1000,fcon1000ICBM_sub40217,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub40217.nii.gz +1181,FCON1000,fcon1000ICBM_sub40482,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub40482.nii.gz +1182,FCON1000,fcon1000ICBM_sub41546,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub41546.nii.gz +1183,FCON1000,fcon1000ICBM_sub41764,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub41764.nii.gz +1184,FCON1000,fcon1000ICBM_sub44077,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub44077.nii.gz +1185,FCON1000,fcon1000ICBM_sub44395,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub44395.nii.gz +1186,FCON1000,fcon1000ICBM_sub47658,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub47658.nii.gz +1187,FCON1000,fcon1000ICBM_sub47753,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub47753.nii.gz +1188,FCON1000,fcon1000ICBM_sub48210,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub48210.nii.gz +1189,FCON1000,fcon1000ICBM_sub48830,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub48830.nii.gz +1190,FCON1000,fcon1000ICBM_sub49215,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub49215.nii.gz +1191,FCON1000,fcon1000ICBM_sub51677,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub51677.nii.gz +1192,FCON1000,fcon1000ICBM_sub53282,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub53282.nii.gz +1193,FCON1000,fcon1000ICBM_sub53801,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub53801.nii.gz +1194,FCON1000,fcon1000ICBM_sub54887,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub54887.nii.gz +1195,FCON1000,fcon1000ICBM_sub55114,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub55114.nii.gz +1196,FCON1000,fcon1000ICBM_sub55656,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub55656.nii.gz +1197,FCON1000,fcon1000ICBM_sub57738,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub57738.nii.gz +1198,FCON1000,fcon1000ICBM_sub59589,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub59589.nii.gz +1199,FCON1000,fcon1000ICBM_sub59739,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub59739.nii.gz +1200,FCON1000,fcon1000ICBM_sub59914,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub59914.nii.gz +1201,FCON1000,fcon1000ICBM_sub62937,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub62937.nii.gz +1202,FCON1000,fcon1000ICBM_sub63280,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub63280.nii.gz +1203,FCON1000,fcon1000ICBM_sub65921,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub65921.nii.gz +1204,FCON1000,fcon1000ICBM_sub66085,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub66085.nii.gz +1205,FCON1000,fcon1000ICBM_sub66794,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub66794.nii.gz +1206,FCON1000,fcon1000ICBM_sub68850,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub68850.nii.gz +1207,FCON1000,fcon1000ICBM_sub70595,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub70595.nii.gz +1208,FCON1000,fcon1000ICBM_sub71932,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub71932.nii.gz +1209,FCON1000,fcon1000ICBM_sub72135,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub72135.nii.gz +1210,FCON1000,fcon1000ICBM_sub73490,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub73490.nii.gz +1211,FCON1000,fcon1000ICBM_sub76325,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub76325.nii.gz +1212,FCON1000,fcon1000ICBM_sub76678,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub76678.nii.gz +1213,FCON1000,fcon1000ICBM_sub77431,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub77431.nii.gz +1214,FCON1000,fcon1000ICBM_sub78297,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub78297.nii.gz +1215,FCON1000,fcon1000ICBM_sub82221,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub82221.nii.gz +1216,FCON1000,fcon1000ICBM_sub82228,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub82228.nii.gz +1217,FCON1000,fcon1000ICBM_sub82754,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub82754.nii.gz +1218,FCON1000,fcon1000ICBM_sub85442,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub85442.nii.gz +1219,FCON1000,fcon1000ICBM_sub86203,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub86203.nii.gz +1220,FCON1000,fcon1000ICBM_sub86516,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub86516.nii.gz +1221,FCON1000,fcon1000ICBM_sub86665,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub86665.nii.gz +1222,FCON1000,fcon1000ICBM_sub87217,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub87217.nii.gz +1223,FCON1000,fcon1000ICBM_sub89049,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub89049.nii.gz +1224,FCON1000,fcon1000ICBM_sub92028,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub92028.nii.gz +1225,FCON1000,fcon1000ICBM_sub93262,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub93262.nii.gz +1226,FCON1000,fcon1000ICBM_sub93975,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub93975.nii.gz +1227,FCON1000,fcon1000ICBM_sub94103,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub94103.nii.gz +1228,FCON1000,fcon1000ICBM_sub94169,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub94169.nii.gz +1229,FCON1000,fcon1000ICBM_sub94945,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub94945.nii.gz +1230,FCON1000,fcon1000ICBM_sub95400,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub95400.nii.gz +1231,FCON1000,fcon1000ICBM_sub95971,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub95971.nii.gz +1232,FCON1000,fcon1000ICBM_sub97008,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub97008.nii.gz +1233,FCON1000,fcon1000ICBM_sub98317,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub98317.nii.gz +1234,FCON1000,fcon1000ICBM_sub98802,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ICBM_sub98802.nii.gz +1235,FCON1000,fcon1000Leiden_sub01553,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub01553.nii.gz +1236,FCON1000,fcon1000Leiden_sub01787,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub01787.nii.gz +1237,FCON1000,fcon1000Leiden_sub04484,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub04484.nii.gz +1238,FCON1000,fcon1000Leiden_sub08518,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub08518.nii.gz +1239,FCON1000,fcon1000Leiden_sub09796,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub09796.nii.gz +1240,FCON1000,fcon1000Leiden_sub10481,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub10481.nii.gz +1241,FCON1000,fcon1000Leiden_sub12255,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub12255.nii.gz +1242,FCON1000,fcon1000Leiden_sub13537,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub13537.nii.gz +1243,FCON1000,fcon1000Leiden_sub18456,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub18456.nii.gz +1244,FCON1000,fcon1000Leiden_sub19281,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub19281.nii.gz +1245,FCON1000,fcon1000Leiden_sub28473,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub28473.nii.gz +1246,FCON1000,fcon1000Leiden_sub30943,18.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub30943.nii.gz +1247,FCON1000,fcon1000Leiden_sub36743,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub36743.nii.gz +1248,FCON1000,fcon1000Leiden_sub38454,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub38454.nii.gz +1249,FCON1000,fcon1000Leiden_sub39335,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub39335.nii.gz +1250,FCON1000,fcon1000Leiden_sub40907,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub40907.nii.gz +1251,FCON1000,fcon1000Leiden_sub52853,27.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub52853.nii.gz +1252,FCON1000,fcon1000Leiden_sub52922,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub52922.nii.gz +1253,FCON1000,fcon1000Leiden_sub56299,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub56299.nii.gz +1254,FCON1000,fcon1000Leiden_sub57187,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub57187.nii.gz +1255,FCON1000,fcon1000Leiden_sub58194,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub58194.nii.gz +1256,FCON1000,fcon1000Leiden_sub64642,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub64642.nii.gz +1257,FCON1000,fcon1000Leiden_sub66131,19.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub66131.nii.gz +1258,FCON1000,fcon1000Leiden_sub68050,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub68050.nii.gz +1259,FCON1000,fcon1000Leiden_sub72247,20.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub72247.nii.gz +1260,FCON1000,fcon1000Leiden_sub86034,21.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub86034.nii.gz +1261,FCON1000,fcon1000Leiden_sub87320,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub87320.nii.gz +1262,FCON1000,fcon1000Leiden_sub92061,28.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub92061.nii.gz +1263,FCON1000,fcon1000Leiden_sub93194,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub93194.nii.gz +1264,FCON1000,fcon1000Leiden_sub97690,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub97690.nii.gz +1265,FCON1000,fcon1000Leiden_sub99856,24.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Leiden_sub99856.nii.gz +1266,FCON1000,fcon1000Milwaukee_sub00917,54.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub00917.nii.gz +1267,FCON1000,fcon1000Milwaukee_sub09931,48.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub09931.nii.gz +1268,FCON1000,fcon1000Milwaukee_sub14055,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub14055.nii.gz +1269,FCON1000,fcon1000Milwaukee_sub14692,53.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub14692.nii.gz +1270,FCON1000,fcon1000Milwaukee_sub16666,47.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub16666.nii.gz +1271,FCON1000,fcon1000Milwaukee_sub17004,57.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub17004.nii.gz +1272,FCON1000,fcon1000Milwaukee_sub17987,47.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub17987.nii.gz +1273,FCON1000,fcon1000Milwaukee_sub18955,53.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub18955.nii.gz +1274,FCON1000,fcon1000Milwaukee_sub21350,61.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub21350.nii.gz +1275,FCON1000,fcon1000Milwaukee_sub23607,48.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub23607.nii.gz +1276,FCON1000,fcon1000Milwaukee_sub24237,52.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub24237.nii.gz +1277,FCON1000,fcon1000Milwaukee_sub27910,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub27910.nii.gz +1278,FCON1000,fcon1000Milwaukee_sub28782,64.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub28782.nii.gz +1279,FCON1000,fcon1000Milwaukee_sub28859,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub28859.nii.gz +1280,FCON1000,fcon1000Milwaukee_sub30157,54.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub30157.nii.gz +1281,FCON1000,fcon1000Milwaukee_sub34838,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub34838.nii.gz +1282,FCON1000,fcon1000Milwaukee_sub36386,57.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub36386.nii.gz +1283,FCON1000,fcon1000Milwaukee_sub39259,53.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub39259.nii.gz +1284,FCON1000,fcon1000Milwaukee_sub39974,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub39974.nii.gz +1285,FCON1000,fcon1000Milwaukee_sub44129,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub44129.nii.gz +1286,FCON1000,fcon1000Milwaukee_sub44912,49.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub44912.nii.gz +1287,FCON1000,fcon1000Milwaukee_sub45019,44.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub45019.nii.gz +1288,FCON1000,fcon1000Milwaukee_sub45852,63.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub45852.nii.gz +1289,FCON1000,fcon1000Milwaukee_sub46312,51.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub46312.nii.gz +1290,FCON1000,fcon1000Milwaukee_sub47640,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub47640.nii.gz +1291,FCON1000,fcon1000Milwaukee_sub49975,46.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub49975.nii.gz +1292,FCON1000,fcon1000Milwaukee_sub50276,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub50276.nii.gz +1293,FCON1000,fcon1000Milwaukee_sub50771,53.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub50771.nii.gz +1294,FCON1000,fcon1000Milwaukee_sub51182,57.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub51182.nii.gz +1295,FCON1000,fcon1000Milwaukee_sub53971,47.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub53971.nii.gz +1296,FCON1000,fcon1000Milwaukee_sub55176,63.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub55176.nii.gz +1297,FCON1000,fcon1000Milwaukee_sub55712,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub55712.nii.gz +1298,FCON1000,fcon1000Milwaukee_sub56084,53.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub56084.nii.gz +1299,FCON1000,fcon1000Milwaukee_sub56108,51.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub56108.nii.gz +1300,FCON1000,fcon1000Milwaukee_sub56333,53.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub56333.nii.gz +1301,FCON1000,fcon1000Milwaukee_sub56582,57.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub56582.nii.gz +1302,FCON1000,fcon1000Milwaukee_sub58677,46.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub58677.nii.gz +1303,FCON1000,fcon1000Milwaukee_sub58967,61.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub58967.nii.gz +1304,FCON1000,fcon1000Milwaukee_sub59359,51.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub59359.nii.gz +1305,FCON1000,fcon1000Milwaukee_sub61779,56.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub61779.nii.gz +1306,FCON1000,fcon1000Milwaukee_sub63196,49.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub63196.nii.gz +1307,FCON1000,fcon1000Milwaukee_sub64463,52.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub64463.nii.gz +1308,FCON1000,fcon1000Milwaukee_sub67948,48.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub67948.nii.gz +1309,FCON1000,fcon1000Milwaukee_sub68961,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub68961.nii.gz +1310,FCON1000,fcon1000Milwaukee_sub73547,55.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub73547.nii.gz +1311,FCON1000,fcon1000Milwaukee_sub75919,50.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub75919.nii.gz +1312,FCON1000,fcon1000Milwaukee_sub76042,58.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub76042.nii.gz +1313,FCON1000,fcon1000Milwaukee_sub76378,52.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub76378.nii.gz +1314,FCON1000,fcon1000Milwaukee_sub77073,52.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub77073.nii.gz +1315,FCON1000,fcon1000Milwaukee_sub77622,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub77622.nii.gz +1316,FCON1000,fcon1000Milwaukee_sub78339,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub78339.nii.gz +1317,FCON1000,fcon1000Milwaukee_sub78549,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub78549.nii.gz +1318,FCON1000,fcon1000Milwaukee_sub79672,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub79672.nii.gz +1319,FCON1000,fcon1000Milwaukee_sub84314,58.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub84314.nii.gz +1320,FCON1000,fcon1000Milwaukee_sub86308,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub86308.nii.gz +1321,FCON1000,fcon1000Milwaukee_sub87784,58.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub87784.nii.gz +1322,FCON1000,fcon1000Milwaukee_sub87910,47.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub87910.nii.gz +1323,FCON1000,fcon1000Milwaukee_sub90565,,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub90565.nii.gz +1324,FCON1000,fcon1000Milwaukee_sub91468,44.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub91468.nii.gz +1325,FCON1000,fcon1000Milwaukee_sub92023,,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub92023.nii.gz +1326,FCON1000,fcon1000Milwaukee_sub93170,65.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub93170.nii.gz +1327,FCON1000,fcon1000Milwaukee_sub98971,63.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub98971.nii.gz +1328,FCON1000,fcon1000Milwaukee_sub99479,65.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub99479.nii.gz +1329,FCON1000,fcon1000Milwaukee_sub99558,,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Milwaukee_sub99558.nii.gz +1330,FCON1000,fcon1000Munchen_sub09035,70.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub09035.nii.gz +1331,FCON1000,fcon1000Munchen_sub26223,65.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub26223.nii.gz +1332,FCON1000,fcon1000Munchen_sub26670,64.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub26670.nii.gz +1333,FCON1000,fcon1000Munchen_sub28697,73.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub28697.nii.gz +1334,FCON1000,fcon1000Munchen_sub28902,65.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub28902.nii.gz +1335,FCON1000,fcon1000Munchen_sub31272,74.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub31272.nii.gz +1336,FCON1000,fcon1000Munchen_sub36052,63.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub36052.nii.gz +1337,FCON1000,fcon1000Munchen_sub50162,73.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub50162.nii.gz +1338,FCON1000,fcon1000Munchen_sub64202,67.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub64202.nii.gz +1339,FCON1000,fcon1000Munchen_sub66933,72.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub66933.nii.gz +1340,FCON1000,fcon1000Munchen_sub70942,70.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub70942.nii.gz +1341,FCON1000,fcon1000Munchen_sub72095,71.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub72095.nii.gz +1342,FCON1000,fcon1000Munchen_sub74607,65.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub74607.nii.gz +1343,FCON1000,fcon1000Munchen_sub81737,67.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub81737.nii.gz +1344,FCON1000,fcon1000Munchen_sub96591,73.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub96591.nii.gz +1345,FCON1000,fcon1000Munchen_sub96752,63.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Munchen_sub96752.nii.gz +1346,FCON1000,fcon1000NewYork_sub01912,31.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub01912.nii.gz +1347,FCON1000,fcon1000NewYork_sub02503,9.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub02503.nii.gz +1348,FCON1000,fcon1000NewYork_sub03951,37.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub03951.nii.gz +1349,FCON1000,fcon1000NewYork_sub04856,9.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub04856.nii.gz +1350,FCON1000,fcon1000NewYork_sub05208,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub05208.nii.gz +1351,FCON1000,fcon1000NewYork_sub07578,20.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub07578.nii.gz +1352,FCON1000,fcon1000NewYork_sub08595,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub08595.nii.gz +1353,FCON1000,fcon1000NewYork_sub09539,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub09539.nii.gz +1354,FCON1000,fcon1000NewYork_sub10011,40.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub10011.nii.gz +1355,FCON1000,fcon1000NewYork_sub10582,47.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub10582.nii.gz +1356,FCON1000,fcon1000NewYork_sub12486,40.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub12486.nii.gz +1357,FCON1000,fcon1000NewYork_sub13384,28.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub13384.nii.gz +1358,FCON1000,fcon1000NewYork_sub14299,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub14299.nii.gz +1359,FCON1000,fcon1000NewYork_sub14465,47.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub14465.nii.gz +1360,FCON1000,fcon1000NewYork_sub15213,16.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub15213.nii.gz +1361,FCON1000,fcon1000NewYork_sub15758,32.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub15758.nii.gz +1362,FCON1000,fcon1000NewYork_sub16607,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub16607.nii.gz +1363,FCON1000,fcon1000NewYork_sub17078,34.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub17078.nii.gz +1364,FCON1000,fcon1000NewYork_sub17109,46.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub17109.nii.gz +1365,FCON1000,fcon1000NewYork_sub18638,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub18638.nii.gz +1366,FCON1000,fcon1000NewYork_sub19579,46.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub19579.nii.gz +1367,FCON1000,fcon1000NewYork_sub20676,49.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub20676.nii.gz +1368,FCON1000,fcon1000NewYork_sub20691,26.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub20691.nii.gz +1369,FCON1000,fcon1000NewYork_sub20732,11.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub20732.nii.gz +1370,FCON1000,fcon1000NewYork_sub21212,30.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub21212.nii.gz +1371,FCON1000,fcon1000NewYork_sub22349,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub22349.nii.gz +1372,FCON1000,fcon1000NewYork_sub22608,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub22608.nii.gz +1373,FCON1000,fcon1000NewYork_sub23844,20.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub23844.nii.gz +1374,FCON1000,fcon1000NewYork_sub24528,45.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub24528.nii.gz +1375,FCON1000,fcon1000NewYork_sub26267,15.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub26267.nii.gz +1376,FCON1000,fcon1000NewYork_sub27123,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub27123.nii.gz +1377,FCON1000,fcon1000NewYork_sub28795,10.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub28795.nii.gz +1378,FCON1000,fcon1000NewYork_sub28808,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub28808.nii.gz +1379,FCON1000,fcon1000NewYork_sub29216,29.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub29216.nii.gz +1380,FCON1000,fcon1000NewYork_sub29353,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub29353.nii.gz +1381,FCON1000,fcon1000NewYork_sub29935,16.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub29935.nii.gz +1382,FCON1000,fcon1000NewYork_sub30247,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub30247.nii.gz +1383,FCON1000,fcon1000NewYork_sub30623,26.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub30623.nii.gz +1384,FCON1000,fcon1000NewYork_sub30860,35.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub30860.nii.gz +1385,FCON1000,fcon1000NewYork_sub31554,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub31554.nii.gz +1386,FCON1000,fcon1000NewYork_sub31671,12.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub31671.nii.gz +1387,FCON1000,fcon1000NewYork_sub33062,34.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub33062.nii.gz +1388,FCON1000,fcon1000NewYork_sub33581,49.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub33581.nii.gz +1389,FCON1000,fcon1000NewYork_sub35262,28.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub35262.nii.gz +1390,FCON1000,fcon1000NewYork_sub37864,41.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub37864.nii.gz +1391,FCON1000,fcon1000NewYork_sub38088,16.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub38088.nii.gz +1392,FCON1000,fcon1000NewYork_sub41546,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub41546.nii.gz +1393,FCON1000,fcon1000NewYork_sub44395,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub44395.nii.gz +1394,FCON1000,fcon1000NewYork_sub44515,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub44515.nii.gz +1395,FCON1000,fcon1000NewYork_sub44979,15.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub44979.nii.gz +1396,FCON1000,fcon1000NewYork_sub45217,40.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub45217.nii.gz +1397,FCON1000,fcon1000NewYork_sub46856,8.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub46856.nii.gz +1398,FCON1000,fcon1000NewYork_sub47087,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub47087.nii.gz +1399,FCON1000,fcon1000NewYork_sub47633,37.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub47633.nii.gz +1400,FCON1000,fcon1000NewYork_sub48803,37.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub48803.nii.gz +1401,FCON1000,fcon1000NewYork_sub48830,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub48830.nii.gz +1402,FCON1000,fcon1000NewYork_sub50559,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub50559.nii.gz +1403,FCON1000,fcon1000NewYork_sub51309,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub51309.nii.gz +1404,FCON1000,fcon1000NewYork_sub51677,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub51677.nii.gz +1405,FCON1000,fcon1000NewYork_sub53461,27.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub53461.nii.gz +1406,FCON1000,fcon1000NewYork_sub53710,34.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub53710.nii.gz +1407,FCON1000,fcon1000NewYork_sub54828,41.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub54828.nii.gz +1408,FCON1000,fcon1000NewYork_sub56734,50.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub56734.nii.gz +1409,FCON1000,fcon1000NewYork_sub59796,34.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub59796.nii.gz +1410,FCON1000,fcon1000NewYork_sub63915,44.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub63915.nii.gz +1411,FCON1000,fcon1000NewYork_sub69779,40.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub69779.nii.gz +1412,FCON1000,fcon1000NewYork_sub73035,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub73035.nii.gz +1413,FCON1000,fcon1000NewYork_sub77203,40.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub77203.nii.gz +1414,FCON1000,fcon1000NewYork_sub77903,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub77903.nii.gz +1415,FCON1000,fcon1000NewYork_sub84371,38.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/NewYork_sub84371.nii.gz +1416,FCON1000,fcon1000Newark_sub13411,23.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub13411.nii.gz +1417,FCON1000,fcon1000Newark_sub32580,26.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub32580.nii.gz +1418,FCON1000,fcon1000Newark_sub36023,21.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub36023.nii.gz +1419,FCON1000,fcon1000Newark_sub41006,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub41006.nii.gz +1420,FCON1000,fcon1000Newark_sub43517,22.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub43517.nii.gz +1421,FCON1000,fcon1000Newark_sub49705,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub49705.nii.gz +1422,FCON1000,fcon1000Newark_sub53422,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub53422.nii.gz +1423,FCON1000,fcon1000Newark_sub54933,26.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub54933.nii.gz +1424,FCON1000,fcon1000Newark_sub55760,24.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub55760.nii.gz +1425,FCON1000,fcon1000Newark_sub58526,25.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub58526.nii.gz +1426,FCON1000,fcon1000Newark_sub59397,24.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub59397.nii.gz +1427,FCON1000,fcon1000Newark_sub59799,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub59799.nii.gz +1428,FCON1000,fcon1000Newark_sub62985,25.0,dev,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub62985.nii.gz +1429,FCON1000,fcon1000Newark_sub71042,21.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub71042.nii.gz +1430,FCON1000,fcon1000Newark_sub71743,22.0,test,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub71743.nii.gz +1431,FCON1000,fcon1000Newark_sub76647,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub76647.nii.gz +1432,FCON1000,fcon1000Newark_sub78225,22.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub78225.nii.gz +1433,FCON1000,fcon1000Newark_sub86204,23.0,train,/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/Newark_sub86204.nii.gz +1434,DLBS,DLBS0028374_session_1,55.62,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028374_session_1.nii.gz +1435,DLBS,DLBS0028545_session_1,72.25,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028545_session_1.nii.gz +1436,DLBS,DLBS0028344_session_1,69.81,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028344_session_1.nii.gz +1437,DLBS,DLBS0028392_session_1,54.85,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028392_session_1.nii.gz +1438,DLBS,DLBS0028479_session_1,40.93,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028479_session_1.nii.gz +1439,DLBS,DLBS0028495_session_1,40.56,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028495_session_1.nii.gz +1440,DLBS,DLBS0028492_session_1,52.89,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028492_session_1.nii.gz +1441,DLBS,DLBS0028468_session_1,44.31,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028468_session_1.nii.gz +1442,DLBS,DLBS0028592_session_1,40.97,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028592_session_1.nii.gz +1443,DLBS,DLBS0028419_session_1,78.87,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028419_session_1.nii.gz +1444,DLBS,DLBS0028550_session_1,22.17,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028550_session_1.nii.gz +1445,DLBS,DLBS0028632_session_1,59.96,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028632_session_1.nii.gz +1446,DLBS,DLBS0028352_session_1,29.84,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028352_session_1.nii.gz +1447,DLBS,DLBS0028366_session_1,23.53,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028366_session_1.nii.gz +1448,DLBS,DLBS0028429_session_1,42.63,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028429_session_1.nii.gz +1449,DLBS,DLBS0028456_session_1,53.75,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028456_session_1.nii.gz +1450,DLBS,DLBS0028593_session_1,62.06,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028593_session_1.nii.gz +1451,DLBS,DLBS0028549_session_1,21.45,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028549_session_1.nii.gz +1452,DLBS,DLBS0028617_session_1,50.6,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028617_session_1.nii.gz +1453,DLBS,DLBS0028340_session_1,67.83,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028340_session_1.nii.gz +1454,DLBS,DLBS0028349_session_1,64.17,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028349_session_1.nii.gz +1455,DLBS,DLBS0028505_session_1,20.75,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028505_session_1.nii.gz +1456,DLBS,DLBS0028463_session_1,68.35,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028463_session_1.nii.gz +1457,DLBS,DLBS0028603_session_1,35.96,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028603_session_1.nii.gz +1458,DLBS,DLBS0028441_session_1,45.18,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028441_session_1.nii.gz +1459,DLBS,DLBS0028428_session_1,45.85,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028428_session_1.nii.gz +1460,DLBS,DLBS0028523_session_1,49.68,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028523_session_1.nii.gz +1461,DLBS,DLBS0028357_session_1,56.36,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028357_session_1.nii.gz +1462,DLBS,DLBS0028574_session_1,50.35,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028574_session_1.nii.gz +1463,DLBS,DLBS0028499_session_1,51.56,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028499_session_1.nii.gz +1464,DLBS,DLBS0028569_session_1,67.65,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028569_session_1.nii.gz +1465,DLBS,DLBS0028385_session_1,61.53,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028385_session_1.nii.gz +1466,DLBS,DLBS0028381_session_1,24.24,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028381_session_1.nii.gz +1467,DLBS,DLBS0028631_session_1,29.92,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028631_session_1.nii.gz +1468,DLBS,DLBS0028500_session_1,32.85,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028500_session_1.nii.gz +1469,DLBS,DLBS0028326_session_1,66.42,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028326_session_1.nii.gz +1470,DLBS,DLBS0028628_session_1,51.81,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028628_session_1.nii.gz +1471,DLBS,DLBS0028461_session_1,53.95,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028461_session_1.nii.gz +1472,DLBS,DLBS0028560_session_1,57.03,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028560_session_1.nii.gz +1473,DLBS,DLBS0028532_session_1,34.11,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028532_session_1.nii.gz +1474,DLBS,DLBS0028520_session_1,65.52,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028520_session_1.nii.gz +1475,DLBS,DLBS0028528_session_1,53.43,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028528_session_1.nii.gz +1476,DLBS,DLBS0028438_session_1,85.99,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028438_session_1.nii.gz +1477,DLBS,DLBS0028424_session_1,77.79,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028424_session_1.nii.gz +1478,DLBS,DLBS0028600_session_1,70.31,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028600_session_1.nii.gz +1479,DLBS,DLBS0028636_session_1,65.12,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028636_session_1.nii.gz +1480,DLBS,DLBS0028368_session_1,79.65,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028368_session_1.nii.gz +1481,DLBS,DLBS0028388_session_1,82.93,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028388_session_1.nii.gz +1482,DLBS,DLBS0028333_session_1,76.45,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028333_session_1.nii.gz +1483,DLBS,DLBS0028413_session_1,81.57,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028413_session_1.nii.gz +1484,DLBS,DLBS0028615_session_1,80.95,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028615_session_1.nii.gz +1485,DLBS,DLBS0028457_session_1,75.67,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028457_session_1.nii.gz +1486,DLBS,DLBS0028399_session_1,70.68,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028399_session_1.nii.gz +1487,DLBS,DLBS0028339_session_1,65.23,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028339_session_1.nii.gz +1488,DLBS,DLBS0028639_session_1,74.96,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028639_session_1.nii.gz +1489,DLBS,DLBS0028474_session_1,83.7,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028474_session_1.nii.gz +1490,DLBS,DLBS0028480_session_1,40.26,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028480_session_1.nii.gz +1491,DLBS,DLBS0028616_session_1,61.54,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028616_session_1.nii.gz +1492,DLBS,DLBS0028488_session_1,41.33,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028488_session_1.nii.gz +1493,DLBS,DLBS0028537_session_1,62.2,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028537_session_1.nii.gz +1494,DLBS,DLBS0028358_session_1,66.63,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028358_session_1.nii.gz +1495,DLBS,DLBS0028378_session_1,69.19,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028378_session_1.nii.gz +1496,DLBS,DLBS0028557_session_1,75.89,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028557_session_1.nii.gz +1497,DLBS,DLBS0028396_session_1,67.74,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028396_session_1.nii.gz +1498,DLBS,DLBS0028490_session_1,63.73,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028490_session_1.nii.gz +1499,DLBS,DLBS0028590_session_1,70.79,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028590_session_1.nii.gz +1500,DLBS,DLBS0028587_session_1,72.59,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028587_session_1.nii.gz +1501,DLBS,DLBS0028377_session_1,64.37,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028377_session_1.nii.gz +1502,DLBS,DLBS0028518_session_1,71.09,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028518_session_1.nii.gz +1503,DLBS,DLBS0028407_session_1,86.86,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028407_session_1.nii.gz +1504,DLBS,DLBS0028612_session_1,67.61,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028612_session_1.nii.gz +1505,DLBS,DLBS0028542_session_1,69.59,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028542_session_1.nii.gz +1506,DLBS,DLBS0028562_session_1,24.29,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028562_session_1.nii.gz +1507,DLBS,DLBS0028509_session_1,51.39,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028509_session_1.nii.gz +1508,DLBS,DLBS0028365_session_1,22.82,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028365_session_1.nii.gz +1509,DLBS,DLBS0028558_session_1,24.83,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028558_session_1.nii.gz +1510,DLBS,DLBS0028599_session_1,62.14,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028599_session_1.nii.gz +1511,DLBS,DLBS0028578_session_1,87.34,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028578_session_1.nii.gz +1512,DLBS,DLBS0028336_session_1,80.65,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028336_session_1.nii.gz +1513,DLBS,DLBS0028434_session_1,70.1,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028434_session_1.nii.gz +1514,DLBS,DLBS0028403_session_1,68.71,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028403_session_1.nii.gz +1515,DLBS,DLBS0028471_session_1,67.47,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028471_session_1.nii.gz +1516,DLBS,DLBS0028477_session_1,60.81,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028477_session_1.nii.gz +1517,DLBS,DLBS0028580_session_1,60.28,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028580_session_1.nii.gz +1518,DLBS,DLBS0028448_session_1,69.32,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028448_session_1.nii.gz +1519,DLBS,DLBS0028605_session_1,63.69,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028605_session_1.nii.gz +1520,DLBS,DLBS0028421_session_1,67.05,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028421_session_1.nii.gz +1521,DLBS,DLBS0028362_session_1,60.87,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028362_session_1.nii.gz +1522,DLBS,DLBS0028354_session_1,75.42,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028354_session_1.nii.gz +1523,DLBS,DLBS0028602_session_1,29.19,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028602_session_1.nii.gz +1524,DLBS,DLBS0028360_session_1,54.03,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028360_session_1.nii.gz +1525,DLBS,DLBS0028527_session_1,23.64,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028527_session_1.nii.gz +1526,DLBS,DLBS0028596_session_1,36.92,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028596_session_1.nii.gz +1527,DLBS,DLBS0028554_session_1,48.67,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028554_session_1.nii.gz +1528,DLBS,DLBS0028515_session_1,50.9,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028515_session_1.nii.gz +1529,DLBS,DLBS0028625_session_1,60.37,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028625_session_1.nii.gz +1530,DLBS,DLBS0028586_session_1,79.85,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028586_session_1.nii.gz +1531,DLBS,DLBS0028572_session_1,75.37,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028572_session_1.nii.gz +1532,DLBS,DLBS0028335_session_1,71.34,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028335_session_1.nii.gz +1533,DLBS,DLBS0028577_session_1,65.52,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028577_session_1.nii.gz +1534,DLBS,DLBS0028401_session_1,54.05,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028401_session_1.nii.gz +1535,DLBS,DLBS0028408_session_1,20.7,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028408_session_1.nii.gz +1536,DLBS,DLBS0028412_session_1,20.89,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028412_session_1.nii.gz +1537,DLBS,DLBS0028394_session_1,20.74,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028394_session_1.nii.gz +1538,DLBS,DLBS0028425_session_1,23.02,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028425_session_1.nii.gz +1539,DLBS,DLBS0028375_session_1,59.07,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028375_session_1.nii.gz +1540,DLBS,DLBS0028439_session_1,25.38,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028439_session_1.nii.gz +1541,DLBS,DLBS0028476_session_1,65.91,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028476_session_1.nii.gz +1542,DLBS,DLBS0028519_session_1,64.79,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028519_session_1.nii.gz +1543,DLBS,DLBS0028444_session_1,81.41,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028444_session_1.nii.gz +1544,DLBS,DLBS0028555_session_1,64.86,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028555_session_1.nii.gz +1545,DLBS,DLBS0028379_session_1,73.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028379_session_1.nii.gz +1546,DLBS,DLBS0028498_session_1,67.16,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028498_session_1.nii.gz +1547,DLBS,DLBS0028414_session_1,68.45,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028414_session_1.nii.gz +1548,DLBS,DLBS0028369_session_1,62.67,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028369_session_1.nii.gz +1549,DLBS,DLBS0028576_session_1,32.92,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028576_session_1.nii.gz +1550,DLBS,DLBS0028470_session_1,43.19,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028470_session_1.nii.gz +1551,DLBS,DLBS0028380_session_1,83.22,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028380_session_1.nii.gz +1552,DLBS,DLBS0028343_session_1,61.27,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028343_session_1.nii.gz +1553,DLBS,DLBS0028565_session_1,80.84,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028565_session_1.nii.gz +1554,DLBS,DLBS0028494_session_1,74.24,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028494_session_1.nii.gz +1555,DLBS,DLBS0028409_session_1,70.68,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028409_session_1.nii.gz +1556,DLBS,DLBS0028611_session_1,46.79,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028611_session_1.nii.gz +1557,DLBS,DLBS0028510_session_1,51.3,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028510_session_1.nii.gz +1558,DLBS,DLBS0028570_session_1,63.31,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028570_session_1.nii.gz +1559,DLBS,DLBS0028584_session_1,51.24,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028584_session_1.nii.gz +1560,DLBS,DLBS0028566_session_1,57.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028566_session_1.nii.gz +1561,DLBS,DLBS0028521_session_1,39.74,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028521_session_1.nii.gz +1562,DLBS,DLBS0028450_session_1,44.99,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028450_session_1.nii.gz +1563,DLBS,DLBS0028497_session_1,49.13,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028497_session_1.nii.gz +1564,DLBS,DLBS0028398_session_1,83.33,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028398_session_1.nii.gz +1565,DLBS,DLBS0028331_session_1,77.51,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028331_session_1.nii.gz +1566,DLBS,DLBS0028400_session_1,49.92,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028400_session_1.nii.gz +1567,DLBS,DLBS0028589_session_1,59.75,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028589_session_1.nii.gz +1568,DLBS,DLBS0028447_session_1,51.78,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028447_session_1.nii.gz +1569,DLBS,DLBS0028638_session_1,70.98,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028638_session_1.nii.gz +1570,DLBS,DLBS0028460_session_1,37.05,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028460_session_1.nii.gz +1571,DLBS,DLBS0028432_session_1,53.75,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028432_session_1.nii.gz +1572,DLBS,DLBS0028561_session_1,49.51,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028561_session_1.nii.gz +1573,DLBS,DLBS0028613_session_1,74.4,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028613_session_1.nii.gz +1574,DLBS,DLBS0028389_session_1,33.45,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028389_session_1.nii.gz +1575,DLBS,DLBS0028420_session_1,81.2,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028420_session_1.nii.gz +1576,DLBS,DLBS0028543_session_1,81.28,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028543_session_1.nii.gz +1577,DLBS,DLBS0028351_session_1,83.73,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028351_session_1.nii.gz +1578,DLBS,DLBS0028345_session_1,59.73,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028345_session_1.nii.gz +1579,DLBS,DLBS0028376_session_1,70.6,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028376_session_1.nii.gz +1580,DLBS,DLBS0028541_session_1,45.8,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028541_session_1.nii.gz +1581,DLBS,DLBS0028622_session_1,24.6,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028622_session_1.nii.gz +1582,DLBS,DLBS0028530_session_1,49.86,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028530_session_1.nii.gz +1583,DLBS,DLBS0028548_session_1,40.83,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028548_session_1.nii.gz +1584,DLBS,DLBS0028332_session_1,71.29,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028332_session_1.nii.gz +1585,DLBS,DLBS0028427_session_1,25.7,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028427_session_1.nii.gz +1586,DLBS,DLBS0028350_session_1,49.82,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028350_session_1.nii.gz +1587,DLBS,DLBS0028404_session_1,38.45,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028404_session_1.nii.gz +1588,DLBS,DLBS0028508_session_1,28.67,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028508_session_1.nii.gz +1589,DLBS,DLBS0028387_session_1,54.68,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028387_session_1.nii.gz +1590,DLBS,DLBS0028591_session_1,86.25,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028591_session_1.nii.gz +1591,DLBS,DLBS0028346_session_1,57.48,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028346_session_1.nii.gz +1592,DLBS,DLBS0028512_session_1,51.64,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028512_session_1.nii.gz +1593,DLBS,DLBS0028633_session_1,46.44,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028633_session_1.nii.gz +1594,DLBS,DLBS0028582_session_1,48.45,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028582_session_1.nii.gz +1595,DLBS,DLBS0028598_session_1,84.06,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028598_session_1.nii.gz +1596,DLBS,DLBS0028571_session_1,20.57,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028571_session_1.nii.gz +1597,DLBS,DLBS0028337_session_1,53.34,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028337_session_1.nii.gz +1598,DLBS,DLBS0028431_session_1,47.63,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028431_session_1.nii.gz +1599,DLBS,DLBS0028442_session_1,29.32,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028442_session_1.nii.gz +1600,DLBS,DLBS0028373_session_1,48.4,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028373_session_1.nii.gz +1601,DLBS,DLBS0028493_session_1,53.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028493_session_1.nii.gz +1602,DLBS,DLBS0028475_session_1,54.05,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028475_session_1.nii.gz +1603,DLBS,DLBS0028635_session_1,23.5,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028635_session_1.nii.gz +1604,DLBS,DLBS0028363_session_1,26.02,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028363_session_1.nii.gz +1605,DLBS,DLBS0028559_session_1,25.01,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028559_session_1.nii.gz +1606,DLBS,DLBS0028534_session_1,54.3,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028534_session_1.nii.gz +1607,DLBS,DLBS0028383_session_1,72.96,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028383_session_1.nii.gz +1608,DLBS,DLBS0028496_session_1,22.44,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028496_session_1.nii.gz +1609,DLBS,DLBS0028418_session_1,70.49,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028418_session_1.nii.gz +1610,DLBS,DLBS0028579_session_1,21.77,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028579_session_1.nii.gz +1611,DLBS,DLBS0028367_session_1,29.58,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028367_session_1.nii.gz +1612,DLBS,DLBS0028624_session_1,81.96,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028624_session_1.nii.gz +1613,DLBS,DLBS0028533_session_1,46.77,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028533_session_1.nii.gz +1614,DLBS,DLBS0028539_session_1,24.22,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028539_session_1.nii.gz +1615,DLBS,DLBS0028575_session_1,81.02,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028575_session_1.nii.gz +1616,DLBS,DLBS0028629_session_1,81.12,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028629_session_1.nii.gz +1617,DLBS,DLBS0028489_session_1,70.28,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028489_session_1.nii.gz +1618,DLBS,DLBS0028640_session_1,33.41,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028640_session_1.nii.gz +1619,DLBS,DLBS0028620_session_1,70.66,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028620_session_1.nii.gz +1620,DLBS,DLBS0028459_session_1,66.13,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028459_session_1.nii.gz +1621,DLBS,DLBS0028484_session_1,70.08,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028484_session_1.nii.gz +1622,DLBS,DLBS0028348_session_1,23.15,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028348_session_1.nii.gz +1623,DLBS,DLBS0028517_session_1,23.14,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028517_session_1.nii.gz +1624,DLBS,DLBS0028604_session_1,22.6,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028604_session_1.nii.gz +1625,DLBS,DLBS0028607_session_1,66.74,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028607_session_1.nii.gz +1626,DLBS,DLBS0028327_session_1,73.29,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028327_session_1.nii.gz +1627,DLBS,DLBS0028601_session_1,71.54,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028601_session_1.nii.gz +1628,DLBS,DLBS0028370_session_1,22.88,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028370_session_1.nii.gz +1629,DLBS,DLBS0028507_session_1,36.91,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028507_session_1.nii.gz +1630,DLBS,DLBS0028361_session_1,55.56,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028361_session_1.nii.gz +1631,DLBS,DLBS0028618_session_1,26.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028618_session_1.nii.gz +1632,DLBS,DLBS0028449_session_1,28.96,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028449_session_1.nii.gz +1633,DLBS,DLBS0028522_session_1,34.99,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028522_session_1.nii.gz +1634,DLBS,DLBS0028514_session_1,34.44,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028514_session_1.nii.gz +1635,DLBS,DLBS0028531_session_1,21.27,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028531_session_1.nii.gz +1636,DLBS,DLBS0028551_session_1,24.66,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028551_session_1.nii.gz +1637,DLBS,DLBS0028621_session_1,30.6,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028621_session_1.nii.gz +1638,DLBS,DLBS0028513_session_1,26.68,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028513_session_1.nii.gz +1639,DLBS,DLBS0028454_session_1,42.92,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028454_session_1.nii.gz +1640,DLBS,DLBS0028411_session_1,83.09,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028411_session_1.nii.gz +1641,DLBS,DLBS0028546_session_1,21.71,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028546_session_1.nii.gz +1642,DLBS,DLBS0028538_session_1,76.39,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028538_session_1.nii.gz +1643,DLBS,DLBS0028364_session_1,24.49,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028364_session_1.nii.gz +1644,DLBS,DLBS0028390_session_1,22.5,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028390_session_1.nii.gz +1645,DLBS,DLBS0028359_session_1,71.2,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028359_session_1.nii.gz +1646,DLBS,DLBS0028334_session_1,55.26,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028334_session_1.nii.gz +1647,DLBS,DLBS0028430_session_1,89.11,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028430_session_1.nii.gz +1648,DLBS,DLBS0028487_session_1,73.56,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028487_session_1.nii.gz +1649,DLBS,DLBS0028563_session_1,44.97,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028563_session_1.nii.gz +1650,DLBS,DLBS0028445_session_1,55.37,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028445_session_1.nii.gz +1651,DLBS,DLBS0028453_session_1,73.26,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028453_session_1.nii.gz +1652,DLBS,DLBS0028481_session_1,41.87,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028481_session_1.nii.gz +1653,DLBS,DLBS0028465_session_1,21.67,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028465_session_1.nii.gz +1654,DLBS,DLBS0028511_session_1,23.55,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028511_session_1.nii.gz +1655,DLBS,DLBS0028443_session_1,36.18,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028443_session_1.nii.gz +1656,DLBS,DLBS0028568_session_1,41.17,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028568_session_1.nii.gz +1657,DLBS,DLBS0028552_session_1,48.86,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028552_session_1.nii.gz +1658,DLBS,DLBS0028614_session_1,53.77,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028614_session_1.nii.gz +1659,DLBS,DLBS0028417_session_1,31.77,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028417_session_1.nii.gz +1660,DLBS,DLBS0028626_session_1,48.88,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028626_session_1.nii.gz +1661,DLBS,DLBS0028393_session_1,61.69,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028393_session_1.nii.gz +1662,DLBS,DLBS0028573_session_1,44.29,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028573_session_1.nii.gz +1663,DLBS,DLBS0028564_session_1,40.21,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028564_session_1.nii.gz +1664,DLBS,DLBS0028451_session_1,43.61,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028451_session_1.nii.gz +1665,DLBS,DLBS0028415_session_1,32.05,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028415_session_1.nii.gz +1666,DLBS,DLBS0028585_session_1,31.4,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028585_session_1.nii.gz +1667,DLBS,DLBS0028386_session_1,33.13,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028386_session_1.nii.gz +1668,DLBS,DLBS0028391_session_1,36.03,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028391_session_1.nii.gz +1669,DLBS,DLBS0028467_session_1,34.4,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028467_session_1.nii.gz +1670,DLBS,DLBS0028384_session_1,30.5,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028384_session_1.nii.gz +1671,DLBS,DLBS0028328_session_1,30.47,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028328_session_1.nii.gz +1672,DLBS,DLBS0028482_session_1,63.47,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028482_session_1.nii.gz +1673,DLBS,DLBS0028353_session_1,60.01,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028353_session_1.nii.gz +1674,DLBS,DLBS0028544_session_1,81.75,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028544_session_1.nii.gz +1675,DLBS,DLBS0028469_session_1,50.46,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028469_session_1.nii.gz +1676,DLBS,DLBS0028491_session_1,24.2,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028491_session_1.nii.gz +1677,DLBS,DLBS0028504_session_1,73.07,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028504_session_1.nii.gz +1678,DLBS,DLBS0028506_session_1,86.38,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028506_session_1.nii.gz +1679,DLBS,DLBS0028355_session_1,70.7,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028355_session_1.nii.gz +1680,DLBS,DLBS0028356_session_1,43.21,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028356_session_1.nii.gz +1681,DLBS,DLBS0028455_session_1,72.56,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028455_session_1.nii.gz +1682,DLBS,DLBS0028436_session_1,75.99,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028436_session_1.nii.gz +1683,DLBS,DLBS0028478_session_1,70.35,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028478_session_1.nii.gz +1684,DLBS,DLBS0028529_session_1,86.77,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028529_session_1.nii.gz +1685,DLBS,DLBS0028466_session_1,74.5,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028466_session_1.nii.gz +1686,DLBS,DLBS0028462_session_1,31.03,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028462_session_1.nii.gz +1687,DLBS,DLBS0028452_session_1,59.71,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028452_session_1.nii.gz +1688,DLBS,DLBS0028588_session_1,48.53,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028588_session_1.nii.gz +1689,DLBS,DLBS0028525_session_1,60.74,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028525_session_1.nii.gz +1690,DLBS,DLBS0028486_session_1,37.81,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028486_session_1.nii.gz +1691,DLBS,DLBS0028371_session_1,31.11,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028371_session_1.nii.gz +1692,DLBS,DLBS0028483_session_1,47.0,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028483_session_1.nii.gz +1693,DLBS,DLBS0028634_session_1,38.33,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028634_session_1.nii.gz +1694,DLBS,DLBS0028608_session_1,38.13,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028608_session_1.nii.gz +1695,DLBS,DLBS0028458_session_1,35.43,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028458_session_1.nii.gz +1696,DLBS,DLBS0028416_session_1,31.58,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028416_session_1.nii.gz +1697,DLBS,DLBS0028329_session_1,30.74,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028329_session_1.nii.gz +1698,DLBS,DLBS0028338_session_1,30.26,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028338_session_1.nii.gz +1699,DLBS,DLBS0028341_session_1,34.81,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028341_session_1.nii.gz +1700,DLBS,DLBS0028535_session_1,80.11,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028535_session_1.nii.gz +1701,DLBS,DLBS0028553_session_1,30.76,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028553_session_1.nii.gz +1702,DLBS,DLBS0028630_session_1,38.37,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028630_session_1.nii.gz +1703,DLBS,DLBS0028426_session_1,82.07,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028426_session_1.nii.gz +1704,DLBS,DLBS0028623_session_1,30.31,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028623_session_1.nii.gz +1705,DLBS,DLBS0028609_session_1,85.77,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028609_session_1.nii.gz +1706,DLBS,DLBS0028502_session_1,82.54,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028502_session_1.nii.gz +1707,DLBS,DLBS0028423_session_1,30.69,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028423_session_1.nii.gz +1708,DLBS,DLBS0028627_session_1,47.3,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028627_session_1.nii.gz +1709,DLBS,DLBS0028524_session_1,56.55,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028524_session_1.nii.gz +1710,DLBS,DLBS0028402_session_1,86.41,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028402_session_1.nii.gz +1711,DLBS,DLBS0028464_session_1,82.43,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028464_session_1.nii.gz +1712,DLBS,DLBS0028595_session_1,87.68,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028595_session_1.nii.gz +1713,DLBS,DLBS0028372_session_1,74.83,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028372_session_1.nii.gz +1714,DLBS,DLBS0028330_session_1,35.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028330_session_1.nii.gz +1715,DLBS,DLBS0028619_session_1,36.41,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028619_session_1.nii.gz +1716,DLBS,DLBS0028485_session_1,57.23,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028485_session_1.nii.gz +1717,DLBS,DLBS0028440_session_1,34.25,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028440_session_1.nii.gz +1718,DLBS,DLBS0028536_session_1,82.57,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028536_session_1.nii.gz +1719,DLBS,DLBS0028410_session_1,74.11,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028410_session_1.nii.gz +1720,DLBS,DLBS0028437_session_1,64.01,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028437_session_1.nii.gz +1721,DLBS,DLBS0028501_session_1,88.36,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028501_session_1.nii.gz +1722,DLBS,DLBS0028473_session_1,56.11,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028473_session_1.nii.gz +1723,DLBS,DLBS0028347_session_1,85.66,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028347_session_1.nii.gz +1724,DLBS,DLBS0028594_session_1,80.29,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028594_session_1.nii.gz +1725,DLBS,DLBS0028606_session_1,81.91,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028606_session_1.nii.gz +1726,DLBS,DLBS0028382_session_1,88.07,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028382_session_1.nii.gz +1727,DLBS,DLBS0028583_session_1,80.54,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028583_session_1.nii.gz +1728,DLBS,DLBS0028516_session_1,88.14,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028516_session_1.nii.gz +1729,DLBS,DLBS0028405_session_1,86.45,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028405_session_1.nii.gz +1730,DLBS,DLBS0028395_session_1,83.87,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028395_session_1.nii.gz +1731,DLBS,DLBS0028503_session_1,88.32,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028503_session_1.nii.gz +1732,DLBS,DLBS0028397_session_1,35.33,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028397_session_1.nii.gz +1733,DLBS,DLBS0028610_session_1,80.82,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028610_session_1.nii.gz +1734,DLBS,DLBS0028446_session_1,50.89,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028446_session_1.nii.gz +1735,DLBS,DLBS0028433_session_1,80.5,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028433_session_1.nii.gz +1736,DLBS,DLBS0028435_session_1,33.01,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028435_session_1.nii.gz +1737,DLBS,DLBS0028597_session_1,52.52,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028597_session_1.nii.gz +1738,DLBS,DLBS0028581_session_1,74.58,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028581_session_1.nii.gz +1739,DLBS,DLBS0028567_session_1,85.6,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028567_session_1.nii.gz +1740,DLBS,DLBS0028540_session_1,71.04,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028540_session_1.nii.gz +1741,DLBS,DLBS0028342_session_1,31.98,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028342_session_1.nii.gz +1742,DLBS,DLBS0028637_session_1,44.54,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028637_session_1.nii.gz +1743,DLBS,DLBS0028526_session_1,42.6,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028526_session_1.nii.gz +1744,DLBS,DLBS0028472_session_1,42.45,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028472_session_1.nii.gz +1745,DLBS,DLBS0028547_session_1,32.13,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028547_session_1.nii.gz +1746,DLBS,DLBS0028406_session_1,47.65,train,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028406_session_1.nii.gz +1747,DLBS,DLBS0028556_session_1,36.97,test,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028556_session_1.nii.gz +1748,DLBS,DLBS0028422_session_1,32.91,dev,/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/0028422_session_1.nii.gz diff --git a/create_ds.py b/create_ds.py new file mode 100644 index 0000000..fa9b452 --- /dev/null +++ b/create_ds.py @@ -0,0 +1,123 @@ +import pandas as pd +import numpy as np +import os + + +# Load the metadata CSV +df_ixi = pd.read_csv("ixi_storage/ixi_brainrotnet_metadata.csv") + + +df_ixi = pd.read_csv("ixi_storage/ixi_brainrotnet_metadata.csv") +df_ixi['uid'] = df_ixi['ImageID'] + +# Directory containing the files +ixi_dir = "ixi_storage/IXI-T1" + +# List all files in the directory and get their absolute paths +file_list = [os.path.abspath(os.path.join(ixi_dir, f)) for f in os.listdir(ixi_dir) if os.path.isfile(os.path.join(ixi_dir, f))] + +# Function to find the matching file path based on the first 6 characters +def find_matching_path(image_id, files): + for file_path in files: + file_name = os.path.basename(file_path) + if file_name[:6] == image_id: + return file_path + return None + + + +# Add the 'path' column by matching ImageID with file names +df_ixi['path'] = df_ixi['ImageID'].apply(lambda x: find_matching_path(x, file_list)) + +# Display a sample of the updated DataFrame +# Drop columns 'Sex' and 'ImageID' +df_ixi = df_ixi.drop(columns=['Sex', 'ImageID']) + +# Rename the column 'Age' to 'age_at_scan' +df_ixi = df_ixi.rename(columns={'Age': 'age_at_scan'}) + +# print head of the updated DataFrame +# print(df_ixi.head())# Load the metadata CSV +df_ixi['Project'] = 'IXI' + + +df_fcon = pd.read_csv("fcon_storage/fcon1000_brainrotnet_metadata.csv") +df_fcon['uid'] = df_fcon['ImageID'] +#drop first 8 characters from the 'ImageID' column, ad .nii.gz to the end and add /home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/ to the beginning +df_fcon['ImageID'] = '/home/nafiu/BasicData/cse472_DL_project/fcon_storage/fcon1000/' + df_fcon['ImageID'].str[8:] + '.nii.gz' +df_fcon = df_fcon.rename(columns={'ImageID': 'path'}) +df_fcon = df_fcon.rename(columns={'Age': 'age_at_scan'}) +df_fcon = df_fcon.drop(columns=['Sex']) +df_fcon['Project'] = 'FCON1000' + +# print(df_fcon.head())# Load the metadata CSV + +# new csv save +df_ixi.to_csv('ixi_storage/ixi_metadata.csv', index=False) + + +df_dlbs = pd.read_csv("dlbs_storage/dlbs_brainrotnet_metadata.csv") +df_dlbs['uid'] = df_dlbs['ImageID'] +df_dlbs['ImageID'] = '/home/nafiu/BasicData/cse472_DL_project/dlbs_storage/DLBS/' + df_dlbs['ImageID'].str[4:] + '.nii.gz' + +df_dlbs = df_dlbs.rename(columns={'ImageID': 'path'}) +df_dlbs = df_dlbs.rename(columns={'Age': 'age_at_scan'}) +df_dlbs = df_dlbs.drop(columns=['Sex']) +df_dlbs['Project'] = 'DLBS' + + +df_dlbs.to_csv('dlbs_storage/dlbs_metadata.csv', index=False) + +# combine all the dataframes +df_combined = pd.concat([df_ixi, df_fcon, df_dlbs], ignore_index=True) +# save the combined dataframe to a csv file +df_combined.to_csv('combined_metadata.csv', index=False) +df_combined = pd.read_csv("combined_metadata.csv") # Optionally use 'index_col=0' if the first column is the index +print(df_combined.head()) + +import uuid + +# Assuming df_combined is already loaded +# Example: df_combined = pd.read_csv("combined_metadata.csv") + +# Step 1: Add a unique 'indx' column (starting from 0) +df_combined['indx'] = range(len(df_combined)) + +# Step 2: Add a unique 'uid' column using UUIDs + +# Step 3: Randomly assign 'train', 'dev', or 'test' based on the desired distribution +# Create a list of partitions: 60% train, 20% dev, 20% test +np.random.seed(42) # For reproducibility +partition_labels = ['train'] * int(0.6 * len(df_combined)) + \ + ['dev'] * int(0.2 * len(df_combined)) + \ + ['test'] * int(0.2 * len(df_combined)) + +# If there are any remaining rows due to rounding errors, add them as 'train' +remaining = len(df_combined) - len(partition_labels) +partition_labels += ['train'] * remaining + +# Shuffle the partition labels randomly +np.random.shuffle(partition_labels) + +# Assign the shuffled partition labels to the DataFrame +df_combined['partition'] = partition_labels + +# Save the updated DataFrame (optional) +df_combined.to_csv("combined_metadata.csv", index=False) + +# Display the first few rows +print(df_combined.head()) +print(df_combined.columns) + +# Define the desired column order +desired_order = ['indx', 'Project', 'uid', 'age_at_scan', 'partition', 'path'] + +# Reorder the columns +df_combined = df_combined[desired_order] + +# Save the updated DataFrame to a CSV (optional) +df_combined.to_csv("combined_metadata.csv", index=False) + +# Verify the new column order +print(df_combined.head()) +print(df_combined.columns) \ No newline at end of file diff --git a/cringe.py b/cringe.py index e60d0c8..8ff8dd7 100644 --- a/cringe.py +++ b/cringe.py @@ -1,68 +1,443 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from transformers import ViTForImageClassification +from transformers import DeiTForImageClassification +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDataset, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset +import gc + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # Load the CSV file into a pandas DataFrame csv_path = "adni_storage/adni_brainrotnet_metadata.csv" -df = pd.read_csv(csv_path) +df_adni = pd.read_csv(csv_path) # df = df.sample(n=1000, random_state=69420) -print (df) # Add a new column 'filepath' with the constructed file paths -df['filepath'] = df.apply( - lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", axis=1 ) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age', 'filepath']], + + ], ignore_index=True) -# Prepare dataset and dataloaders +df['Age_Group'] = df['Age'].astype(int).apply(lambda x: f"{x:03d}"[:-1] + "0") +df['Age_Group'] = df['Age_Group'] + df['Sex'] +print (df['Age_Group'].unique()) sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() age_list = df['Age'].tolist() +filepath_list = df['filepath'].tolist() +label_list = df['Age_Group'].tolist() + +unique_labels = sorted(set(label_list)) # Ensure consistent ordering +label_to_idx = {label: idx for idx, label in enumerate(unique_labels)} +idx_to_label = {idx: label for label, idx in label_to_idx.items()} # Reverse mapping for decoding + +# Convert labels to integers +numeric_labels = [label_to_idx[label] for label in label_list] +label_list = numeric_labels + +roi = 160 + +# Transformation pipeline for ViT +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # Normalize for ViT +]) + + +# Function to extract 16 evenly spaced slices +def extract_slices(volume, num_slices=16): + total_slices = volume.shape[0] + indices = np.linspace(0, total_slices - 1, num_slices, dtype=int) + return volume[indices, :, :] # Select slices + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + +# Function to preprocess data and dynamically expand slices while saving to disk +def preprocess_and_expand(dataset, transform, output_dir, num_slices=16): + os.makedirs(output_dir, exist_ok=True) # Ensure output directory exists + expanded_images, expanded_labels = [], [] + + for filepath, label in tqdm(dataset, desc="Processing Slices"): + # Check if all slice files already exist + all_slices_exist = True + slice_filenames = [ + os.path.join(output_dir, f"{os.path.basename(filepath)}_slice_{i}.pt") + for i in range(num_slices) + ] + if not all(os.path.exists(slice_file) for slice_file in slice_filenames): + all_slices_exist = False + + # Skip processing if all slices exist + if all_slices_exist: + expanded_images.extend(slice_filenames) # Add existing file paths + expanded_labels.extend([label] * num_slices) + continue + + # Load NIfTI image only if slices are missing + nii_img = nib.load(filepath) + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + data = crop_brain_volumes(data) + + # Normalize and extract slices + data = (data - data.min()) / (data.max() - data.min()) + slices = extract_slices(data, num_slices) + + # Transform each slice, save to file, and add to dataset + for i, slice_data in enumerate(slices): + slice_filename = slice_filenames[i] + if not os.path.exists(slice_filename): + transformed_slice = transform(slice_data) # Transform slice + torch.save(transformed_slice, slice_filename) # Save to file + expanded_images.append(slice_filename) # Store file path + expanded_labels.append(label) + + return expanded_images, expanded_labels +# Instantiate Dataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +# Split Dataset +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +# Create New Dataset with Filepaths +class ExpandedDataset(Dataset): + def __init__(self, image_paths, labels): + self.image_paths = image_paths + self.labels = labels + + def __len__(self): + return len(self.labels) + + def __getitem__(self, idx): + # Load the image from file + image = torch.load(self.image_paths[idx]) + label = torch.tensor(self.labels[idx], dtype=torch.long) + return image, label + +slice_count = 32 + +# Define output directory for slices +output_dir = f"processed_slices/{slice_count}" + +# Preprocess and expand the training data +expanded_image_paths, expanded_labels = preprocess_and_expand(vit_train_dataset, transform, output_dir, num_slices=slice_count) + +# Create Expanded Dataset and DataLoader +expanded_train_dataset = ExpandedDataset(expanded_image_paths, expanded_labels) +expanded_train_loader = DataLoader(expanded_train_dataset, batch_size=8, shuffle=True) + + +# Load ViT model +num_classes = df['Age_Group'].nunique() # Number of unique Age_Groups +model = ViTForImageClassification.from_pretrained( + "google/vit-base-patch16-224", + num_labels=num_classes, + ignore_mismatched_sizes=True, +) + +model.to(device) + +# Loss function and optimizer +criterion = nn.CrossEntropyLoss() +optimizer = optim.AdamW(model.parameters(), lr=1e-4) + +# Function to save checkpoint +def save_checkpoint(epoch, model, optimizer, path=f"model_dumps/vit_train_checkpoint_{slice_count}.pth"): + torch.save({ + 'epoch': epoch, + 'model_state_dict': model.state_dict(), + 'optimizer_state_dict': optimizer.state_dict(), + }, path) + print(f"Checkpoint saved at epoch {epoch+1}") + +vit_train_epochs = 6 +model.train() +start_epoch = 0 + +for epoch in range(start_epoch, vit_train_epochs): + running_loss = 0.0 + correct = 0 + total = 0 + + for inputs, labels in tqdm(expanded_train_loader, desc=f"Epoch {epoch+1}/{vit_train_epochs}"): + # Move data to device + inputs, labels = inputs.to(device), labels.to(device) + + outputs = model(pixel_values=inputs) # ViT expects `pixel_values` + loss = criterion(outputs.logits, labels) + + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() + + _, predicted = torch.max(outputs.logits, dim=1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + epoch_loss = running_loss / len(expanded_train_loader) + epoch_accuracy = 100 * correct / total + print(f"Epoch {epoch+1}/{vit_train_epochs}, Loss: {epoch_loss:.4f}, Accuracy: {epoch_accuracy:.2f}%") + # sav the accuracy and loss for each epoch in a csv file + with open(f'vit_train_metrics_{slice_count}.csv', 'a') as f: + f.write(f"{epoch+1},{epoch_loss},{epoch_accuracy}\n") + + save_checkpoint(epoch, model, optimizer, path=f"model_dumps/vit_train_checkpoint_{slice_count}.pth") + # model.to(device) # Move back to GPU + gc.collect() + +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model.eval() + +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +torch.cuda.empty_cache() # Free GPU memory + +# To store features and labels +features_list = [] +labels_list = [] + +os.makedirs(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# Process each row in the DataFrame +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + # img.save(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{slice_count}/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + # #outputs = model(slice_tensor) + # slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +batch_size = 1 -# print (features_list) print (features_list[0].shape) -# Create Dataset and DataLoader dataset = ADNIDataset(features_list, sex_encoded, age_list) train_size = int(0.8 * len(dataset)) val_size = len(dataset) - train_size -train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) - -# Store the indices of the validation dataset +generator.manual_seed(universal_seed) +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size], generator=generator) val_indices = val_dataset.indices train_indices = train_dataset.indices -train_loader = DataLoader(train_dataset, batch_size=1, shuffle=True) -val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) - - -# Tracking outputs for validation samples +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) val_outputs = {} train_outputs = {} -# Initialize model, loss, and optimizer device = torch.device("cuda" if torch.cuda.is_available() else "cpu") -model = AgePredictionCNN(features_list[0].shape).to(device) -criterion = nn.L1Loss() # MAE Loss -optimizer = optim.Adam(model.parameters(), lr=0.001) + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.L1Loss() +eval_crit = nn.L1Loss() +# adamw +optimizer = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.001) best_loss = np.inf # Initialize the best loss to infinity start_epoch = 0 +scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.5) predicted_ages = None # Training loop -epochs = 30 +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{slice_count}/{filename}.csv" + for epoch in range(start_epoch, epochs): model.train() train_loss = 0.0 predicted_ages = [] + for idx, (features, sex, age) in enumerate(train_loader): features = features.unsqueeze(1).to(device) # Add channel dimension sex = sex.to(device) age = age.to(device) optimizer.zero_grad() outputs = model(features, sex) - train_outputs[train_indices[idx]] = outputs.item() - # print (outputs) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + loss = criterion(outputs.squeeze(), age) - loss.backward() optimizer.step() @@ -74,7 +449,6 @@ # Validation loop model.eval() val_loss = 0.0 - # predicted_ages = [] with torch.no_grad(): for idx, (features, sex, age) in enumerate(val_loader): features = features.unsqueeze(1).to(device) @@ -82,42 +456,20 @@ age = age.to(device) outputs = model(features, sex) - # predicted_ages.append(outputs.item()) - loss = criterion(outputs.squeeze(), age) - + loss = eval_crit(outputs.squeeze(), age) val_loss += loss.item() - # Save the predicted age for the current validation sample - val_outputs[val_indices[idx]] = outputs.item() + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() - # print (predicted_ages) val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + - - max_index = max(train_outputs.keys()) - # Create a DataFrame with NaN for all indices initially - df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) - # Assign the values to their respective indices - for index, value in train_outputs.items(): - df_trn.loc[index, "Predicted_Age"] = value - print (df_trn) - - df2 = df.copy() - df2['Predicted_Age'] = df_trn['Predicted_Age'] - train_df = df2.loc[train_outputs.keys()] - print (train_df) - train_df.to_csv("predicted_ages_train.csv") - - max_index = max(val_outputs.keys()) - # Create a DataFrame with NaN for all indices initially - df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) - # Assign the values to their respective indices - for index, value in val_outputs.items(): - df_pred.loc[index, "Predicted_Age"] = value - print (df_pred) - - df1 = df.copy() - df1['Predicted_Age'] = df_pred['Predicted_Age'] - test_df = df1.loc[val_outputs.keys()] - print (test_df) - test_df.to_csv("predicted_ages_val.csv") + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + diff --git a/dataset_cls.py b/dataset_cls.py new file mode 100644 index 0000000..6971413 --- /dev/null +++ b/dataset_cls.py @@ -0,0 +1,68 @@ +# Custom Dataset +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.age) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + + +class ADNIDatasetV2(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.age) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + self.age[idx] + ) + + +class ADNIDatasetLite(Dataset): + def __init__(self,image_list, sex_list, age_list): + self.images = image_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.age) + + def __getitem__(self, idx): + return ( + torch.tensor(self.images[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + +class ADNIDatasetViT(Dataset): + def __init__(self,image_list, age_list): + self.images = image_list + self.label = age_list + + def __len__(self): + return len(self.label) + + def __getitem__(self, idx): + return ( + self.images[idx], + self.label[idx], + ) diff --git a/dataviz.py b/dataviz.py new file mode 100644 index 0000000..b0cd3ea --- /dev/null +++ b/dataviz.py @@ -0,0 +1,232 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDatasetV2, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset +import gc + +# def set_random_seed(seed=69420): +# np.random.seed(seed) +# torch.manual_seed(seed) +# torch.cuda.manual_seed(seed) +# torch.cuda.manual_seed_all(seed) # For multi-GPU setups +# torch.backends.cudnn.deterministic = True +# torch.backends.cudnn.benchmark = False + +# universal_seed = 69420 + +# set_random_seed(universal_seed) + +# # Function to resample the volume to 160 slices +# def resample_volume_to_fixed_slices(data, affine, target_slices=160): +# # Convert Numpy array and affine to SimpleITK image +# sitk_img = sitk.GetImageFromArray(data) +# sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + +# original_size = sitk_img.GetSize() # (width, height, depth) +# original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + +# # Calculate new spacing to achieve the target number of slices +# new_spacing = list(original_spacing) +# new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + +# # Define new size +# new_size = [original_size[0], original_size[1], target_slices] + +# # Resample the image +# resampler = sitk.ResampleImageFilter() +# resampler.SetOutputSpacing(new_spacing) +# resampler.SetSize(new_size) +# resampler.SetInterpolator(sitk.sitkLinear) +# resampled_img = resampler.Execute(sitk_img) + +# return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +# def resample_nifti(img_data, target_slices = 160): +# # Determine the current number of slices along the z-axis (3rd dimension) +# current_slices = img_data.shape[0] +# # Calculate the zoom factor for resampling (only along the z-axis) +# zoom_factor = target_slices / current_slices +# # Resample the image data along the z-axis +# resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation +# # Ensure that the resampled data has the target number of slices +# # print (resampled_data.shape) +# # resampled_data = resampled_data[:target_slices,:,:] +# # print (resampled_data.shape) +# return resampled_data + + +# # Check if GPU is available +# device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# # Load the CSV file into a pandas DataFrame +# csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +# df_adni = pd.read_csv(csv_path) +# # df = df.sample(n=1000, random_state=69420) +# # Add a new column 'filepath' with the constructed file paths +# df_adni['filepath'] = df_adni.apply( +# lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) + + +# metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +# df_dlbs = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_dlbs['filepath'] = df_dlbs.apply( +# lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", +# axis=1 +# ) + + +# metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +# df_fcon = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_fcon['filepath'] = df_fcon.apply( +# lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_fcon = df_fcon.dropna() + +# metadata_path = "camcan_storage/camcan_brainrotnet_metadata.csv" +# df_camcan = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_camcan['filepath'] = df_camcan.apply( +# lambda row: f"camcan_storage/CamCAN_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) + +# df = pd.concat([ +# df_adni[['ImageID', 'Sex', 'Age', 'filepath']], +# df_dlbs[['ImageID', 'Sex', 'Age', 'filepath']], +# df_fcon[['ImageID', 'Sex', 'Age', 'filepath']], +# df_camcan[['ImageID', 'Sex', 'Age', 'filepath']] +# ], ignore_index=True) + +# class DataFrameDataset(Dataset): +# def __init__(self, dataframe): +# self.dataframe = dataframe + +# def __len__(self): +# return len(self.dataframe) + +# def __getitem__(self, idx): +# return self.dataframe.iloc[idx] + +# wrapped_dataset = DataFrameDataset(df) + +# generator = torch.Generator().manual_seed(universal_seed) + +# train_size = int(0.8 * len(wrapped_dataset)) +# val_size = len(wrapped_dataset) - train_size +# train_dataset, val_dataset = torch.utils.data.random_split(wrapped_dataset, [train_size, val_size], generator=generator) + +# df_train = pd.DataFrame([item for item in train_dataset]) +# df_val = pd.DataFrame([item for item in val_dataset]) + +# df_train.to_csv("train_dataset.csv", index=False) +# df_val.to_csv("val_dataset.csv", index=False) + +# Load datasets +# df_train = pd.read_csv("train_dataset.csv") +# df_val = pd.read_csv("val_dataset.csv") + +#combine the datasets and save them in a csv + +# df_combined = pd.concat([df_train, df_val], ignore_index=True) +# df_combined.to_csv("combined_dataset.csv", index=False) +# Load the combined dataset + + +# import pandas as pd +# import numpy as np + +# df = pd.read_csv("combined_dataset.csv") + +# # Initialize dictionaries to store age data for each dataset +# adni_ages = [] +# dlbs_ages = [] +# fcon_ages = [] +# camcan_ages = [] + +# # Loop through the dataframe and classify rows based on file path +# for index, row in df.iterrows(): +# if 'adni_storage' in row['filepath']: +# adni_ages.append(row['Age']) +# elif 'dlbs_storage' in row['filepath']: +# dlbs_ages.append(row['Age']) +# elif 'fcon1000_storage' in row['filepath']: +# fcon_ages.append(row['Age']) +# elif 'camcan_storage' in row['filepath']: +# camcan_ages.append(row['Age']) + +# # TOTAL NUMBER OF IMAGES +# print(f"ADNI: {len(adni_ages)}") +# print(f"DLBS: {len(dlbs_ages)}") +# print(f"FCON: {len(fcon_ages)}") +# print(f"Cam-CAN: {len(camcan_ages)}") + +# # Calculate mean and standard deviation for each dataset +# adni_mean, adni_std = np.mean(adni_ages), np.std(adni_ages) +# dlbs_mean, dlbs_std = np.mean(dlbs_ages), np.std(dlbs_ages) +# fcon_mean, fcon_std = np.mean(fcon_ages), np.std(fcon_ages) +# camcan_mean, camcan_std = np.mean(camcan_ages), np.std(camcan_ages) + +# # Print the results +# print(f"ADNI: {adni_mean:.2f} ± {adni_std:.2f}") +# print(f"DLBS: {dlbs_mean:.2f} ± {dlbs_std:.2f}") +# print(f"FCON: {fcon_mean:.2f} ± {fcon_std:.2f}") +# print(f"Cam-CAN: {camcan_mean:.2f} ± {camcan_std:.2f}") + +# # compute the range of ages for each dataset +# print("Age ranges:") +# print(f"ADNI: {min(adni_ages)} - {max(adni_ages)}") +# print(f"DLBS: {min(dlbs_ages)} - {max(dlbs_ages)}") +# print(f"FCON: {min(fcon_ages)} - {max(fcon_ages)}") +# print(f"Cam-CAN: {min(camcan_ages)} - {max(camcan_ages)}") + +# # Load the datasets + +# df_train = pd.read_csv("train_dataset.csv") +# df_val = pd.read_csv("val_dataset.csv") + +# print(len(df_train)) +# print(len(df_val)) + +# count_train_adni = df_train['filepath'].str.contains('adni_storage').sum() +# count_train_dlbs = df_train['filepath'].str.contains('dlbs_storage').sum() +# count_train_fcon = df_train['filepath'].str.contains('fcon1000_storage').sum() +# count_train_camcan = df_train['filepath'].str.contains('camcan_storage').sum() +# print(f"Train ADNI: {count_train_adni}") +# print(f"Train DLBS: {count_train_dlbs}") +# print(f"Train FCON: {count_train_fcon}") +# print(f"Train Cam-CAN: {count_train_camcan}") + +# count_val_adni = df_val['filepath'].str.contains('adni_storage').sum() +# count_val_dlbs = df_val['filepath'].str.contains('dlbs_storage').sum() +# count_val_fcon = df_val['filepath'].str.contains('fcon1000_storage').sum() +# count_val_camcan = df_val['filepath'].str.contains('camcan_storage').sum() + +# print(f"Val ADNI: {count_val_adni}") +# print(f"Val DLBS: {count_val_dlbs}") +# print(f"Val FCON: {count_val_fcon}") +# print(f"Val Cam-CAN: {count_val_camcan}") + diff --git a/db3_adni.py b/db3_adni.py index ecd0040..90cd888 100644 --- a/db3_adni.py +++ b/db3_adni.py @@ -19,8 +19,8 @@ # Define the input and output directories -input_dir = "adni_storage/ADNI_nii_gz" -output_dir = "adni_storage/ADNI_nii_gz_stripped" +input_dir = "camcan_storage/CamCAN" +output_dir = "camcan_storage/CamCAN_nii_gz_stripped" # Ensure the output directory exists os.makedirs(output_dir, exist_ok=True) diff --git a/deit_train_feature_cnn_main_mix_roi.py b/deit_train_feature_cnn_main_mix_roi.py new file mode 100644 index 0000000..4c31a0b --- /dev/null +++ b/deit_train_feature_cnn_main_mix_roi.py @@ -0,0 +1,1309 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from transformers import ViTForImageClassification +from transformers import DeiTForImageClassification +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDataset, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset +import gc + +model_name = "deit" + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +# metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +# df_ixi = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_ixi['filepath'] = df_ixi.apply( +# lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) + +# metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +# df_abide = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_abide['filepath'] = df_abide.apply( +# lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +# metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +# df_cobre = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_cobre['filepath'] = df_cobre.apply( +# lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +df_sald = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_sald['filepath'] = df_sald.apply( + lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) +df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_sald = df_sald.sample(n=300) + +# metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +# df_corr = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_corr['filepath'] = df_corr.apply( +# lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +# df_corr = df_corr.sample(n=200) + + +metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +df_oas1 = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_oas1['filepath'] = df_oas1.apply( + lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) +df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +metadata_path = "camcan_storage/camcan_brainrotnet_metadata.csv" +df_camcan = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_camcan['filepath'] = df_camcan.apply( + lambda row: f"camcan_storage/CamCAN_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age', 'filepath']], + # df_ixi[['ImageID', 'Sex', 'Age', 'filepath']], + # df_abide[['ImageID', 'Sex', 'Age', 'filepath']], + df_dlbs[['ImageID', 'Sex', 'Age', 'filepath']], + # df_cobre[['ImageID', 'Sex', 'Age', 'filepath']], + df_fcon[['ImageID', 'Sex', 'Age', 'filepath']], + df_sald[['ImageID', 'Sex', 'Age', 'filepath']], + # df_corr[['ImageID', 'Sex', 'Age', 'filepath']], + df_oas1[['ImageID', 'Sex', 'Age', 'filepath']], + df_camcan[['ImageID', 'Sex', 'Age', 'filepath']] + ], ignore_index=True) +print (df) +# Ensure 'Age' is an integer +df['Age_Group'] = df['Age'].astype(int).apply(lambda x: f"{x:03d}"[:-1] + "0") +df['Age_Group'] = df['Age_Group'] + df['Sex'] +print (df['Age_Group'].unique()) +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() +filepath_list = df['filepath'].tolist() +label_list = df['Age_Group'].tolist() + +# Get unique labels and create a mapping +unique_labels = sorted(set(label_list)) # Ensure consistent ordering +label_to_idx = {label: idx for idx, label in enumerate(unique_labels)} +idx_to_label = {idx: label for label, idx in label_to_idx.items()} # Reverse mapping for decoding + +# Convert labels to integers +numeric_labels = [label_to_idx[label] for label in label_list] +label_list = numeric_labels + +roi = 160 + +# Transformation pipeline for ViT +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # Normalize for ViT +]) + + +# Function to extract 16 evenly spaced slices +def extract_slices(volume, num_slices=16): + total_slices = volume.shape[0] + indices = np.linspace(0, total_slices - 1, num_slices, dtype=int) + return volume[indices, :, :] # Select slices + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + +# Function to preprocess data and dynamically expand slices while saving to disk +def preprocess_and_expand(dataset, transform, output_dir, num_slices=16): + os.makedirs(output_dir, exist_ok=True) # Ensure output directory exists + expanded_images, expanded_labels = [], [] + + for filepath, label in tqdm(dataset, desc="Processing Slices"): + # Check if all slice files already exist + all_slices_exist = True + slice_filenames = [ + os.path.join(output_dir, f"{os.path.basename(filepath)}_slice_{i}.pt") + for i in range(num_slices) + ] + if not all(os.path.exists(slice_file) for slice_file in slice_filenames): + all_slices_exist = False + + # Skip processing if all slices exist + if all_slices_exist: + expanded_images.extend(slice_filenames) # Add existing file paths + expanded_labels.extend([label] * num_slices) + continue + + # Load NIfTI image only if slices are missing + nii_img = nib.load(filepath) + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + data = crop_brain_volumes(data) + + # Normalize and extract slices + data = (data - data.min()) / (data.max() - data.min()) + slices = extract_slices(data, num_slices) + + # Transform each slice, save to file, and add to dataset + for i, slice_data in enumerate(slices): + slice_filename = slice_filenames[i] + if not os.path.exists(slice_filename): + transformed_slice = transform(slice_data) # Transform slice + torch.save(transformed_slice, slice_filename) # Save to file + expanded_images.append(slice_filename) # Store file path + expanded_labels.append(label) + + return expanded_images, expanded_labels +# Instantiate Dataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +# Split Dataset +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +# Create New Dataset with Filepaths +class ExpandedDataset(Dataset): + def __init__(self, image_paths, labels): + self.image_paths = image_paths + self.labels = labels + + def __len__(self): + return len(self.labels) + + def __getitem__(self, idx): + # Load the image from file + image = torch.load(self.image_paths[idx]) + label = torch.tensor(self.labels[idx], dtype=torch.long) + return image, label + +slice_count = 32 + +# Define output directory for slices +output_dir = f"processed_slices/{slice_count}" + +# Preprocess and expand the training data +expanded_image_paths, expanded_labels = preprocess_and_expand(vit_train_dataset, transform, output_dir, num_slices=slice_count) + +# Create Expanded Dataset and DataLoader +expanded_train_dataset = ExpandedDataset(expanded_image_paths, expanded_labels) +expanded_train_loader = DataLoader(expanded_train_dataset, batch_size=8, shuffle=True) + +# Print Sizes +print(f"Original Training Dataset Size: {len(vit_train_dataset)}") +print(f"Expanded Training Dataset Size: {len(expanded_train_dataset)}") + + +# Load ViT model +num_classes = df['Age_Group'].nunique() # Number of unique Age_Groups +# model = ViTForImageClassification.from_pretrained( +# "google/vit-base-patch16-224", +# num_labels=num_classes, +# ignore_mismatched_sizes=True, +# ) + +model = DeiTForImageClassification.from_pretrained( + "facebook/deit-base-distilled-patch16-224", + num_labels=num_classes, + ignore_mismatched_sizes=True, +) + + +model.to(device) + +# Loss function and optimizer +criterion = nn.CrossEntropyLoss() +optimizer = optim.AdamW(model.parameters(), lr=1e-4) + +# Function to save checkpoint +def save_checkpoint(epoch, model, optimizer, path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth"): + torch.save({ + 'epoch': epoch, + 'model_state_dict': model.state_dict(), + 'optimizer_state_dict': optimizer.state_dict(), + }, path) + print(f"Checkpoint saved at epoch {epoch+1}") + +# Function to load checkpoint +def load_checkpoint(path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth"): + checkpoint = torch.load(path) + model.load_state_dict(checkpoint['model_state_dict']) + optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + start_epoch = checkpoint['epoch'] + 1 + print(f"Checkpoint loaded. Resuming from epoch {start_epoch}") + return start_epoch + +# Check if recovery mode is enabled +checkpoint_path = f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth" +start_epoch = 0 + +if len(sys.argv) > 4 and sys.argv[4] == "recover": + start_epoch = load_checkpoint(path=checkpoint_path) + +# Training loop +vit_train_epochs = 5 +model.train() + +for epoch in range(start_epoch, vit_train_epochs): + running_loss = 0.0 + correct = 0 + total = 0 + + for inputs, labels in tqdm(expanded_train_loader, desc=f"Epoch {epoch+1}/{vit_train_epochs}"): + # Move data to device + inputs, labels = inputs.to(device), labels.to(device) + + # Forward pass + outputs = model(pixel_values=inputs) # ViT expects `pixel_values` + loss = criterion(outputs.logits, labels) + + # Backward pass and optimization + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() + + # Calculate accuracy + _, predicted = torch.max(outputs.logits, dim=1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + # batch_accuracy = 100 * (predicted == labels).sum().item() / labels.size(0) + # print(f"Batch Accuracy: {batch_accuracy:.2f}%") + + epoch_loss = running_loss / len(expanded_train_loader) + epoch_accuracy = 100 * correct / total + print(f"Epoch {epoch+1}/{vit_train_epochs}, Loss: {epoch_loss:.4f}, Accuracy: {epoch_accuracy:.2f}%") + # sav the accuracy and loss for each epoch in a csv file + with open(f'{model_name}_train_metrics_{slice_count}.csv', 'a') as f: + f.write(f"{epoch+1},{epoch_loss},{epoch_accuracy}\n") + # Save checkpoint at the end of each epoch + # shift the model to cpu before saving + # model.to('cpu') + save_checkpoint(epoch, model, optimizer, path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth") + # model.to(device) # Move back to GPU + gc.collect() + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +# model = ViTModel.from_pretrained("google/vit-base-patch16-224") +# model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +torch.cuda.empty_cache() # Free GPU memory + + + +# To store features and labels +features_list = [] +labels_list = [] + + +# Directory to save processed images and features +os.makedirs(f"adni_storage/ADNI_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# Process each row in the DataFrame, +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + # img.save(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{slice_count}/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + # #outputs = model(slice_tensor) + # slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# Directory to save processed images and features +# os.makedirs(f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# # Directory to save processed images and features +# os.makedirs(f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"dlbs_storage/DLBS_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# os.makedirs(f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"fcon1000_storage/fcon1000_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +os.makedirs(f"sald_storage/SALD_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"sald_storage/SALD_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# os.makedirs(f"corr_storage/CORR_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +os.makedirs(f"oasis1_storage/oasis1_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"oasis1_storage/oasis1_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +os.makedirs(f"camcan_storage/CamCAN_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_camcan.iterrows(), total=len(df_camcan), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"camcan_storage/CamCAN_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + + slice_features = model.deit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +generator.manual_seed(universal_seed) +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size], generator=generator) +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.L1Loss() + +eval_crit = nn.L1Loss() +# optimizer = optim.Adam(model.parameters(), lr=0.001) +# adamw +optimizer = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.001) +#optimizer = optim.Adam(model.parameters(), lr=0.0005, weight_decay=0.0001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 +scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.5) +#scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[10, 20, 30], gamma=0.5) +#scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.5, patience=5, verbose=True) +#scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=10, eta_min=0.0001, last_epoch=-1) +#scheduler = optim.lr_scheduler.OneCycleLR(optimizer, max_lr=0.001, steps_per_epoch=len(train_loader), epochs=epochs) + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_best_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{model_name}/{slice_count}/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{slice_count}/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{slice_count}/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + #scheduler.step() + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/{model_name}/{slice_count}/plots/{model_name}_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/deit_train_metrics_32.csv b/deit_train_metrics_32.csv new file mode 100644 index 0000000..fa2d6f5 --- /dev/null +++ b/deit_train_metrics_32.csv @@ -0,0 +1,2 @@ +1,1.8282773258434377,33.88637367491166 +2,1.3353317810762213,50.72603798586572 diff --git a/oasis.sh b/oasis.sh new file mode 100644 index 0000000..7f0aa93 --- /dev/null +++ b/oasis.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Define the base directory and output directory +BASE_DIR="./OASIS" +OUTPUT_DIR="./OASIS/oasis_merged" + +# Create the output directory if it does not exist +mkdir -p "$OUTPUT_DIR" + +# Loop through disc1 to disc12 +for disc in {1..12}; do + # Find all .hdr files in the specific folder structure + find "$BASE_DIR" -type f -path "*/disc${disc}/*/PROCESSED/MPRAGE/SUBJ_111/*.hdr" | while read -r hdr_file; do + # Get the corresponding .img file + img_file="${hdr_file%.hdr}.img" + + # Check if the corresponding .img file exists + if [ -f "$img_file" ]; then + # Extract the base name without extension + base_name=$(basename "$hdr_file" .hdr) + + # Define the output file path + output_file="$OUTPUT_DIR/${base_name}.nii.gz" + + # Run the conversion using fslchfiletype + fslchfiletype NIFTI_GZ "$hdr_file" "$output_file" + + # Log the operation + echo "Converted: $hdr_file to $output_file" + else + echo "Missing .img file for: $hdr_file" >&2 + fi + done +done + +# Notify completion +echo "Conversion completed. All .nii.gz files are saved in $OUTPUT_DIR." diff --git a/roi.py b/roi.py new file mode 100644 index 0000000..3061fd5 --- /dev/null +++ b/roi.py @@ -0,0 +1,62 @@ +import os +import glob +import nibabel as nib +import numpy as np + +def main(): + # Paths to dataset folders + dataset_path = "ixi" + output_folder = "ixiclroi" + # Create the output folder if it doesn't exist + os.makedirs(output_folder, exist_ok=True) + + # Retrieve file paths for brain volumes (supporting .nii.gz) + brain_volume_list = sorted(glob.glob(os.path.join(dataset_path, '**/*.nii.gz'), recursive=True)) + + # Crop and save volumes + crop_and_save_brain_volumes(brain_volume_list, output_folder) + + print("Cropped brain volumes saved to:", output_folder) + + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_and_save_brain_volumes(brain_volume_list, output_folder): + for brain_path in brain_volume_list: + # Load the brain volume + brain_volume = nib.load(brain_path) + brain_data = brain_volume.get_fdata() + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + + # Save the cropped brain volume + _, filename = os.path.split(brain_path) + filename_without_extension = os.path.splitext(os.path.splitext(filename)[0])[0] # Handles .nii.gz + cropped_output_path = os.path.join(output_folder, filename_without_extension + "_cropped.nii.gz") + + nib.save(nib.Nifti1Image(cropped_brain, brain_volume.affine), cropped_output_path) + + print(f"Processed and saved: {filename}") + + +if __name__ == "__main__": + main() diff --git a/train_dataset.csv b/train_dataset.csv new file mode 100644 index 0000000..0177cbe --- /dev/null +++ b/train_dataset.csv @@ -0,0 +1,1785 @@ +ImageID,Sex,Age,filepath +ADNI1283849,F,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1283849_305_S_6845.stripped.N4.nii.gz +ADNI308453,M,61.3,adni_storage/ADNI_nii_gz_bias_corrected/I308453_073_S_4795.stripped.N4.nii.gz +fcon1000Milwaukee_sub61779,F,56.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub61779.stripped.N4.nii.gz +fcon1000Beijing_sub67844,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub67844.stripped.N4.nii.gz +ADNI997517,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I997517_131_S_6170.stripped.N4.nii.gz +DLBS0028440_session_1,F,34.25,dlbs_storage/DLBS_bias_corrected/0028440_session_1.stripped.N4.nii.gz +sub-CC520279,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520279.stripped.N4.nii.gz +sub-CC610653,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610653.stripped.N4.nii.gz +fcon1000AnnArbor_sub18698,M,29.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub18698.stripped.N4.nii.gz +DLBS0028358_session_1,M,66.63,dlbs_storage/DLBS_bias_corrected/0028358_session_1.stripped.N4.nii.gz +sub-CC420587,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420587.stripped.N4.nii.gz +sub-CC520147,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520147.stripped.N4.nii.gz +fcon1000Cambridge_sub13216,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13216.stripped.N4.nii.gz +sub-CC410091,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410091.stripped.N4.nii.gz +ADNI341152,M,60.6,adni_storage/ADNI_nii_gz_bias_corrected/I341152_128_S_4599.stripped.N4.nii.gz +fcon1000Newark_sub41006,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub41006.stripped.N4.nii.gz +DLBS0028376_session_1,F,70.6,dlbs_storage/DLBS_bias_corrected/0028376_session_1.stripped.N4.nii.gz +ADNI363016,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I363016_036_S_4894.stripped.N4.nii.gz +sub-CC510076,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510076.stripped.N4.nii.gz +fcon1000Cambridge_sub04270,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04270.stripped.N4.nii.gz +ADNI1469766,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I1469766_073_S_6670.stripped.N4.nii.gz +fcon1000Berlin_sub91966,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub91966.stripped.N4.nii.gz +fcon1000Cambridge_sub15432,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15432.stripped.N4.nii.gz +fcon1000AnnArbor_sub96621,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub96621.stripped.N4.nii.gz +fcon1000Beijing_sub58614,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58614.stripped.N4.nii.gz +sub-CC420149,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420149.stripped.N4.nii.gz +fcon1000AnnArbor_sub90127,M,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub90127.stripped.N4.nii.gz +DLBS0028633_session_1,M,46.44,dlbs_storage/DLBS_bias_corrected/0028633_session_1.stripped.N4.nii.gz +DLBS0028565_session_1,M,80.84,dlbs_storage/DLBS_bias_corrected/0028565_session_1.stripped.N4.nii.gz +sub-CC320202,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320202.stripped.N4.nii.gz +ADNI999074,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I999074_130_S_6329.stripped.N4.nii.gz +ADNI1490106,M,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I1490106_037_S_6993.stripped.N4.nii.gz +ADNI10453857,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I10453857_037_S_10086.stripped.N4.nii.gz +ADNI313319,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I313319_128_S_4607.stripped.N4.nii.gz +fcon1000Milwaukee_sub76378,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub76378.stripped.N4.nii.gz +fcon1000AnnArbor_sub16960,M,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub16960.stripped.N4.nii.gz +sub-CC520078,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520078.stripped.N4.nii.gz +fcon1000Cleveland_sub80263,F,44.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub80263.stripped.N4.nii.gz +DLBS0028497_session_1,F,49.13,dlbs_storage/DLBS_bias_corrected/0028497_session_1.stripped.N4.nii.gz +sub-CC620793,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620793.stripped.N4.nii.gz +fcon1000Cleveland_sub12330,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub12330.stripped.N4.nii.gz +ADNI341366,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I341366_116_S_4625.stripped.N4.nii.gz +ADNI90756,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90756_051_S_1072.stripped.N4.nii.gz +ADNI308459,M,61.3,adni_storage/ADNI_nii_gz_bias_corrected/I308459_073_S_4795.stripped.N4.nii.gz +sub-CC520477,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520477.stripped.N4.nii.gz +DLBS0028620_session_1,F,70.66,dlbs_storage/DLBS_bias_corrected/0028620_session_1.stripped.N4.nii.gz +ADNI98971,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I98971_016_S_0769.stripped.N4.nii.gz +ADNI1639219,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1639219_011_S_7112.stripped.N4.nii.gz +sub-CC110069,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110069.stripped.N4.nii.gz +fcon1000Beijing_sub39725,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub39725.stripped.N4.nii.gz +DLBS0028585_session_1,F,31.4,dlbs_storage/DLBS_bias_corrected/0028585_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub87745,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub87745.stripped.N4.nii.gz +fcon1000Newark_sub86204,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub86204.stripped.N4.nii.gz +sub-CC510323,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510323.stripped.N4.nii.gz +fcon1000Cambridge_sub62383,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62383.stripped.N4.nii.gz +sub-CC120234,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120234.stripped.N4.nii.gz +ADNI1495816,M,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I1495816_003_S_7010.stripped.N4.nii.gz +sub-CC310008,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310008.stripped.N4.nii.gz +sub-CC320553,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320553.stripped.N4.nii.gz +DLBS0028450_session_1,F,44.99,dlbs_storage/DLBS_bias_corrected/0028450_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub18758,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18758.stripped.N4.nii.gz +ADNI984775,F,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I984775_305_S_6313.stripped.N4.nii.gz +sub-CC721377,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721377.stripped.N4.nii.gz +sub-CC510050,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510050.stripped.N4.nii.gz +ADNI1568731,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I1568731_067_S_7063.stripped.N4.nii.gz +fcon1000Cambridge_sub54846,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub54846.stripped.N4.nii.gz +sub-CC223286,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223286.stripped.N4.nii.gz +sub-CC121106,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121106.stripped.N4.nii.gz +ADNI10888787,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10888787_005_S_10101.stripped.N4.nii.gz +ADNI1315300,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I1315300_305_S_6313.stripped.N4.nii.gz +fcon1000Beijing_sub20765,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20765.stripped.N4.nii.gz +fcon1000Beijing_sub73245,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73245.stripped.N4.nii.gz +fcon1000Beijing_sub80927,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80927.stripped.N4.nii.gz +sub-CC220372,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220372.stripped.N4.nii.gz +fcon1000Cleveland_sub99664,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub99664.stripped.N4.nii.gz +fcon1000Milwaukee_sub91468,M,44.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub91468.stripped.N4.nii.gz +fcon1000Cambridge_sub83683,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub83683.stripped.N4.nii.gz +sub-CC520254,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520254.stripped.N4.nii.gz +DLBS0028422_session_1,F,32.91,dlbs_storage/DLBS_bias_corrected/0028422_session_1.stripped.N4.nii.gz +sub-CC320160,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320160.stripped.N4.nii.gz +DLBS0028612_session_1,F,67.61,dlbs_storage/DLBS_bias_corrected/0028612_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub74386,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub74386.stripped.N4.nii.gz +ADNI10927885,F,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I10927885_035_S_10193.stripped.N4.nii.gz +sub-CC120120,M,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120120.stripped.N4.nii.gz +fcon1000NewYork_sub20676,M,49.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20676.stripped.N4.nii.gz +fcon1000Milwaukee_sub67948,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub67948.stripped.N4.nii.gz +ADNI1038250,F,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I1038250_067_S_6529.stripped.N4.nii.gz +sub-CC420582,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420582.stripped.N4.nii.gz +fcon1000Cambridge_sub47498,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47498.stripped.N4.nii.gz +DLBS0028427_session_1,M,25.7,dlbs_storage/DLBS_bias_corrected/0028427_session_1.stripped.N4.nii.gz +DLBS0028328_session_1,M,30.47,dlbs_storage/DLBS_bias_corrected/0028328_session_1.stripped.N4.nii.gz +ADNI10883231,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I10883231_941_S_10169.stripped.N4.nii.gz +fcon1000Bangor_sub66585,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub66585.stripped.N4.nii.gz +fcon1000NewYork_sub22608,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub22608.stripped.N4.nii.gz +fcon1000Berlin_sub12855,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub12855.stripped.N4.nii.gz +DLBS0028436_session_1,F,75.99,dlbs_storage/DLBS_bias_corrected/0028436_session_1.stripped.N4.nii.gz +sub-CC420217,M,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420217.stripped.N4.nii.gz +ADNI1221673,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1221673_013_S_6780.stripped.N4.nii.gz +sub-CC721504,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721504.stripped.N4.nii.gz +sub-CC620490,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620490.stripped.N4.nii.gz +fcon1000Milwaukee_sub44912,F,49.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub44912.stripped.N4.nii.gz +fcon1000Milwaukee_sub56084,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56084.stripped.N4.nii.gz +fcon1000Newark_sub49705,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub49705.stripped.N4.nii.gz +sub-CC410179,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410179.stripped.N4.nii.gz +DLBS0028460_session_1,F,37.05,dlbs_storage/DLBS_bias_corrected/0028460_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub92288,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92288.stripped.N4.nii.gz +ADNI308627,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I308627_014_S_4039.stripped.N4.nii.gz +fcon1000NewYork_sub16607,M,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub16607.stripped.N4.nii.gz +sub-CC711027,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711027.stripped.N4.nii.gz +ADNI1003993,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1003993_023_S_6399.stripped.N4.nii.gz +sub-CC420226,M,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420226.stripped.N4.nii.gz +DLBS0028458_session_1,F,35.43,dlbs_storage/DLBS_bias_corrected/0028458_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub91556,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub91556.stripped.N4.nii.gz +ADNI99327,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I99327_020_S_1288.stripped.N4.nii.gz +fcon1000Cambridge_sub58360,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58360.stripped.N4.nii.gz +ADNI238745,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I238745_014_S_4039.stripped.N4.nii.gz +fcon1000Cambridge_sub27613,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27613.stripped.N4.nii.gz +DLBS0028547_session_1,F,32.13,dlbs_storage/DLBS_bias_corrected/0028547_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub17109,M,46.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub17109.stripped.N4.nii.gz +sub-CC420004,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420004.stripped.N4.nii.gz +sub-CC720071,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720071.stripped.N4.nii.gz +sub-CC721585,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721585.stripped.N4.nii.gz +fcon1000Cambridge_sub10619,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub10619.stripped.N4.nii.gz +DLBS0028555_session_1,M,64.86,dlbs_storage/DLBS_bias_corrected/0028555_session_1.stripped.N4.nii.gz +ADNI10968674,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10968674_052_S_10252.stripped.N4.nii.gz +sub-CC620406,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620406.stripped.N4.nii.gz +fcon1000Beijing_sub10186,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10186.stripped.N4.nii.gz +fcon1000Atlanta_sub49816,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub49816.stripped.N4.nii.gz +sub-CC520424,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520424.stripped.N4.nii.gz +fcon1000Berlin_sub38279,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub38279.stripped.N4.nii.gz +ADNI10277636,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I10277636_033_S_10005.stripped.N4.nii.gz +fcon1000Beijing_sub34943,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub34943.stripped.N4.nii.gz +fcon1000Cambridge_sub90674,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90674.stripped.N4.nii.gz +fcon1000Beijing_sub85818,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85818.stripped.N4.nii.gz +DLBS0028357_session_1,F,56.36,dlbs_storage/DLBS_bias_corrected/0028357_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub23869,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub23869.stripped.N4.nii.gz +ADNI280812,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I280812_023_S_4448.stripped.N4.nii.gz +sub-CC520097,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520097.stripped.N4.nii.gz +sub-CC620085,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620085.stripped.N4.nii.gz +DLBS0028570_session_1,F,63.31,dlbs_storage/DLBS_bias_corrected/0028570_session_1.stripped.N4.nii.gz +sub-CC610146,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610146.stripped.N4.nii.gz +sub-CC620919,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620919.stripped.N4.nii.gz +sub-CC720941,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720941.stripped.N4.nii.gz +ADNI423071,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I423071_128_S_4607.stripped.N4.nii.gz +fcon1000Beijing_sub76377,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub76377.stripped.N4.nii.gz +DLBS0028444_session_1,F,81.41,dlbs_storage/DLBS_bias_corrected/0028444_session_1.stripped.N4.nii.gz +ADNI290867,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I290867_128_S_4599.stripped.N4.nii.gz +fcon1000Baltimore_sub54329,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub54329.stripped.N4.nii.gz +ADNI998806,F,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I998806_037_S_6271.stripped.N4.nii.gz +ADNI285070,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I285070_073_S_4552.stripped.N4.nii.gz +sub-CC520083,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520083.stripped.N4.nii.gz +DLBS0028552_session_1,F,48.86,dlbs_storage/DLBS_bias_corrected/0028552_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub42253,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub42253.stripped.N4.nii.gz +fcon1000Beijing_sub75878,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub75878.stripped.N4.nii.gz +ADNI1611592,M,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1611592_033_S_6976.stripped.N4.nii.gz +ADNI352948,M,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I352948_002_S_1155.stripped.N4.nii.gz +fcon1000Cambridge_sub35430,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub35430.stripped.N4.nii.gz +fcon1000Cambridge_sub23780,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub23780.stripped.N4.nii.gz +sub-CC110182,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110182.stripped.N4.nii.gz +fcon1000Atlanta_sub72971,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub72971.stripped.N4.nii.gz +ADNI10283161,M,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10283161_941_S_6998.stripped.N4.nii.gz +sub-CC420089,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420089.stripped.N4.nii.gz +sub-CC711244,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711244.stripped.N4.nii.gz +fcon1000Cleveland_sub61868,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub61868.stripped.N4.nii.gz +ADNI1184048,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1184048_022_S_6013.stripped.N4.nii.gz +ADNI966268,F,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I966268_020_S_6227.stripped.N4.nii.gz +fcon1000Cambridge_sub62908,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62908.stripped.N4.nii.gz +fcon1000Beijing_sub96163,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub96163.stripped.N4.nii.gz +fcon1000Munchen_sub36052,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub36052.stripped.N4.nii.gz +ADNI1067189,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1067189_012_S_6073.stripped.N4.nii.gz +DLBS0028424_session_1,F,77.79,dlbs_storage/DLBS_bias_corrected/0028424_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub04665,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04665.stripped.N4.nii.gz +fcon1000Berlin_sub06716,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub06716.stripped.N4.nii.gz +ADNI10883247,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I10883247_037_S_10117.stripped.N4.nii.gz +sub-CC322186,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC322186.stripped.N4.nii.gz +sub-CC410243,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410243.stripped.N4.nii.gz +DLBS0028336_session_1,F,80.65,dlbs_storage/DLBS_bias_corrected/0028336_session_1.stripped.N4.nii.gz +ADNI263858,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I263858_031_S_4024.stripped.N4.nii.gz +sub-CC320616,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320616.stripped.N4.nii.gz +fcon1000Cambridge_sub27230,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27230.stripped.N4.nii.gz +sub-CC120166,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120166.stripped.N4.nii.gz +sub-CC610658,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610658.stripped.N4.nii.gz +ADNI1608103,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1608103_016_S_6941.stripped.N4.nii.gz +ADNI70745,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I70745_016_S_0769.stripped.N4.nii.gz +ADNI10546533,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I10546533_137_S_6906.stripped.N4.nii.gz +fcon1000Beijing_sub07716,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07716.stripped.N4.nii.gz +fcon1000Beijing_sub33943,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33943.stripped.N4.nii.gz +sub-CC720329,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720329.stripped.N4.nii.gz +ADNI1488791,F,54.9,adni_storage/ADNI_nii_gz_bias_corrected/I1488791_037_S_6951.stripped.N4.nii.gz +ADNI270530,M,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I270530_014_S_4039.stripped.N4.nii.gz +fcon1000Cambridge_sub52442,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52442.stripped.N4.nii.gz +sub-CC510392,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510392.stripped.N4.nii.gz +sub-CC222120,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222120.stripped.N4.nii.gz +fcon1000Atlanta_sub18219,F,33.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub18219.stripped.N4.nii.gz +ADNI417668,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I417668_128_S_4599.stripped.N4.nii.gz +sub-CC520745,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520745.stripped.N4.nii.gz +ADNI879209,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I879209_114_S_6039.stripped.N4.nii.gz +fcon1000Beijing_sub36580,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub36580.stripped.N4.nii.gz +fcon1000Cambridge_sub50953,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50953.stripped.N4.nii.gz +fcon1000AnnArbor_sub62819,M,65.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub62819.stripped.N4.nii.gz +sub-CC222797,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222797.stripped.N4.nii.gz +DLBS0028546_session_1,M,21.71,dlbs_storage/DLBS_bias_corrected/0028546_session_1.stripped.N4.nii.gz +sub-CC112141,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC112141.stripped.N4.nii.gz +fcon1000Beijing_sub73279,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73279.stripped.N4.nii.gz +sub-CC621080,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621080.stripped.N4.nii.gz +fcon1000Cambridge_sub77435,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77435.stripped.N4.nii.gz +sub-CC310402,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310402.stripped.N4.nii.gz +fcon1000Beijing_sub28206,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28206.stripped.N4.nii.gz +fcon1000Munchen_sub28697,F,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub28697.stripped.N4.nii.gz +DLBS0028487_session_1,F,73.56,dlbs_storage/DLBS_bias_corrected/0028487_session_1.stripped.N4.nii.gz +sub-CC710566,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710566.stripped.N4.nii.gz +fcon1000Cambridge_sub93609,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93609.stripped.N4.nii.gz +sub-CC121158,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121158.stripped.N4.nii.gz +sub-CC620279,M,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620279.stripped.N4.nii.gz +fcon1000Baltimore_sub23750,M,37.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub23750.stripped.N4.nii.gz +sub-CC310142,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310142.stripped.N4.nii.gz +ADNI442428,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I442428_041_S_4874.stripped.N4.nii.gz +DLBS0028337_session_1,F,53.34,dlbs_storage/DLBS_bias_corrected/0028337_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub11072,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub11072.stripped.N4.nii.gz +ADNI10461519,F,61.9,adni_storage/ADNI_nii_gz_bias_corrected/I10461519_022_S_10043.stripped.N4.nii.gz +fcon1000NewYork_sub20691,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20691.stripped.N4.nii.gz +fcon1000Beijing_sub48501,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48501.stripped.N4.nii.gz +sub-CC220223,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220223.stripped.N4.nii.gz +ADNI907713,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I907713_014_S_6076.stripped.N4.nii.gz +fcon1000AnnArbor_sub51248,M,40.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub51248.stripped.N4.nii.gz +DLBS0028483_session_1,F,47.0,dlbs_storage/DLBS_bias_corrected/0028483_session_1.stripped.N4.nii.gz +fcon1000Newark_sub59397,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub59397.stripped.N4.nii.gz +fcon1000Beijing_sub73098,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73098.stripped.N4.nii.gz +sub-CC420566,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420566.stripped.N4.nii.gz +fcon1000Berlin_sub91116,M,39.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub91116.stripped.N4.nii.gz +sub-CC620466,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620466.stripped.N4.nii.gz +sub-CC310463,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310463.stripped.N4.nii.gz +ADNI1438743,F,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1438743_114_S_6917.stripped.N4.nii.gz +DLBS0028389_session_1,M,33.45,dlbs_storage/DLBS_bias_corrected/0028389_session_1.stripped.N4.nii.gz +ADNI386092,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I386092_041_S_4874.stripped.N4.nii.gz +ADNI341369,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I341369_116_S_4625.stripped.N4.nii.gz +sub-CC721107,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721107.stripped.N4.nii.gz +fcon1000Cambridge_sub21755,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub21755.stripped.N4.nii.gz +sub-CC520211,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520211.stripped.N4.nii.gz +sub-CC220999,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220999.stripped.N4.nii.gz +sub-CC710446,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710446.stripped.N4.nii.gz +fcon1000Beijing_sub82714,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82714.stripped.N4.nii.gz +ADNI296876,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I296876_012_S_4642.stripped.N4.nii.gz +fcon1000Beijing_sub30556,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30556.stripped.N4.nii.gz +fcon1000Beijing_sub28801,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28801.stripped.N4.nii.gz +ADNI86563,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I86563_016_S_1121.stripped.N4.nii.gz +fcon1000Beijing_sub17688,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17688.stripped.N4.nii.gz +sub-CC610178,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610178.stripped.N4.nii.gz +ADNI1577482,F,56.7,adni_storage/ADNI_nii_gz_bias_corrected/I1577482_305_S_6899.stripped.N4.nii.gz +DLBS0028475_session_1,M,54.05,dlbs_storage/DLBS_bias_corrected/0028475_session_1.stripped.N4.nii.gz +ADNI271073,M,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I271073_116_S_4195.stripped.N4.nii.gz +DLBS0028531_session_1,F,21.27,dlbs_storage/DLBS_bias_corrected/0028531_session_1.stripped.N4.nii.gz +sub-CC120550,M,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120550.stripped.N4.nii.gz +fcon1000Cambridge_sub73399,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73399.stripped.N4.nii.gz +fcon1000Beijing_sub86114,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub86114.stripped.N4.nii.gz +fcon1000Beijing_sub62966,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62966.stripped.N4.nii.gz +DLBS0028384_session_1,F,30.5,dlbs_storage/DLBS_bias_corrected/0028384_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub66781,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66781.stripped.N4.nii.gz +sub-CC221733,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221733.stripped.N4.nii.gz +fcon1000Beijing_sub66158,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66158.stripped.N4.nii.gz +sub-CC610344,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610344.stripped.N4.nii.gz +fcon1000Milwaukee_sub49975,M,46.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub49975.stripped.N4.nii.gz +DLBS0028332_session_1,M,71.29,dlbs_storage/DLBS_bias_corrected/0028332_session_1.stripped.N4.nii.gz +DLBS0028471_session_1,F,67.47,dlbs_storage/DLBS_bias_corrected/0028471_session_1.stripped.N4.nii.gz +ADNI345557,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345557_019_S_5019.stripped.N4.nii.gz +fcon1000Leiden_sub52922,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub52922.stripped.N4.nii.gz +sub-CC210250,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210250.stripped.N4.nii.gz +ADNI1092245,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1092245_114_S_6039.stripped.N4.nii.gz +fcon1000Newark_sub43517,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub43517.stripped.N4.nii.gz +fcon1000Bangor_sub00031,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub00031.stripped.N4.nii.gz +fcon1000NewYork_sub46856,F,8.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub46856.stripped.N4.nii.gz +ADNI1032324,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I1032324_070_S_6548.stripped.N4.nii.gz +sub-CC610594,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610594.stripped.N4.nii.gz +fcon1000Munchen_sub09035,M,70.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub09035.stripped.N4.nii.gz +fcon1000Beijing_sub65659,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub65659.stripped.N4.nii.gz +fcon1000Cambridge_sub05453,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub05453.stripped.N4.nii.gz +fcon1000Cambridge_sub51050,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51050.stripped.N4.nii.gz +sub-CC410173,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410173.stripped.N4.nii.gz +DLBS0028407_session_1,M,86.86,dlbs_storage/DLBS_bias_corrected/0028407_session_1.stripped.N4.nii.gz +ADNI1304804,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I1304804_168_S_6085.stripped.N4.nii.gz +ADNI365456,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I365456_073_S_4795.stripped.N4.nii.gz +fcon1000Milwaukee_sub98971,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub98971.stripped.N4.nii.gz +sub-CC420261,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420261.stripped.N4.nii.gz +DLBS0028390_session_1,M,22.5,dlbs_storage/DLBS_bias_corrected/0028390_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub73317,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73317.stripped.N4.nii.gz +fcon1000Cambridge_sub67117,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub67117.stripped.N4.nii.gz +ADNI1457865,F,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I1457865_137_S_6903.stripped.N4.nii.gz +DLBS0028351_session_1,M,83.73,dlbs_storage/DLBS_bias_corrected/0028351_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub50859,F,79.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub50859.stripped.N4.nii.gz +ADNI1173877,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1173877_067_S_6525.stripped.N4.nii.gz +fcon1000Beijing_sub92430,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92430.stripped.N4.nii.gz +ADNI952046,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I952046_037_S_6141.stripped.N4.nii.gz +fcon1000Cambridge_sub88853,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88853.stripped.N4.nii.gz +DLBS0028575_session_1,M,81.02,dlbs_storage/DLBS_bias_corrected/0028575_session_1.stripped.N4.nii.gz +sub-CC220713,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220713.stripped.N4.nii.gz +DLBS0028600_session_1,M,70.31,dlbs_storage/DLBS_bias_corrected/0028600_session_1.stripped.N4.nii.gz +sub-CC110174,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110174.stripped.N4.nii.gz +fcon1000Beijing_sub59448,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub59448.stripped.N4.nii.gz +fcon1000Berlin_sub95068,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub95068.stripped.N4.nii.gz +ADNI944155,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I944155_116_S_6129.stripped.N4.nii.gz +sub-CC220419,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220419.stripped.N4.nii.gz +fcon1000Beijing_sub17642,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17642.stripped.N4.nii.gz +sub-CC520215,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520215.stripped.N4.nii.gz +fcon1000Bangor_sub36736,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub36736.stripped.N4.nii.gz +DLBS0028480_session_1,F,40.26,dlbs_storage/DLBS_bias_corrected/0028480_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub13093,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13093.stripped.N4.nii.gz +fcon1000NewYork_sub69779,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub69779.stripped.N4.nii.gz +fcon1000Cambridge_sub12346,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub12346.stripped.N4.nii.gz +ADNI62032,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I62032_016_S_1121.stripped.N4.nii.gz +sub-CC410169,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410169.stripped.N4.nii.gz +sub-CC310450,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310450.stripped.N4.nii.gz +DLBS0028520_session_1,F,65.52,dlbs_storage/DLBS_bias_corrected/0028520_session_1.stripped.N4.nii.gz +sub-CC510639,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510639.stripped.N4.nii.gz +sub-CC420286,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420286.stripped.N4.nii.gz +fcon1000Leiden_sub57187,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub57187.stripped.N4.nii.gz +sub-CC312222,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC312222.stripped.N4.nii.gz +fcon1000Bangor_sub03557,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub03557.stripped.N4.nii.gz +DLBS0028545_session_1,F,72.25,dlbs_storage/DLBS_bias_corrected/0028545_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub38454,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub38454.stripped.N4.nii.gz +fcon1000Beijing_sub17603,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17603.stripped.N4.nii.gz +DLBS0028405_session_1,F,86.45,dlbs_storage/DLBS_bias_corrected/0028405_session_1.stripped.N4.nii.gz +sub-CC220284,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220284.stripped.N4.nii.gz +DLBS0028629_session_1,F,81.12,dlbs_storage/DLBS_bias_corrected/0028629_session_1.stripped.N4.nii.gz +sub-CC620454,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620454.stripped.N4.nii.gz +ADNI10952529,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I10952529_037_S_10062.stripped.N4.nii.gz +sub-CC420776,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420776.stripped.N4.nii.gz +fcon1000Cambridge_sub55114,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55114.stripped.N4.nii.gz +sub-CC210526,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210526.stripped.N4.nii.gz +fcon1000AnnArbor_sub04111,M,25.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub04111.stripped.N4.nii.gz +fcon1000Beijing_sub45552,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub45552.stripped.N4.nii.gz +sub-CC710214,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710214.stripped.N4.nii.gz +sub-CC510329,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510329.stripped.N4.nii.gz +DLBS0028454_session_1,M,42.92,dlbs_storage/DLBS_bias_corrected/0028454_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub30421,M,17.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub30421.stripped.N4.nii.gz +DLBS0028368_session_1,M,79.65,dlbs_storage/DLBS_bias_corrected/0028368_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub84371,M,38.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub84371.stripped.N4.nii.gz +ADNI1558064,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I1558064_011_S_7048.stripped.N4.nii.gz +fcon1000Cambridge_sub00156,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub00156.stripped.N4.nii.gz +sub-CC510255,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510255.stripped.N4.nii.gz +sub-CC210304,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210304.stripped.N4.nii.gz +fcon1000NewYork_sub29935,F,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29935.stripped.N4.nii.gz +fcon1000Beijing_sub73421,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub73421.stripped.N4.nii.gz +DLBS0028369_session_1,F,62.67,dlbs_storage/DLBS_bias_corrected/0028369_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub20317,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub20317.stripped.N4.nii.gz +sub-CC320870,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320870.stripped.N4.nii.gz +fcon1000Cambridge_sub14194,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14194.stripped.N4.nii.gz +sub-CC520391,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520391.stripped.N4.nii.gz +sub-CC110319,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110319.stripped.N4.nii.gz +fcon1000AnnArbor_sub72416,M,80.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub72416.stripped.N4.nii.gz +ADNI263857,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I263857_031_S_4024.stripped.N4.nii.gz +ADNI10888807,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I10888807_019_S_10164.stripped.N4.nii.gz +fcon1000AnnArbor_sub70106,M,17.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub70106.stripped.N4.nii.gz +DLBS0028558_session_1,F,24.83,dlbs_storage/DLBS_bias_corrected/0028558_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub34781,M,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub34781.stripped.N4.nii.gz +fcon1000Atlanta_sub32093,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub32093.stripped.N4.nii.gz +sub-CC520560,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520560.stripped.N4.nii.gz +sub-CC621248,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621248.stripped.N4.nii.gz +sub-CC420396,M,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420396.stripped.N4.nii.gz +ADNI1146201,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1146201_037_S_6141.stripped.N4.nii.gz +sub-CC122172,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122172.stripped.N4.nii.gz +fcon1000Beijing_sub11344,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub11344.stripped.N4.nii.gz +sub-CC321000,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321000.stripped.N4.nii.gz +sub-CC620026,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620026.stripped.N4.nii.gz +sub-CC320500,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320500.stripped.N4.nii.gz +sub-CC721052,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721052.stripped.N4.nii.gz +fcon1000Beijing_sub28907,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28907.stripped.N4.nii.gz +fcon1000Cambridge_sub08204,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08204.stripped.N4.nii.gz +fcon1000Cambridge_sub16846,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16846.stripped.N4.nii.gz +DLBS0028341_session_1,F,34.81,dlbs_storage/DLBS_bias_corrected/0028341_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub52300,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52300.stripped.N4.nii.gz +DLBS0028393_session_1,M,61.69,dlbs_storage/DLBS_bias_corrected/0028393_session_1.stripped.N4.nii.gz +DLBS0028421_session_1,M,67.05,dlbs_storage/DLBS_bias_corrected/0028421_session_1.stripped.N4.nii.gz +sub-CC520013,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520013.stripped.N4.nii.gz +sub-CC210314,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210314.stripped.N4.nii.gz +fcon1000AnnArbor_sub86367,M,15.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub86367.stripped.N4.nii.gz +sub-CC420143,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420143.stripped.N4.nii.gz +sub-CC320206,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320206.stripped.N4.nii.gz +DLBS0028492_session_1,M,52.89,dlbs_storage/DLBS_bias_corrected/0028492_session_1.stripped.N4.nii.gz +sub-CC321506,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321506.stripped.N4.nii.gz +DLBS0028493_session_1,M,53.36,dlbs_storage/DLBS_bias_corrected/0028493_session_1.stripped.N4.nii.gz +ADNI1461223,M,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1461223_070_S_6966.stripped.N4.nii.gz +fcon1000Beijing_sub30310,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30310.stripped.N4.nii.gz +ADNI1142218,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1142218_033_S_6697.stripped.N4.nii.gz +sub-CC723197,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC723197.stripped.N4.nii.gz +ADNI341787,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I341787_130_S_4982.stripped.N4.nii.gz +DLBS0028333_session_1,F,76.45,dlbs_storage/DLBS_bias_corrected/0028333_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95959,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95959.stripped.N4.nii.gz +DLBS0028530_session_1,F,49.86,dlbs_storage/DLBS_bias_corrected/0028530_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub22201,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22201.stripped.N4.nii.gz +ADNI321225,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I321225_041_S_4874.stripped.N4.nii.gz +ADNI1020137,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1020137_019_S_6483.stripped.N4.nii.gz +ADNI1553005,M,63.7,adni_storage/ADNI_nii_gz_bias_corrected/I1553005_941_S_7051.stripped.N4.nii.gz +ADNI297850,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I297850_031_S_4024.stripped.N4.nii.gz +ADNI1591455,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I1591455_014_S_7072.stripped.N4.nii.gz +DLBS0028468_session_1,F,44.31,dlbs_storage/DLBS_bias_corrected/0028468_session_1.stripped.N4.nii.gz +ADNI400949,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400949_073_S_4795.stripped.N4.nii.gz +sub-CC510259,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510259.stripped.N4.nii.gz +ADNI1061955,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1061955_109_S_6364.stripped.N4.nii.gz +fcon1000Cleveland_sub47482,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub47482.stripped.N4.nii.gz +sub-CC620005,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620005.stripped.N4.nii.gz +DLBS0028413_session_1,F,81.57,dlbs_storage/DLBS_bias_corrected/0028413_session_1.stripped.N4.nii.gz +DLBS0028415_session_1,F,32.05,dlbs_storage/DLBS_bias_corrected/0028415_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub64969,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub64969.stripped.N4.nii.gz +sub-CC510256,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510256.stripped.N4.nii.gz +fcon1000Leiden_sub09796,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub09796.stripped.N4.nii.gz +sub-CC310410,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310410.stripped.N4.nii.gz +ADNI1565078,M,57.6,adni_storage/ADNI_nii_gz_bias_corrected/I1565078_067_S_7059.stripped.N4.nii.gz +sub-CC310052,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310052.stripped.N4.nii.gz +sub-CC420236,M,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420236.stripped.N4.nii.gz +ADNI363013,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I363013_036_S_4894.stripped.N4.nii.gz +DLBS0028522_session_1,F,34.99,dlbs_storage/DLBS_bias_corrected/0028522_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub91399,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91399.stripped.N4.nii.gz +fcon1000NewYork_sub38088,M,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub38088.stripped.N4.nii.gz +DLBS0028348_session_1,M,23.15,dlbs_storage/DLBS_bias_corrected/0028348_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub48830,F,22.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub48830.stripped.N4.nii.gz +fcon1000AnnArbor_sub39635,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub39635.stripped.N4.nii.gz +fcon1000NewYork_sub31671,M,12.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub31671.stripped.N4.nii.gz +fcon1000Cambridge_sub76745,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub76745.stripped.N4.nii.gz +fcon1000Beijing_sub89592,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89592.stripped.N4.nii.gz +ADNI387592,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I387592_036_S_4894.stripped.N4.nii.gz +ADNI247840,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I247840_037_S_4028.stripped.N4.nii.gz +fcon1000Beijing_sub18326,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18326.stripped.N4.nii.gz +ADNI1634179,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1634179_013_S_7103.stripped.N4.nii.gz +sub-CC710154,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710154.stripped.N4.nii.gz +sub-CC410097,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410097.stripped.N4.nii.gz +fcon1000Beijing_sub85543,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85543.stripped.N4.nii.gz +ADNI105503,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I105503_067_S_1253.stripped.N4.nii.gz +fcon1000AnnArbor_sub75922,M,18.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub75922.stripped.N4.nii.gz +sub-CC220151,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220151.stripped.N4.nii.gz +fcon1000Cambridge_sub68101,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub68101.stripped.N4.nii.gz +sub-CC120347,F,21.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120347.stripped.N4.nii.gz +fcon1000NewYork_sub73035,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub73035.stripped.N4.nii.gz +sub-CC620262,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620262.stripped.N4.nii.gz +DLBS0028383_session_1,M,72.96,dlbs_storage/DLBS_bias_corrected/0028383_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub53998,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub53998.stripped.N4.nii.gz +fcon1000Beijing_sub92859,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92859.stripped.N4.nii.gz +ADNI1482729,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1482729_067_S_6529.stripped.N4.nii.gz +ADNI10951704,M,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I10951704_035_S_10241.stripped.N4.nii.gz +fcon1000Milwaukee_sub21350,F,61.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub21350.stripped.N4.nii.gz +DLBS0028463_session_1,F,68.35,dlbs_storage/DLBS_bias_corrected/0028463_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub88464,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88464.stripped.N4.nii.gz +fcon1000Cambridge_sub78547,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78547.stripped.N4.nii.gz +sub-CC110411,M,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110411.stripped.N4.nii.gz +sub-CC510242,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510242.stripped.N4.nii.gz +ADNI1469825,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1469825_073_S_6929.stripped.N4.nii.gz +ADNI1028361,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1028361_109_S_6406.stripped.N4.nii.gz +ADNI346860,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I346860_128_S_4607.stripped.N4.nii.gz +fcon1000Cambridge_sub77989,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77989.stripped.N4.nii.gz +ADNI10955657,M,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I10955657_389_S_10156.stripped.N4.nii.gz +fcon1000Cambridge_sub15905,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15905.stripped.N4.nii.gz +sub-CC720103,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720103.stripped.N4.nii.gz +fcon1000NewYork_sub07578,F,20.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub07578.stripped.N4.nii.gz +sub-CC221648,F,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221648.stripped.N4.nii.gz +ADNI47973,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I47973_067_S_1253.stripped.N4.nii.gz +DLBS0028539_session_1,F,24.22,dlbs_storage/DLBS_bias_corrected/0028539_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub20948,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20948.stripped.N4.nii.gz +fcon1000Baltimore_sub37548,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub37548.stripped.N4.nii.gz +fcon1000Beijing_sub31729,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub31729.stripped.N4.nii.gz +sub-CC221755,M,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221755.stripped.N4.nii.gz +sub-CC620685,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620685.stripped.N4.nii.gz +sub-CC121200,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121200.stripped.N4.nii.gz +fcon1000Newark_sub32580,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub32580.stripped.N4.nii.gz +DLBS0028540_session_1,F,71.04,dlbs_storage/DLBS_bias_corrected/0028540_session_1.stripped.N4.nii.gz +sub-CC110101,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110101.stripped.N4.nii.gz +fcon1000NewYork_sub50559,M,22.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub50559.stripped.N4.nii.gz +DLBS0028589_session_1,F,59.75,dlbs_storage/DLBS_bias_corrected/0028589_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub73823,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub73823.stripped.N4.nii.gz +sub-CC321976,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321976.stripped.N4.nii.gz +fcon1000Munchen_sub72095,F,71.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub72095.stripped.N4.nii.gz +sub-CC220198,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220198.stripped.N4.nii.gz +ADNI389099,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I389099_067_S_5205.stripped.N4.nii.gz +fcon1000Bangor_sub81464,M,38.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub81464.stripped.N4.nii.gz +sub-CC221585,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221585.stripped.N4.nii.gz +fcon1000Cambridge_sub45354,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45354.stripped.N4.nii.gz +fcon1000Beijing_sub16943,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub16943.stripped.N4.nii.gz +ADNI10302840,F,59.5,adni_storage/ADNI_nii_gz_bias_corrected/I10302840_016_S_6773.stripped.N4.nii.gz +sub-CC620090,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620090.stripped.N4.nii.gz +fcon1000Bangor_sub82625,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub82625.stripped.N4.nii.gz +ADNI1609469,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I1609469_035_S_6927.stripped.N4.nii.gz +sub-CC320002,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320002.stripped.N4.nii.gz +fcon1000Milwaukee_sub87910,M,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub87910.stripped.N4.nii.gz +DLBS0028499_session_1,M,51.56,dlbs_storage/DLBS_bias_corrected/0028499_session_1.stripped.N4.nii.gz +sub-CC420202,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420202.stripped.N4.nii.gz +fcon1000Cambridge_sub63412,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub63412.stripped.N4.nii.gz +sub-CC510354,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510354.stripped.N4.nii.gz +ADNI10244463,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I10244463_035_S_6927.stripped.N4.nii.gz +sub-CC510551,M,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510551.stripped.N4.nii.gz +fcon1000Leiden_sub99856,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub99856.stripped.N4.nii.gz +fcon1000AnnArbor_sub11043,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub11043.stripped.N4.nii.gz +DLBS0028417_session_1,F,31.77,dlbs_storage/DLBS_bias_corrected/0028417_session_1.stripped.N4.nii.gz +sub-CC121411,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121411.stripped.N4.nii.gz +fcon1000Beijing_sub56136,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56136.stripped.N4.nii.gz +DLBS0028435_session_1,M,33.01,dlbs_storage/DLBS_bias_corrected/0028435_session_1.stripped.N4.nii.gz +DLBS0028366_session_1,F,23.53,dlbs_storage/DLBS_bias_corrected/0028366_session_1.stripped.N4.nii.gz +ADNI1590221,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1590221_053_S_7086.stripped.N4.nii.gz +fcon1000Cambridge_sub58470,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58470.stripped.N4.nii.gz +fcon1000Milwaukee_sub00917,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub00917.stripped.N4.nii.gz +ADNI290869,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I290869_128_S_4599.stripped.N4.nii.gz +ADNI140027,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I140027_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub50498,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50498.stripped.N4.nii.gz +DLBS0028380_session_1,F,83.22,dlbs_storage/DLBS_bias_corrected/0028380_session_1.stripped.N4.nii.gz +DLBS0028636_session_1,F,65.12,dlbs_storage/DLBS_bias_corrected/0028636_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub70942,M,70.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub70942.stripped.N4.nii.gz +ADNI1592054,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1592054_014_S_7080.stripped.N4.nii.gz +DLBS0028378_session_1,F,69.19,dlbs_storage/DLBS_bias_corrected/0028378_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub12255,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub12255.stripped.N4.nii.gz +sub-CC620121,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620121.stripped.N4.nii.gz +sub-CC321087,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321087.stripped.N4.nii.gz +ADNI1539706,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I1539706_019_S_6635.stripped.N4.nii.gz +ADNI73380,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I73380_051_S_1072.stripped.N4.nii.gz +fcon1000Beijing_sub41621,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub41621.stripped.N4.nii.gz +fcon1000Cambridge_sub78614,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78614.stripped.N4.nii.gz +ADNI342681,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I342681_073_S_5016.stripped.N4.nii.gz +fcon1000Beijing_sub82826,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82826.stripped.N4.nii.gz +fcon1000Beijing_sub93856,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub93856.stripped.N4.nii.gz +fcon1000Milwaukee_sub28782,F,64.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub28782.stripped.N4.nii.gz +sub-CC410101,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410101.stripped.N4.nii.gz +ADNI1583750,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I1583750_067_S_7068.stripped.N4.nii.gz +sub-CC610292,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610292.stripped.N4.nii.gz +DLBS0028371_session_1,M,31.11,dlbs_storage/DLBS_bias_corrected/0028371_session_1.stripped.N4.nii.gz +sub-CC120061,M,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120061.stripped.N4.nii.gz +ADNI10454329,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I10454329_003_S_10073.stripped.N4.nii.gz +fcon1000Cambridge_sub40635,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub40635.stripped.N4.nii.gz +DLBS0028581_session_1,F,74.58,dlbs_storage/DLBS_bias_corrected/0028581_session_1.stripped.N4.nii.gz +ADNI302014,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I302014_037_S_4028.stripped.N4.nii.gz +sub-CC321544,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321544.stripped.N4.nii.gz +fcon1000Beijing_sub08251,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08251.stripped.N4.nii.gz +DLBS0028448_session_1,M,69.32,dlbs_storage/DLBS_bias_corrected/0028448_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub83430,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83430.stripped.N4.nii.gz +fcon1000Cambridge_sub82113,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82113.stripped.N4.nii.gz +sub-CC410121,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410121.stripped.N4.nii.gz +DLBS0028498_session_1,M,67.16,dlbs_storage/DLBS_bias_corrected/0028498_session_1.stripped.N4.nii.gz +sub-CC520597,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520597.stripped.N4.nii.gz +sub-CC420356,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420356.stripped.N4.nii.gz +ADNI293371,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I293371_128_S_4607.stripped.N4.nii.gz +DLBS0028339_session_1,F,65.23,dlbs_storage/DLBS_bias_corrected/0028339_session_1.stripped.N4.nii.gz +sub-CC420729,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420729.stripped.N4.nii.gz +ADNI10369709,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I10369709_073_S_10054.stripped.N4.nii.gz +fcon1000Berlin_sub86111,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub86111.stripped.N4.nii.gz +ADNI495308,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I495308_128_S_4607.stripped.N4.nii.gz +ADNI321230,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I321230_041_S_4874.stripped.N4.nii.gz +ADNI461101,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I461101_137_S_0994.stripped.N4.nii.gz +DLBS0028403_session_1,M,68.71,dlbs_storage/DLBS_bias_corrected/0028403_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub30943,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub30943.stripped.N4.nii.gz +fcon1000Baltimore_sub94042,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub94042.stripped.N4.nii.gz +fcon1000Beijing_sub40427,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub40427.stripped.N4.nii.gz +sub-CC721392,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721392.stripped.N4.nii.gz +sub-CC520552,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520552.stripped.N4.nii.gz +ADNI256321,M,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I256321_014_S_4039.stripped.N4.nii.gz +ADNI10568658,M,56.7,adni_storage/ADNI_nii_gz_bias_corrected/I10568658_941_S_10065.stripped.N4.nii.gz +fcon1000Leiden_sub36743,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub36743.stripped.N4.nii.gz +ADNI1498335,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1498335_016_S_6773.stripped.N4.nii.gz +fcon1000AnnArbor_sub13636,M,29.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub13636.stripped.N4.nii.gz +fcon1000AnnArbor_sub49687,M,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub49687.stripped.N4.nii.gz +sub-CC320814,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320814.stripped.N4.nii.gz +ADNI1446680,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I1446680_070_S_6942.stripped.N4.nii.gz +sub-CC620044,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620044.stripped.N4.nii.gz +sub-CC510220,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510220.stripped.N4.nii.gz +ADNI313456,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I313456_128_S_4599.stripped.N4.nii.gz +ADNI10970157,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I10970157_073_S_10254.stripped.N4.nii.gz +sub-CC412021,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC412021.stripped.N4.nii.gz +sub-CC610212,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610212.stripped.N4.nii.gz +sub-CC220843,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220843.stripped.N4.nii.gz +sub-CC620610,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620610.stripped.N4.nii.gz +ADNI1558652,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1558652_014_S_6076.stripped.N4.nii.gz +fcon1000Cambridge_sub65682,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub65682.stripped.N4.nii.gz +DLBS0028385_session_1,F,61.53,dlbs_storage/DLBS_bias_corrected/0028385_session_1.stripped.N4.nii.gz +sub-CC410432,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410432.stripped.N4.nii.gz +sub-CC321529,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321529.stripped.N4.nii.gz +sub-CC120640,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120640.stripped.N4.nii.gz +ADNI460665,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460665_073_S_4795.stripped.N4.nii.gz +fcon1000AnnArbor_sub64831,M,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub64831.stripped.N4.nii.gz +ADNI10349528,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I10349528_035_S_7004.stripped.N4.nii.gz +sub-CC221580,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221580.stripped.N4.nii.gz +ADNI254253,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I254253_116_S_4195.stripped.N4.nii.gz +sub-CC410323,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410323.stripped.N4.nii.gz +DLBS0028464_session_1,F,82.43,dlbs_storage/DLBS_bias_corrected/0028464_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub14692,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub14692.stripped.N4.nii.gz +fcon1000Cambridge_sub82213,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82213.stripped.N4.nii.gz +fcon1000Bangor_sub46870,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub46870.stripped.N4.nii.gz +sub-CC220203,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220203.stripped.N4.nii.gz +fcon1000Cleveland_sub85091,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub85091.stripped.N4.nii.gz +sub-CC310051,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310051.stripped.N4.nii.gz +sub-CC120182,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120182.stripped.N4.nii.gz +ADNI335130,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I335130_073_S_4552.stripped.N4.nii.gz +sub-CC510483,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510483.stripped.N4.nii.gz +fcon1000NewYork_sub13384,F,28.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub13384.stripped.N4.nii.gz +DLBS0028327_session_1,F,73.29,dlbs_storage/DLBS_bias_corrected/0028327_session_1.stripped.N4.nii.gz +ADNI10666738,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I10666738_011_S_10045.stripped.N4.nii.gz +DLBS0028580_session_1,F,60.28,dlbs_storage/DLBS_bias_corrected/0028580_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub86115,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub86115.stripped.N4.nii.gz +sub-CC410040,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410040.stripped.N4.nii.gz +ADNI368463,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I368463_073_S_4552.stripped.N4.nii.gz +sub-CC520042,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520042.stripped.N4.nii.gz +fcon1000Cambridge_sub53615,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53615.stripped.N4.nii.gz +DLBS0028507_session_1,M,36.91,dlbs_storage/DLBS_bias_corrected/0028507_session_1.stripped.N4.nii.gz +sub-CC510434,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510434.stripped.N4.nii.gz +fcon1000Beijing_sub82980,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82980.stripped.N4.nii.gz +fcon1000NewYork_sub30247,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30247.stripped.N4.nii.gz +ADNI37606,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37606_051_S_1072.stripped.N4.nii.gz +DLBS0028562_session_1,F,24.29,dlbs_storage/DLBS_bias_corrected/0028562_session_1.stripped.N4.nii.gz +DLBS0028543_session_1,F,81.28,dlbs_storage/DLBS_bias_corrected/0028543_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub22736,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub22736.stripped.N4.nii.gz +sub-CC420198,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420198.stripped.N4.nii.gz +sub-CC410248,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410248.stripped.N4.nii.gz +sub-CC121317,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121317.stripped.N4.nii.gz +ADNI417674,M,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I417674_128_S_4599.stripped.N4.nii.gz +sub-CC220806,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220806.stripped.N4.nii.gz +DLBS0028419_session_1,F,78.87,dlbs_storage/DLBS_bias_corrected/0028419_session_1.stripped.N4.nii.gz +DLBS0028356_session_1,F,43.21,dlbs_storage/DLBS_bias_corrected/0028356_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub40037,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub40037.stripped.N4.nii.gz +fcon1000Beijing_sub32517,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub32517.stripped.N4.nii.gz +ADNI1118422,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I1118422_006_S_6651.stripped.N4.nii.gz +sub-CC221935,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221935.stripped.N4.nii.gz +ADNI958916,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I958916_070_S_6191.stripped.N4.nii.gz +sub-CC420182,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420182.stripped.N4.nii.gz +ADNI335038,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I335038_116_S_4195.stripped.N4.nii.gz +sub-CC520480,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520480.stripped.N4.nii.gz +fcon1000Berlin_sub85681,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub85681.stripped.N4.nii.gz +fcon1000Cambridge_sub07798,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07798.stripped.N4.nii.gz +fcon1000NewYork_sub02503,M,9.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub02503.stripped.N4.nii.gz +ADNI1076708,F,55.2,adni_storage/ADNI_nii_gz_bias_corrected/I1076708_037_S_6620.stripped.N4.nii.gz +sub-CC121194,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121194.stripped.N4.nii.gz +sub-CC420148,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420148.stripped.N4.nii.gz +sub-CC220535,M,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220535.stripped.N4.nii.gz +sub-CC110033,M,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110033.stripped.N4.nii.gz +fcon1000Beijing_sub17586,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17586.stripped.N4.nii.gz +ADNI1043769,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1043769_003_S_6490.stripped.N4.nii.gz +sub-CC223115,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223115.stripped.N4.nii.gz +sub-CC510039,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510039.stripped.N4.nii.gz +DLBS0028598_session_1,F,84.06,dlbs_storage/DLBS_bias_corrected/0028598_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub29044,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29044.stripped.N4.nii.gz +DLBS0028606_session_1,F,81.91,dlbs_storage/DLBS_bias_corrected/0028606_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub28808,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub28808.stripped.N4.nii.gz +DLBS0028624_session_1,F,81.96,dlbs_storage/DLBS_bias_corrected/0028624_session_1.stripped.N4.nii.gz +sub-CC510321,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510321.stripped.N4.nii.gz +ADNI358814,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I358814_019_S_5019.stripped.N4.nii.gz +ADNI248875,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I248875_031_S_4024.stripped.N4.nii.gz +sub-CC420259,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420259.stripped.N4.nii.gz +ADNI1007384,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I1007384_035_S_6380.stripped.N4.nii.gz +DLBS0028536_session_1,M,82.57,dlbs_storage/DLBS_bias_corrected/0028536_session_1.stripped.N4.nii.gz +DLBS0028365_session_1,F,22.82,dlbs_storage/DLBS_bias_corrected/0028365_session_1.stripped.N4.nii.gz +sub-CC610052,M,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610052.stripped.N4.nii.gz +fcon1000Beijing_sub14238,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub14238.stripped.N4.nii.gz +fcon1000Beijing_sub48676,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48676.stripped.N4.nii.gz +sub-CC220610,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220610.stripped.N4.nii.gz +sub-CC610308,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610308.stripped.N4.nii.gz +ADNI10236670,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I10236670_168_S_6085.stripped.N4.nii.gz +fcon1000Milwaukee_sub39259,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub39259.stripped.N4.nii.gz +sub-CC520585,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520585.stripped.N4.nii.gz +DLBS0028512_session_1,F,51.64,dlbs_storage/DLBS_bias_corrected/0028512_session_1.stripped.N4.nii.gz +ADNI944156,F,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I944156_116_S_6129.stripped.N4.nii.gz +ADNI168100,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I168100_051_S_1072.stripped.N4.nii.gz +ADNI442430,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I442430_041_S_4874.stripped.N4.nii.gz +fcon1000Cambridge_sub53059,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53059.stripped.N4.nii.gz +sub-CC420383,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420383.stripped.N4.nii.gz +sub-CC321504,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321504.stripped.N4.nii.gz +fcon1000Beijing_sub41170,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub41170.stripped.N4.nii.gz +DLBS0028640_session_1,F,33.41,dlbs_storage/DLBS_bias_corrected/0028640_session_1.stripped.N4.nii.gz +ADNI1399348,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1399348_305_S_6845.stripped.N4.nii.gz +fcon1000Beijing_sub56757,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56757.stripped.N4.nii.gz +ADNI105505,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I105505_067_S_1253.stripped.N4.nii.gz +fcon1000Cambridge_sub07413,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07413.stripped.N4.nii.gz +sub-CC610028,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610028.stripped.N4.nii.gz +DLBS0028563_session_1,F,44.97,dlbs_storage/DLBS_bias_corrected/0028563_session_1.stripped.N4.nii.gz +sub-CC321585,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321585.stripped.N4.nii.gz +fcon1000Atlanta_sub59806,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub59806.stripped.N4.nii.gz +sub-CC221527,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221527.stripped.N4.nii.gz +ADNI1573570,F,63.1,adni_storage/ADNI_nii_gz_bias_corrected/I1573570_131_S_6805.stripped.N4.nii.gz +fcon1000AnnArbor_sub56686,F,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub56686.stripped.N4.nii.gz +ADNI10936993,F,55.7,adni_storage/ADNI_nii_gz_bias_corrected/I10936993_033_S_10215.stripped.N4.nii.gz +fcon1000Cleveland_sub19005,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub19005.stripped.N4.nii.gz +fcon1000Atlanta_sub76280,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub76280.stripped.N4.nii.gz +sub-CC120409,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120409.stripped.N4.nii.gz +fcon1000Beijing_sub22595,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22595.stripped.N4.nii.gz +fcon1000Leiden_sub13537,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub13537.stripped.N4.nii.gz +ADNI1344108,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I1344108_123_S_6888.stripped.N4.nii.gz +sub-CC210148,F,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210148.stripped.N4.nii.gz +fcon1000NewYork_sub20732,M,11.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub20732.stripped.N4.nii.gz +fcon1000Cambridge_sub04187,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04187.stripped.N4.nii.gz +ADNI912447,F,63.1,adni_storage/ADNI_nii_gz_bias_corrected/I912447_003_S_6067.stripped.N4.nii.gz +sub-CC710551,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710551.stripped.N4.nii.gz +fcon1000Cambridge_sub93488,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93488.stripped.N4.nii.gz +fcon1000Beijing_sub61961,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub61961.stripped.N4.nii.gz +ADNI280814,F,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I280814_023_S_4448.stripped.N4.nii.gz +sub-CC321154,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321154.stripped.N4.nii.gz +sub-CC410297,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410297.stripped.N4.nii.gz +sub-CC221565,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221565.stripped.N4.nii.gz +sub-CC510480,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510480.stripped.N4.nii.gz +fcon1000AnnArbor_sub57196,F,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub57196.stripped.N4.nii.gz +ADNI313455,M,60.3,adni_storage/ADNI_nii_gz_bias_corrected/I313455_128_S_4599.stripped.N4.nii.gz +DLBS0028610_session_1,M,80.82,dlbs_storage/DLBS_bias_corrected/0028610_session_1.stripped.N4.nii.gz +DLBS0028579_session_1,F,21.77,dlbs_storage/DLBS_bias_corrected/0028579_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub30250,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub30250.stripped.N4.nii.gz +fcon1000Beijing_sub52044,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub52044.stripped.N4.nii.gz +sub-CC620518,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620518.stripped.N4.nii.gz +ADNI1330894,F,62.0,adni_storage/ADNI_nii_gz_bias_corrected/I1330894_305_S_6881.stripped.N4.nii.gz +fcon1000Leiden_sub58194,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub58194.stripped.N4.nii.gz +DLBS0028467_session_1,F,34.4,dlbs_storage/DLBS_bias_corrected/0028467_session_1.stripped.N4.nii.gz +sub-CC620560,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620560.stripped.N4.nii.gz +ADNI1008024,F,59.5,adni_storage/ADNI_nii_gz_bias_corrected/I1008024_177_S_6408.stripped.N4.nii.gz +ADNI1558656,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1558656_014_S_6076.stripped.N4.nii.gz +sub-CC710462,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710462.stripped.N4.nii.gz +DLBS0028525_session_1,M,60.74,dlbs_storage/DLBS_bias_corrected/0028525_session_1.stripped.N4.nii.gz +sub-CC721894,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721894.stripped.N4.nii.gz +fcon1000Beijing_sub81074,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub81074.stripped.N4.nii.gz +sub-CC121397,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121397.stripped.N4.nii.gz +ADNI1529914,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I1529914_067_S_7033.stripped.N4.nii.gz +fcon1000Cambridge_sub02591,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub02591.stripped.N4.nii.gz +fcon1000Baltimore_sub19738,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub19738.stripped.N4.nii.gz +fcon1000Cleveland_sub50092,M,56.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub50092.stripped.N4.nii.gz +sub-CC610101,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610101.stripped.N4.nii.gz +ADNI378273,M,58.1,adni_storage/ADNI_nii_gz_bias_corrected/I378273_014_S_4039.stripped.N4.nii.gz +ADNI358820,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I358820_019_S_5019.stripped.N4.nii.gz +fcon1000NewYork_sub47087,M,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub47087.stripped.N4.nii.gz +sub-CC620720,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620720.stripped.N4.nii.gz +sub-CC321464,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321464.stripped.N4.nii.gz +sub-CC721224,F,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721224.stripped.N4.nii.gz +ADNI1142379,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I1142379_022_S_6013.stripped.N4.nii.gz +ADNI10461527,F,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I10461527_022_S_10040.stripped.N4.nii.gz +ADNI270531,M,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I270531_014_S_4039.stripped.N4.nii.gz +fcon1000Berlin_sub18913,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub18913.stripped.N4.nii.gz +ADNI65946,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I65946_067_S_1185.stripped.N4.nii.gz +fcon1000Bangor_sub68050,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub68050.stripped.N4.nii.gz +ADNI1609767,F,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I1609767_073_S_7082.stripped.N4.nii.gz +fcon1000Cambridge_sub98528,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub98528.stripped.N4.nii.gz +fcon1000NewYork_sub05208,F,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub05208.stripped.N4.nii.gz +DLBS0028560_session_1,F,57.03,dlbs_storage/DLBS_bias_corrected/0028560_session_1.stripped.N4.nii.gz +DLBS0028394_session_1,M,20.74,dlbs_storage/DLBS_bias_corrected/0028394_session_1.stripped.N4.nii.gz +ADNI1327480,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I1327480_177_S_6409.stripped.N4.nii.gz +fcon1000NewYork_sub30860,F,35.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30860.stripped.N4.nii.gz +ADNI1516245,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1516245_082_S_6629.stripped.N4.nii.gz +ADNI393944,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393944_073_S_5023.stripped.N4.nii.gz +ADNI1493847,M,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1493847_016_S_7002.stripped.N4.nii.gz +sub-CC722216,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722216.stripped.N4.nii.gz +fcon1000Cleveland_sub13495,F,45.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub13495.stripped.N4.nii.gz +fcon1000Beijing_sub52259,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub52259.stripped.N4.nii.gz +ADNI1183115,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1183115_305_S_6744.stripped.N4.nii.gz +ADNI393941,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393941_073_S_5023.stripped.N4.nii.gz +sub-CC110126,F,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110126.stripped.N4.nii.gz +ADNI248872,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I248872_031_S_4024.stripped.N4.nii.gz +DLBS0028373_session_1,F,48.4,dlbs_storage/DLBS_bias_corrected/0028373_session_1.stripped.N4.nii.gz +ADNI1149157,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I1149157_301_S_6698.stripped.N4.nii.gz +DLBS0028494_session_1,M,74.24,dlbs_storage/DLBS_bias_corrected/0028494_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub80221,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub80221.stripped.N4.nii.gz +fcon1000AnnArbor_sub18546,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub18546.stripped.N4.nii.gz +sub-CC520175,M,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520175.stripped.N4.nii.gz +ADNI950885,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I950885_035_S_6160.stripped.N4.nii.gz +fcon1000Milwaukee_sub56582,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56582.stripped.N4.nii.gz +DLBS0028590_session_1,F,70.79,dlbs_storage/DLBS_bias_corrected/0028590_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub01361,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub01361.stripped.N4.nii.gz +DLBS0028583_session_1,F,80.54,dlbs_storage/DLBS_bias_corrected/0028583_session_1.stripped.N4.nii.gz +ADNI344065,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I344065_041_S_4874.stripped.N4.nii.gz +DLBS0028542_session_1,F,69.59,dlbs_storage/DLBS_bias_corrected/0028542_session_1.stripped.N4.nii.gz +sub-CC320904,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320904.stripped.N4.nii.gz +sub-CC110045,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110045.stripped.N4.nii.gz +DLBS0028457_session_1,M,75.67,dlbs_storage/DLBS_bias_corrected/0028457_session_1.stripped.N4.nii.gz +DLBS0028627_session_1,F,47.3,dlbs_storage/DLBS_bias_corrected/0028627_session_1.stripped.N4.nii.gz +fcon1000Baltimore_sub54257,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub54257.stripped.N4.nii.gz +ADNI884453,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I884453_041_S_4874.stripped.N4.nii.gz +ADNI460668,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460668_073_S_4795.stripped.N4.nii.gz +fcon1000Beijing_sub17315,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17315.stripped.N4.nii.gz +fcon1000Cambridge_sub06037,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06037.stripped.N4.nii.gz +fcon1000Cambridge_sub16122,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16122.stripped.N4.nii.gz +fcon1000Milwaukee_sub17987,M,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub17987.stripped.N4.nii.gz +sub-CC220132,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220132.stripped.N4.nii.gz +ADNI336502,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I336502_135_S_4954.stripped.N4.nii.gz +sub-CC122620,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122620.stripped.N4.nii.gz +sub-CC520398,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520398.stripped.N4.nii.gz +ADNI1446304,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1446304_016_S_6941.stripped.N4.nii.gz +sub-CC210182,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210182.stripped.N4.nii.gz +fcon1000Cleveland_sub76139,F,41.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub76139.stripped.N4.nii.gz +fcon1000Cleveland_sub07835,M,43.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub07835.stripped.N4.nii.gz +sub-CC310391,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310391.stripped.N4.nii.gz +sub-CC510163,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510163.stripped.N4.nii.gz +DLBS0028572_session_1,M,75.37,dlbs_storage/DLBS_bias_corrected/0028572_session_1.stripped.N4.nii.gz +ADNI359044,M,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I359044_073_S_5090.stripped.N4.nii.gz +fcon1000Cambridge_sub16390,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub16390.stripped.N4.nii.gz +sub-CC120319,F,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120319.stripped.N4.nii.gz +DLBS0028491_session_1,F,24.2,dlbs_storage/DLBS_bias_corrected/0028491_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub08816,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08816.stripped.N4.nii.gz +ADNI1278681,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1278681_067_S_6529.stripped.N4.nii.gz +sub-CC221054,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221054.stripped.N4.nii.gz +ADNI1017004,M,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017004_116_S_6428.stripped.N4.nii.gz +fcon1000Cambridge_sub84845,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84845.stripped.N4.nii.gz +sub-CC620659,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620659.stripped.N4.nii.gz +fcon1000Atlanta_sub07145,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub07145.stripped.N4.nii.gz +ADNI10435136,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I10435136_007_S_10075.stripped.N4.nii.gz +fcon1000Beijing_sub83728,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83728.stripped.N4.nii.gz +fcon1000NewYork_sub29353,F,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29353.stripped.N4.nii.gz +ADNI388747,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I388747_116_S_4195.stripped.N4.nii.gz +sub-CC221886,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221886.stripped.N4.nii.gz +ADNI844180,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I844180_022_S_6013.stripped.N4.nii.gz +ADNI1514928,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1514928_037_S_7006.stripped.N4.nii.gz +DLBS0028410_session_1,F,74.11,dlbs_storage/DLBS_bias_corrected/0028410_session_1.stripped.N4.nii.gz +ADNI1516258,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I1516258_082_S_6629.stripped.N4.nii.gz +fcon1000Berlin_sub49134,M,44.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub49134.stripped.N4.nii.gz +DLBS0028516_session_1,M,88.14,dlbs_storage/DLBS_bias_corrected/0028516_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub92602,M,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92602.stripped.N4.nii.gz +ADNI274154,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I274154_002_S_1155.stripped.N4.nii.gz +sub-CC520624,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520624.stripped.N4.nii.gz +ADNI1285703,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I1285703_131_S_6170.stripped.N4.nii.gz +fcon1000Atlanta_sub00368,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub00368.stripped.N4.nii.gz +fcon1000Cambridge_sub18449,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub18449.stripped.N4.nii.gz +ADNI1660846,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1660846_019_S_6635.stripped.N4.nii.gz +sub-CC220901,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220901.stripped.N4.nii.gz +fcon1000Milwaukee_sub76042,F,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub76042.stripped.N4.nii.gz +fcon1000Munchen_sub96591,M,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub96591.stripped.N4.nii.gz +DLBS0028432_session_1,F,53.75,dlbs_storage/DLBS_bias_corrected/0028432_session_1.stripped.N4.nii.gz +DLBS0028605_session_1,M,63.69,dlbs_storage/DLBS_bias_corrected/0028605_session_1.stripped.N4.nii.gz +sub-CC520239,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520239.stripped.N4.nii.gz +sub-CC120764,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120764.stripped.N4.nii.gz +sub-CC620429,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620429.stripped.N4.nii.gz +ADNI132476,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I132476_016_S_1121.stripped.N4.nii.gz +sub-CC220518,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220518.stripped.N4.nii.gz +sub-CC410182,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410182.stripped.N4.nii.gz +ADNI365429,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I365429_073_S_5023.stripped.N4.nii.gz +DLBS0028527_session_1,M,23.64,dlbs_storage/DLBS_bias_corrected/0028527_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub05306,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub05306.stripped.N4.nii.gz +sub-CC710429,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710429.stripped.N4.nii.gz +fcon1000Cambridge_sub20389,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20389.stripped.N4.nii.gz +sub-CC120065,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120065.stripped.N4.nii.gz +DLBS0028534_session_1,M,54.3,dlbs_storage/DLBS_bias_corrected/0028534_session_1.stripped.N4.nii.gz +sub-CC710548,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710548.stripped.N4.nii.gz +fcon1000Beijing_sub67435,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub67435.stripped.N4.nii.gz +DLBS0028485_session_1,F,57.23,dlbs_storage/DLBS_bias_corrected/0028485_session_1.stripped.N4.nii.gz +sub-CC420157,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420157.stripped.N4.nii.gz +sub-CC320698,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320698.stripped.N4.nii.gz +ADNI297848,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I297848_031_S_4024.stripped.N4.nii.gz +ADNI415211,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I415211_019_S_5019.stripped.N4.nii.gz +fcon1000Beijing_sub91145,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91145.stripped.N4.nii.gz +fcon1000Baltimore_sub23927,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub23927.stripped.N4.nii.gz +sub-CC110087,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110087.stripped.N4.nii.gz +fcon1000Milwaukee_sub77073,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub77073.stripped.N4.nii.gz +sub-CC710099,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710099.stripped.N4.nii.gz +DLBS0028619_session_1,M,36.41,dlbs_storage/DLBS_bias_corrected/0028619_session_1.stripped.N4.nii.gz +ADNI20681,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I20681_131_S_0691.stripped.N4.nii.gz +fcon1000Beijing_sub97442,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub97442.stripped.N4.nii.gz +DLBS0028528_session_1,M,53.43,dlbs_storage/DLBS_bias_corrected/0028528_session_1.stripped.N4.nii.gz +ADNI1526394,F,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1526394_131_S_6170.stripped.N4.nii.gz +DLBS0028426_session_1,F,82.07,dlbs_storage/DLBS_bias_corrected/0028426_session_1.stripped.N4.nii.gz +DLBS0028406_session_1,M,47.65,dlbs_storage/DLBS_bias_corrected/0028406_session_1.stripped.N4.nii.gz +ADNI393947,F,63.6,adni_storage/ADNI_nii_gz_bias_corrected/I393947_073_S_5023.stripped.N4.nii.gz +sub-CC310385,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310385.stripped.N4.nii.gz +ADNI10932457,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I10932457_035_S_7121.stripped.N4.nii.gz +DLBS0028521_session_1,F,39.74,dlbs_storage/DLBS_bias_corrected/0028521_session_1.stripped.N4.nii.gz +ADNI1046066,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I1046066_041_S_4874.stripped.N4.nii.gz +fcon1000Milwaukee_sub46312,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub46312.stripped.N4.nii.gz +fcon1000Beijing_sub29590,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub29590.stripped.N4.nii.gz +fcon1000AnnArbor_sub46727,F,13.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub46727.stripped.N4.nii.gz +sub-CC420888,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420888.stripped.N4.nii.gz +sub-CC220234,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220234.stripped.N4.nii.gz +fcon1000Beijing_sub49782,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub49782.stripped.N4.nii.gz +fcon1000Milwaukee_sub63196,F,49.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub63196.stripped.N4.nii.gz +sub-CC222956,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222956.stripped.N4.nii.gz +sub-CC610210,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610210.stripped.N4.nii.gz +DLBS0028398_session_1,M,83.33,dlbs_storage/DLBS_bias_corrected/0028398_session_1.stripped.N4.nii.gz +ADNI1151456,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1151456_002_S_6680.stripped.N4.nii.gz +fcon1000Cambridge_sub90699,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90699.stripped.N4.nii.gz +fcon1000Beijing_sub21115,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub21115.stripped.N4.nii.gz +sub-CC310086,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310086.stripped.N4.nii.gz +sub-CC420173,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420173.stripped.N4.nii.gz +DLBS0028571_session_1,M,20.57,dlbs_storage/DLBS_bias_corrected/0028571_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub00306,F,68.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub00306.stripped.N4.nii.gz +sub-CC222326,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222326.stripped.N4.nii.gz +sub-CC620118,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620118.stripped.N4.nii.gz +ADNI1061954,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1061954_109_S_6364.stripped.N4.nii.gz +fcon1000Cambridge_sub41773,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41773.stripped.N4.nii.gz +sub-CC410390,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410390.stripped.N4.nii.gz +sub-CC610040,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610040.stripped.N4.nii.gz +ADNI986502,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I986502_094_S_6275.stripped.N4.nii.gz +fcon1000Leiden_sub04484,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub04484.stripped.N4.nii.gz +fcon1000Atlanta_sub53122,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub53122.stripped.N4.nii.gz +sub-CC321069,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321069.stripped.N4.nii.gz +fcon1000Cambridge_sub50454,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50454.stripped.N4.nii.gz +ADNI378271,M,58.1,adni_storage/ADNI_nii_gz_bias_corrected/I378271_014_S_4039.stripped.N4.nii.gz +DLBS0028423_session_1,M,30.69,dlbs_storage/DLBS_bias_corrected/0028423_session_1.stripped.N4.nii.gz +ADNI10461464,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10461464_033_S_10092.stripped.N4.nii.gz +fcon1000Beijing_sub51015,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub51015.stripped.N4.nii.gz +fcon1000Cambridge_sub93269,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub93269.stripped.N4.nii.gz +fcon1000Beijing_sub50873,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50873.stripped.N4.nii.gz +fcon1000Cambridge_sub18295,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub18295.stripped.N4.nii.gz +ADNI77626,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I77626_020_S_1288.stripped.N4.nii.gz +fcon1000AnnArbor_sub26099,M,73.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub26099.stripped.N4.nii.gz +DLBS0028430_session_1,F,89.11,dlbs_storage/DLBS_bias_corrected/0028430_session_1.stripped.N4.nii.gz +sub-CC721291,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721291.stripped.N4.nii.gz +fcon1000Cleveland_sub22935,F,39.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub22935.stripped.N4.nii.gz +ADNI387580,F,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I387580_036_S_4894.stripped.N4.nii.gz +DLBS0028592_session_1,F,40.97,dlbs_storage/DLBS_bias_corrected/0028592_session_1.stripped.N4.nii.gz +ADNI293375,F,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I293375_128_S_4607.stripped.N4.nii.gz +fcon1000Beijing_sub92799,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92799.stripped.N4.nii.gz +DLBS0028354_session_1,M,75.42,dlbs_storage/DLBS_bias_corrected/0028354_session_1.stripped.N4.nii.gz +sub-CC410287,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410287.stripped.N4.nii.gz +fcon1000NewYork_sub44395,M,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44395.stripped.N4.nii.gz +ADNI62031,F,56.8,adni_storage/ADNI_nii_gz_bias_corrected/I62031_016_S_1121.stripped.N4.nii.gz +fcon1000Beijing_sub31058,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub31058.stripped.N4.nii.gz +ADNI1448643,F,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I1448643_003_S_6954.stripped.N4.nii.gz +sub-CC320461,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320461.stripped.N4.nii.gz +ADNI1595258,F,53.5,adni_storage/ADNI_nii_gz_bias_corrected/I1595258_037_S_7035.stripped.N4.nii.gz +fcon1000Beijing_sub29785,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub29785.stripped.N4.nii.gz +fcon1000Cambridge_sub76631,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub76631.stripped.N4.nii.gz +ADNI115775,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I115775_033_S_0733.stripped.N4.nii.gz +ADNI1143236,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1143236_023_S_6702.stripped.N4.nii.gz +DLBS0028459_session_1,M,66.13,dlbs_storage/DLBS_bias_corrected/0028459_session_1.stripped.N4.nii.gz +ADNI415594,M,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I415594_009_S_5252.stripped.N4.nii.gz +sub-CC320379,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320379.stripped.N4.nii.gz +fcon1000Beijing_sub08992,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08992.stripped.N4.nii.gz +fcon1000Beijing_sub50985,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50985.stripped.N4.nii.gz +sub-CC610671,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610671.stripped.N4.nii.gz +fcon1000Beijing_sub89742,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89742.stripped.N4.nii.gz +DLBS0028397_session_1,F,35.33,dlbs_storage/DLBS_bias_corrected/0028397_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub82352,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82352.stripped.N4.nii.gz +fcon1000Beijing_sub64923,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub64923.stripped.N4.nii.gz +sub-CC321291,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321291.stripped.N4.nii.gz +fcon1000Cambridge_sub69315,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69315.stripped.N4.nii.gz +fcon1000Cambridge_sub77598,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77598.stripped.N4.nii.gz +sub-CC121685,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121685.stripped.N4.nii.gz +sub-CC221244,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221244.stripped.N4.nii.gz +DLBS0028538_session_1,F,76.39,dlbs_storage/DLBS_bias_corrected/0028538_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub28473,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub28473.stripped.N4.nii.gz +sub-CC512003,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC512003.stripped.N4.nii.gz +sub-CC510609,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510609.stripped.N4.nii.gz +ADNI346264,F,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I346264_036_S_4894.stripped.N4.nii.gz +sub-CC520607,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520607.stripped.N4.nii.gz +fcon1000Beijing_sub51586,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub51586.stripped.N4.nii.gz +fcon1000Cambridge_sub78552,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub78552.stripped.N4.nii.gz +fcon1000NewYork_sub59796,M,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub59796.stripped.N4.nii.gz +fcon1000Baltimore_sub29158,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub29158.stripped.N4.nii.gz +DLBS0028379_session_1,F,73.36,dlbs_storage/DLBS_bias_corrected/0028379_session_1.stripped.N4.nii.gz +sub-CC320321,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320321.stripped.N4.nii.gz +ADNI395985,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I395985_130_S_4982.stripped.N4.nii.gz +ADNI44672,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I44672_020_S_1288.stripped.N4.nii.gz +fcon1000Cambridge_sub19717,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub19717.stripped.N4.nii.gz +sub-CC620164,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620164.stripped.N4.nii.gz +DLBS0028412_session_1,M,20.89,dlbs_storage/DLBS_bias_corrected/0028412_session_1.stripped.N4.nii.gz +ADNI285080,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I285080_073_S_4552.stripped.N4.nii.gz +fcon1000Cleveland_sub18011,M,55.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub18011.stripped.N4.nii.gz +sub-CC620152,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620152.stripped.N4.nii.gz +ADNI1525978,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I1525978_131_S_6805.stripped.N4.nii.gz +fcon1000Beijing_sub82426,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub82426.stripped.N4.nii.gz +DLBS0028438_session_1,M,85.99,dlbs_storage/DLBS_bias_corrected/0028438_session_1.stripped.N4.nii.gz +ADNI460671,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460671_073_S_4795.stripped.N4.nii.gz +fcon1000Cambridge_sub20543,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20543.stripped.N4.nii.gz +DLBS0028596_session_1,M,36.92,dlbs_storage/DLBS_bias_corrected/0028596_session_1.stripped.N4.nii.gz +sub-CC420464,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420464.stripped.N4.nii.gz +sub-CC410086,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410086.stripped.N4.nii.gz +sub-CC610568,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610568.stripped.N4.nii.gz +DLBS0028622_session_1,F,24.6,dlbs_storage/DLBS_bias_corrected/0028622_session_1.stripped.N4.nii.gz +ADNI1058589,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1058589_032_S_6602.stripped.N4.nii.gz +sub-CC420204,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420204.stripped.N4.nii.gz +DLBS0028537_session_1,F,62.2,dlbs_storage/DLBS_bias_corrected/0028537_session_1.stripped.N4.nii.gz +ADNI871844,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I871844_141_S_6041.stripped.N4.nii.gz +ADNI324990,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I324990_023_S_4448.stripped.N4.nii.gz +sub-CC220232,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220232.stripped.N4.nii.gz +fcon1000Beijing_sub20127,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20127.stripped.N4.nii.gz +fcon1000Bangor_sub48632,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub48632.stripped.N4.nii.gz +sub-CC720119,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720119.stripped.N4.nii.gz +sub-CC420167,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420167.stripped.N4.nii.gz +sub-CC620073,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620073.stripped.N4.nii.gz +fcon1000Cambridge_sub92440,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92440.stripped.N4.nii.gz +ADNI1478765,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1478765_037_S_6977.stripped.N4.nii.gz +sub-CC620106,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620106.stripped.N4.nii.gz +sub-CC710982,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710982.stripped.N4.nii.gz +ADNI1032325,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I1032325_070_S_6548.stripped.N4.nii.gz +DLBS0028453_session_1,F,73.26,dlbs_storage/DLBS_bias_corrected/0028453_session_1.stripped.N4.nii.gz +DLBS0028473_session_1,F,56.11,dlbs_storage/DLBS_bias_corrected/0028473_session_1.stripped.N4.nii.gz +fcon1000Newark_sub62985,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub62985.stripped.N4.nii.gz +fcon1000AnnArbor_sub45569,F,63.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub45569.stripped.N4.nii.gz +sub-CC510433,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510433.stripped.N4.nii.gz +DLBS0028561_session_1,F,49.51,dlbs_storage/DLBS_bias_corrected/0028561_session_1.stripped.N4.nii.gz +ADNI1331166,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1331166_116_S_6550.stripped.N4.nii.gz +sub-CC610392,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610392.stripped.N4.nii.gz +DLBS0028359_session_1,F,71.2,dlbs_storage/DLBS_bias_corrected/0028359_session_1.stripped.N4.nii.gz +DLBS0028404_session_1,F,38.45,dlbs_storage/DLBS_bias_corrected/0028404_session_1.stripped.N4.nii.gz +ADNI1072842,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1072842_014_S_6076.stripped.N4.nii.gz +sub-CC310224,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310224.stripped.N4.nii.gz +sub-CC220519,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220519.stripped.N4.nii.gz +sub-CC310160,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310160.stripped.N4.nii.gz +sub-CC620567,M,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620567.stripped.N4.nii.gz +DLBS0028638_session_1,F,70.98,dlbs_storage/DLBS_bias_corrected/0028638_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub31554,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub31554.stripped.N4.nii.gz +sub-CC520122,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520122.stripped.N4.nii.gz +sub-CC320022,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320022.stripped.N4.nii.gz +DLBS0028391_session_1,M,36.03,dlbs_storage/DLBS_bias_corrected/0028391_session_1.stripped.N4.nii.gz +DLBS0028506_session_1,F,86.38,dlbs_storage/DLBS_bias_corrected/0028506_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub26223,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub26223.stripped.N4.nii.gz +fcon1000Atlanta_sub15817,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub15817.stripped.N4.nii.gz +DLBS0028465_session_1,F,21.67,dlbs_storage/DLBS_bias_corrected/0028465_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub56734,F,50.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub56734.stripped.N4.nii.gz +ADNI1191310,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1191310_130_S_6329.stripped.N4.nii.gz +DLBS0028554_session_1,F,48.67,dlbs_storage/DLBS_bias_corrected/0028554_session_1.stripped.N4.nii.gz +sub-CC510415,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510415.stripped.N4.nii.gz +fcon1000Newark_sub13411,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub13411.stripped.N4.nii.gz +fcon1000Cambridge_sub07902,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub07902.stripped.N4.nii.gz +sub-CC220526,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220526.stripped.N4.nii.gz +sub-CC710037,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710037.stripped.N4.nii.gz +ADNI1072841,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1072841_014_S_6076.stripped.N4.nii.gz +fcon1000Cambridge_sub60578,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub60578.stripped.N4.nii.gz +fcon1000Cambridge_sub08723,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08723.stripped.N4.nii.gz +DLBS0028535_session_1,F,80.11,dlbs_storage/DLBS_bias_corrected/0028535_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub06272,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06272.stripped.N4.nii.gz +ADNI1575205,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1575205_006_S_6651.stripped.N4.nii.gz +ADNI10666923,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10666923_100_S_10091.stripped.N4.nii.gz +ADNI323094,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I323094_036_S_4894.stripped.N4.nii.gz +fcon1000Cambridge_sub13902,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13902.stripped.N4.nii.gz +fcon1000Cambridge_sub49259,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub49259.stripped.N4.nii.gz +fcon1000Cambridge_sub65373,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub65373.stripped.N4.nii.gz +fcon1000Beijing_sub38602,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub38602.stripped.N4.nii.gz +ADNI400951,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400951_073_S_4795.stripped.N4.nii.gz +fcon1000Berlin_sub27711,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27711.stripped.N4.nii.gz +fcon1000NewYork_sub33581,M,49.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub33581.stripped.N4.nii.gz +sub-CC120727,F,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120727.stripped.N4.nii.gz +sub-CC620592,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620592.stripped.N4.nii.gz +fcon1000Bangor_sub01903,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub01903.stripped.N4.nii.gz +fcon1000Cambridge_sub53193,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53193.stripped.N4.nii.gz +sub-CC220335,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220335.stripped.N4.nii.gz +sub-CC610405,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610405.stripped.N4.nii.gz +sub-CC221595,M,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221595.stripped.N4.nii.gz +DLBS0028488_session_1,F,41.33,dlbs_storage/DLBS_bias_corrected/0028488_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub44573,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub44573.stripped.N4.nii.gz +fcon1000Munchen_sub31272,M,74.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub31272.stripped.N4.nii.gz +DLBS0028335_session_1,M,71.34,dlbs_storage/DLBS_bias_corrected/0028335_session_1.stripped.N4.nii.gz +fcon1000Atlanta_sub00354,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub00354.stripped.N4.nii.gz +DLBS0028617_session_1,F,50.6,dlbs_storage/DLBS_bias_corrected/0028617_session_1.stripped.N4.nii.gz +sub-CC520390,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520390.stripped.N4.nii.gz +sub-CC620885,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620885.stripped.N4.nii.gz +fcon1000Cambridge_sub31522,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub31522.stripped.N4.nii.gz +ADNI1185293,F,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1185293_024_S_6033.stripped.N4.nii.gz +sub-CC210657,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210657.stripped.N4.nii.gz +sub-CC321025,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321025.stripped.N4.nii.gz +ADNI381380,M,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I381380_009_S_5252.stripped.N4.nii.gz +fcon1000Beijing_sub80569,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80569.stripped.N4.nii.gz +sub-CC620619,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620619.stripped.N4.nii.gz +sub-CC222258,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222258.stripped.N4.nii.gz +DLBS0028613_session_1,M,74.4,dlbs_storage/DLBS_bias_corrected/0028613_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub66506,F,78.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub66506.stripped.N4.nii.gz +DLBS0028549_session_1,F,21.45,dlbs_storage/DLBS_bias_corrected/0028549_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95187,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95187.stripped.N4.nii.gz +ADNI1485046,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1485046_116_S_6550.stripped.N4.nii.gz +sub-CC320574,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320574.stripped.N4.nii.gz +sub-CC620444,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620444.stripped.N4.nii.gz +sub-CC510243,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510243.stripped.N4.nii.gz +sub-CC610508,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610508.stripped.N4.nii.gz +fcon1000Milwaukee_sub18955,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub18955.stripped.N4.nii.gz +sub-CC321557,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321557.stripped.N4.nii.gz +sub-CC510629,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510629.stripped.N4.nii.gz +DLBS0028604_session_1,F,22.6,dlbs_storage/DLBS_bias_corrected/0028604_session_1.stripped.N4.nii.gz +ADNI1227908,F,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I1227908_041_S_6801.stripped.N4.nii.gz +sub-CC721729,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721729.stripped.N4.nii.gz +sub-CC320325,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320325.stripped.N4.nii.gz +sub-CC221511,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221511.stripped.N4.nii.gz +sub-CC610076,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610076.stripped.N4.nii.gz +sub-CC520980,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520980.stripped.N4.nii.gz +DLBS0028478_session_1,F,70.35,dlbs_storage/DLBS_bias_corrected/0028478_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub46058,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46058.stripped.N4.nii.gz +ADNI228875,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I228875_031_S_4024.stripped.N4.nii.gz +DLBS0028601_session_1,M,71.54,dlbs_storage/DLBS_bias_corrected/0028601_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub26557,M,51.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub26557.stripped.N4.nii.gz +sub-CC410032,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410032.stripped.N4.nii.gz +ADNI1461224,M,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1461224_070_S_6966.stripped.N4.nii.gz +sub-CC320336,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320336.stripped.N4.nii.gz +sub-CC620354,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620354.stripped.N4.nii.gz +fcon1000Leiden_sub92061,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub92061.stripped.N4.nii.gz +DLBS0028344_session_1,F,69.81,dlbs_storage/DLBS_bias_corrected/0028344_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub95644,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub95644.stripped.N4.nii.gz +ADNI1215082,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1215082_116_S_6550.stripped.N4.nii.gz +sub-CC110187,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110187.stripped.N4.nii.gz +fcon1000Baltimore_sub96234,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub96234.stripped.N4.nii.gz +fcon1000Leiden_sub56299,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub56299.stripped.N4.nii.gz +ADNI400958,M,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I400958_073_S_4795.stripped.N4.nii.gz +fcon1000Beijing_sub08001,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08001.stripped.N4.nii.gz +fcon1000Leiden_sub93194,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub93194.stripped.N4.nii.gz +DLBS0028508_session_1,F,28.67,dlbs_storage/DLBS_bias_corrected/0028508_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub01787,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub01787.stripped.N4.nii.gz +sub-CC320776,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320776.stripped.N4.nii.gz +sub-CC121111,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121111.stripped.N4.nii.gz +fcon1000Cambridge_sub69397,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69397.stripped.N4.nii.gz +fcon1000AnnArbor_sub99692,F,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub99692.stripped.N4.nii.gz +fcon1000Newark_sub59799,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub59799.stripped.N4.nii.gz +sub-CC321368,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321368.stripped.N4.nii.gz +ADNI381382,M,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I381382_009_S_5252.stripped.N4.nii.gz +ADNI90757,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90757_051_S_1072.stripped.N4.nii.gz +fcon1000AnnArbor_sub57025,F,68.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub57025.stripped.N4.nii.gz +sub-CC320575,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320575.stripped.N4.nii.gz +ADNI323095,F,60.8,adni_storage/ADNI_nii_gz_bias_corrected/I323095_036_S_4894.stripped.N4.nii.gz +sub-CC710088,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710088.stripped.N4.nii.gz +sub-CC710518,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710518.stripped.N4.nii.gz +DLBS0028587_session_1,F,72.59,dlbs_storage/DLBS_bias_corrected/0028587_session_1.stripped.N4.nii.gz +DLBS0028331_session_1,F,77.51,dlbs_storage/DLBS_bias_corrected/0028331_session_1.stripped.N4.nii.gz +fcon1000Newark_sub58526,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub58526.stripped.N4.nii.gz +ADNI362186,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I362186_041_S_4874.stripped.N4.nii.gz +sub-CC510258,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510258.stripped.N4.nii.gz +sub-CC520673,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520673.stripped.N4.nii.gz +DLBS0028484_session_1,M,70.08,dlbs_storage/DLBS_bias_corrected/0028484_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub26670,M,64.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub26670.stripped.N4.nii.gz +fcon1000Cambridge_sub25044,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25044.stripped.N4.nii.gz +fcon1000NewYork_sub17078,M,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub17078.stripped.N4.nii.gz +sub-CC410015,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410015.stripped.N4.nii.gz +sub-CC410084,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410084.stripped.N4.nii.gz +sub-CC520136,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520136.stripped.N4.nii.gz +fcon1000Berlin_sub77281,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub77281.stripped.N4.nii.gz +fcon1000Milwaukee_sub53971,F,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub53971.stripped.N4.nii.gz +sub-CC621128,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621128.stripped.N4.nii.gz +sub-CC121428,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121428.stripped.N4.nii.gz +ADNI10666919,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I10666919_301_S_10139.stripped.N4.nii.gz +sub-CC621199,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621199.stripped.N4.nii.gz +fcon1000Beijing_sub93689,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub93689.stripped.N4.nii.gz +ADNI1080321,F,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I1080321_114_S_6597.stripped.N4.nii.gz +DLBS0028434_session_1,F,70.1,dlbs_storage/DLBS_bias_corrected/0028434_session_1.stripped.N4.nii.gz +DLBS0028576_session_1,F,32.92,dlbs_storage/DLBS_bias_corrected/0028576_session_1.stripped.N4.nii.gz +DLBS0028342_session_1,F,31.98,dlbs_storage/DLBS_bias_corrected/0028342_session_1.stripped.N4.nii.gz +ADNI460666,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I460666_073_S_4795.stripped.N4.nii.gz +sub-CC420222,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420222.stripped.N4.nii.gz +sub-CC720685,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720685.stripped.N4.nii.gz +sub-CC221209,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221209.stripped.N4.nii.gz +fcon1000Milwaukee_sub09931,M,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub09931.stripped.N4.nii.gz +fcon1000Cambridge_sub14278,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14278.stripped.N4.nii.gz +fcon1000Cambridge_sub29425,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29425.stripped.N4.nii.gz +ADNI1195772,F,63.7,adni_storage/ADNI_nii_gz_bias_corrected/I1195772_019_S_6483.stripped.N4.nii.gz +fcon1000Cambridge_sub55874,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55874.stripped.N4.nii.gz +ADNI274149,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I274149_002_S_1155.stripped.N4.nii.gz +ADNI10302489,M,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I10302489_011_S_7112.stripped.N4.nii.gz +fcon1000NewYork_sub23844,F,20.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub23844.stripped.N4.nii.gz +DLBS0028515_session_1,F,50.9,dlbs_storage/DLBS_bias_corrected/0028515_session_1.stripped.N4.nii.gz +ADNI1253903,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1253903_032_S_6602.stripped.N4.nii.gz +fcon1000Beijing_sub06880,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub06880.stripped.N4.nii.gz +sub-CC120313,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120313.stripped.N4.nii.gz +ADNI362185,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I362185_041_S_4874.stripped.N4.nii.gz +ADNI10874412,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I10874412_019_S_10145.stripped.N4.nii.gz +ADNI395983,F,59.3,adni_storage/ADNI_nii_gz_bias_corrected/I395983_130_S_4982.stripped.N4.nii.gz +fcon1000Baltimore_sub91622,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub91622.stripped.N4.nii.gz +DLBS0028414_session_1,F,68.45,dlbs_storage/DLBS_bias_corrected/0028414_session_1.stripped.N4.nii.gz +ADNI114056,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I114056_016_S_1121.stripped.N4.nii.gz +sub-CC510395,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510395.stripped.N4.nii.gz +fcon1000Cambridge_sub89107,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89107.stripped.N4.nii.gz +fcon1000Cambridge_sub60797,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub60797.stripped.N4.nii.gz +fcon1000Newark_sub55760,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub55760.stripped.N4.nii.gz +DLBS0028446_session_1,M,50.89,dlbs_storage/DLBS_bias_corrected/0028446_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub87320,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub87320.stripped.N4.nii.gz +DLBS0028608_session_1,F,38.13,dlbs_storage/DLBS_bias_corrected/0028608_session_1.stripped.N4.nii.gz +sub-CC321331,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321331.stripped.N4.nii.gz +fcon1000Beijing_sub34895,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub34895.stripped.N4.nii.gz +sub-CC220697,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220697.stripped.N4.nii.gz +ADNI1454373,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I1454373_137_S_6906.stripped.N4.nii.gz +ADNI844181,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I844181_022_S_6013.stripped.N4.nii.gz +sub-CC621184,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621184.stripped.N4.nii.gz +sub-CC510473,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510473.stripped.N4.nii.gz +DLBS0028370_session_1,F,22.88,dlbs_storage/DLBS_bias_corrected/0028370_session_1.stripped.N4.nii.gz +DLBS0028567_session_1,F,85.6,dlbs_storage/DLBS_bias_corrected/0028567_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub01912,M,31.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub01912.stripped.N4.nii.gz +ADNI1469814,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1469814_073_S_6925.stripped.N4.nii.gz +sub-CC410222,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410222.stripped.N4.nii.gz +DLBS0028445_session_1,M,55.37,dlbs_storage/DLBS_bias_corrected/0028445_session_1.stripped.N4.nii.gz +DLBS0028451_session_1,F,43.61,dlbs_storage/DLBS_bias_corrected/0028451_session_1.stripped.N4.nii.gz +DLBS0028503_session_1,F,88.32,dlbs_storage/DLBS_bias_corrected/0028503_session_1.stripped.N4.nii.gz +sub-CC221220,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221220.stripped.N4.nii.gz +sub-CC310203,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310203.stripped.N4.nii.gz +ADNI73490,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I73490_067_S_1253.stripped.N4.nii.gz +fcon1000Beijing_sub04050,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub04050.stripped.N4.nii.gz +ADNI168101,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I168101_051_S_1072.stripped.N4.nii.gz +sub-CC420094,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420094.stripped.N4.nii.gz +fcon1000Cambridge_sub15172,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15172.stripped.N4.nii.gz +fcon1000Cambridge_sub14183,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub14183.stripped.N4.nii.gz +sub-CC220506,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220506.stripped.N4.nii.gz +sub-CC722542,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722542.stripped.N4.nii.gz +DLBS0028401_session_1,F,54.05,dlbs_storage/DLBS_bias_corrected/0028401_session_1.stripped.N4.nii.gz +sub-CC721891,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721891.stripped.N4.nii.gz +sub-CC510161,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510161.stripped.N4.nii.gz +sub-CC621011,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621011.stripped.N4.nii.gz +sub-CC520209,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520209.stripped.N4.nii.gz +DLBS0028625_session_1,F,60.37,dlbs_storage/DLBS_bias_corrected/0028625_session_1.stripped.N4.nii.gz +ADNI60863,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I60863_133_S_0913.stripped.N4.nii.gz +ADNI1559412,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1559412_082_S_6629.stripped.N4.nii.gz +sub-CC220920,F,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220920.stripped.N4.nii.gz +fcon1000Cambridge_sub83409,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub83409.stripped.N4.nii.gz +ADNI1406523,F,55.5,adni_storage/ADNI_nii_gz_bias_corrected/I1406523_305_S_6899.stripped.N4.nii.gz +fcon1000Berlin_sub67166,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub67166.stripped.N4.nii.gz +sub-CC221336,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221336.stripped.N4.nii.gz +fcon1000Beijing_sub07717,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07717.stripped.N4.nii.gz +fcon1000AnnArbor_sub05580,F,77.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub05580.stripped.N4.nii.gz +DLBS0028386_session_1,F,33.13,dlbs_storage/DLBS_bias_corrected/0028386_session_1.stripped.N4.nii.gz +ADNI10386604,F,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I10386604_035_S_10067.stripped.N4.nii.gz +fcon1000Beijing_sub68012,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub68012.stripped.N4.nii.gz +ADNI1194377,F,55.1,adni_storage/ADNI_nii_gz_bias_corrected/I1194377_016_S_6773.stripped.N4.nii.gz +sub-CC410113,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410113.stripped.N4.nii.gz +sub-CC120264,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120264.stripped.N4.nii.gz +ADNI347410,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I347410_130_S_4997.stripped.N4.nii.gz +ADNI1254370,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1254370_014_S_6076.stripped.N4.nii.gz +ADNI423069,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I423069_128_S_4607.stripped.N4.nii.gz +DLBS0028476_session_1,F,65.91,dlbs_storage/DLBS_bias_corrected/0028476_session_1.stripped.N4.nii.gz +sub-CC510474,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510474.stripped.N4.nii.gz +fcon1000Milwaukee_sub56333,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56333.stripped.N4.nii.gz +sub-CC221373,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221373.stripped.N4.nii.gz +DLBS0028362_session_1,F,60.87,dlbs_storage/DLBS_bias_corrected/0028362_session_1.stripped.N4.nii.gz +sub-CC510015,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510015.stripped.N4.nii.gz +sub-CC510438,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510438.stripped.N4.nii.gz +ADNI974338,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I974338_003_S_6257.stripped.N4.nii.gz +sub-CC320636,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320636.stripped.N4.nii.gz +sub-CC520395,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520395.stripped.N4.nii.gz +fcon1000Berlin_sub33248,F,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub33248.stripped.N4.nii.gz +sub-CC210088,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210088.stripped.N4.nii.gz +DLBS0028472_session_1,M,42.45,dlbs_storage/DLBS_bias_corrected/0028472_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub39737,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39737.stripped.N4.nii.gz +ADNI344059,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I344059_041_S_4874.stripped.N4.nii.gz +fcon1000Milwaukee_sub45852,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub45852.stripped.N4.nii.gz +fcon1000Beijing_sub22715,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22715.stripped.N4.nii.gz +fcon1000Beijing_sub17093,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17093.stripped.N4.nii.gz +fcon1000NewYork_sub28795,M,10.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub28795.stripped.N4.nii.gz +DLBS0028544_session_1,M,81.75,dlbs_storage/DLBS_bias_corrected/0028544_session_1.stripped.N4.nii.gz +sub-CC520134,F,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520134.stripped.N4.nii.gz +ADNI10937009,M,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I10937009_052_S_10188.stripped.N4.nii.gz +ADNI132477,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I132477_016_S_1121.stripped.N4.nii.gz +sub-CC721519,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721519.stripped.N4.nii.gz +ADNI10454377,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I10454377_022_S_10055.stripped.N4.nii.gz +sub-CC222185,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222185.stripped.N4.nii.gz +ADNI1446679,F,59.8,adni_storage/ADNI_nii_gz_bias_corrected/I1446679_070_S_6942.stripped.N4.nii.gz +fcon1000AnnArbor_sub85257,M,26.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub85257.stripped.N4.nii.gz +fcon1000NewYork_sub29216,M,29.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub29216.stripped.N4.nii.gz +DLBS0028479_session_1,M,40.93,dlbs_storage/DLBS_bias_corrected/0028479_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub35776,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35776.stripped.N4.nii.gz +sub-CC210023,M,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210023.stripped.N4.nii.gz +ADNI267809,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I267809_037_S_4028.stripped.N4.nii.gz +fcon1000NewYork_sub53461,M,27.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub53461.stripped.N4.nii.gz +fcon1000Milwaukee_sub55176,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub55176.stripped.N4.nii.gz +DLBS0028420_session_1,F,81.2,dlbs_storage/DLBS_bias_corrected/0028420_session_1.stripped.N4.nii.gz +sub-CC510237,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510237.stripped.N4.nii.gz +fcon1000Cambridge_sub49998,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub49998.stripped.N4.nii.gz +fcon1000Cambridge_sub13187,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub13187.stripped.N4.nii.gz +sub-CC222496,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222496.stripped.N4.nii.gz +fcon1000Cambridge_sub04491,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub04491.stripped.N4.nii.gz +sub-CC120376,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120376.stripped.N4.nii.gz +ADNI114263,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I114263_133_S_0913.stripped.N4.nii.gz +DLBS0028602_session_1,F,29.19,dlbs_storage/DLBS_bias_corrected/0028602_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub15846,F,70.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub15846.stripped.N4.nii.gz +fcon1000Baltimore_sub76160,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub76160.stripped.N4.nii.gz +fcon1000Cambridge_sub99462,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99462.stripped.N4.nii.gz +fcon1000Beijing_sub66889,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66889.stripped.N4.nii.gz +ADNI87682,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I87682_133_S_0913.stripped.N4.nii.gz +ADNI1254369,F,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I1254369_014_S_6076.stripped.N4.nii.gz +ADNI367180,M,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I367180_135_S_4954.stripped.N4.nii.gz +fcon1000Berlin_sub54976,M,37.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub54976.stripped.N4.nii.gz +fcon1000Beijing_sub87776,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub87776.stripped.N4.nii.gz +fcon1000Milwaukee_sub59359,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub59359.stripped.N4.nii.gz +ADNI1079629,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1079629_082_S_6629.stripped.N4.nii.gz +sub-CC221352,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221352.stripped.N4.nii.gz +sub-CC210124,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210124.stripped.N4.nii.gz +fcon1000NewYork_sub19579,M,46.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub19579.stripped.N4.nii.gz +sub-CC320568,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320568.stripped.N4.nii.gz +sub-CC520503,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520503.stripped.N4.nii.gz +fcon1000Baltimore_sub77572,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub77572.stripped.N4.nii.gz +DLBS0028375_session_1,F,59.07,dlbs_storage/DLBS_bias_corrected/0028375_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub30157,M,54.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub30157.stripped.N4.nii.gz +fcon1000AnnArbor_sub78151,M,23.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub78151.stripped.N4.nii.gz +DLBS0028586_session_1,M,79.85,dlbs_storage/DLBS_bias_corrected/0028586_session_1.stripped.N4.nii.gz +DLBS0028447_session_1,M,51.78,dlbs_storage/DLBS_bias_corrected/0028447_session_1.stripped.N4.nii.gz +sub-CC221954,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221954.stripped.N4.nii.gz +sub-CC320893,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320893.stripped.N4.nii.gz +fcon1000Beijing_sub07144,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub07144.stripped.N4.nii.gz +DLBS0028482_session_1,M,63.47,dlbs_storage/DLBS_bias_corrected/0028482_session_1.stripped.N4.nii.gz +DLBS0028349_session_1,M,64.17,dlbs_storage/DLBS_bias_corrected/0028349_session_1.stripped.N4.nii.gz +fcon1000Munchen_sub81737,F,67.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub81737.stripped.N4.nii.gz +ADNI341153,M,60.6,adni_storage/ADNI_nii_gz_bias_corrected/I341153_128_S_4599.stripped.N4.nii.gz +sub-CC110098,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110098.stripped.N4.nii.gz +sub-CC621118,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621118.stripped.N4.nii.gz +DLBS0028452_session_1,F,59.71,dlbs_storage/DLBS_bias_corrected/0028452_session_1.stripped.N4.nii.gz +ADNI228845,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I228845_037_S_4028.stripped.N4.nii.gz +DLBS0028614_session_1,F,53.77,dlbs_storage/DLBS_bias_corrected/0028614_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub24670,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub24670.stripped.N4.nii.gz +ADNI1181048,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1181048_116_S_6428.stripped.N4.nii.gz +fcon1000Cambridge_sub59729,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub59729.stripped.N4.nii.gz +DLBS0028425_session_1,M,23.02,dlbs_storage/DLBS_bias_corrected/0028425_session_1.stripped.N4.nii.gz +sub-CC510342,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510342.stripped.N4.nii.gz +fcon1000Milwaukee_sub58967,F,61.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub58967.stripped.N4.nii.gz +sub-CC220107,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220107.stripped.N4.nii.gz +sub-CC620499,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620499.stripped.N4.nii.gz +fcon1000Cambridge_sub89435,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89435.stripped.N4.nii.gz +sub-CC420162,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420162.stripped.N4.nii.gz +fcon1000Newark_sub78225,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub78225.stripped.N4.nii.gz +fcon1000AnnArbor_sub38614,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub38614.stripped.N4.nii.gz +fcon1000Leiden_sub52853,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub52853.stripped.N4.nii.gz +DLBS0028353_session_1,M,60.01,dlbs_storage/DLBS_bias_corrected/0028353_session_1.stripped.N4.nii.gz +ADNI10471094,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I10471094_073_S_10113.stripped.N4.nii.gz +sub-CC312058,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC312058.stripped.N4.nii.gz +sub-CC710176,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710176.stripped.N4.nii.gz +ADNI296147,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I296147_116_S_4625.stripped.N4.nii.gz +sub-CC520562,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520562.stripped.N4.nii.gz +DLBS0028621_session_1,F,30.6,dlbs_storage/DLBS_bias_corrected/0028621_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub53269,M,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub53269.stripped.N4.nii.gz +DLBS0028529_session_1,F,86.77,dlbs_storage/DLBS_bias_corrected/0028529_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub30272,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30272.stripped.N4.nii.gz +fcon1000Beijing_sub89088,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89088.stripped.N4.nii.gz +DLBS0028396_session_1,M,67.74,dlbs_storage/DLBS_bias_corrected/0028396_session_1.stripped.N4.nii.gz +sub-CC620479,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620479.stripped.N4.nii.gz +ADNI352951,M,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I352951_002_S_1155.stripped.N4.nii.gz +fcon1000Milwaukee_sub64463,M,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub64463.stripped.N4.nii.gz +sub-CC620129,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620129.stripped.N4.nii.gz +DLBS0028594_session_1,M,80.29,dlbs_storage/DLBS_bias_corrected/0028594_session_1.stripped.N4.nii.gz +sub-CC220974,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220974.stripped.N4.nii.gz +sub-CC321281,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321281.stripped.N4.nii.gz +sub-CC310252,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310252.stripped.N4.nii.gz +ADNI944422,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I944422_041_S_6136.stripped.N4.nii.gz +fcon1000Cambridge_sub61753,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61753.stripped.N4.nii.gz +sub-CC310129,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310129.stripped.N4.nii.gz +sub-CC320088,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320088.stripped.N4.nii.gz +sub-CC621642,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621642.stripped.N4.nii.gz +fcon1000Cambridge_sub17772,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17772.stripped.N4.nii.gz +sub-CC321174,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321174.stripped.N4.nii.gz +ADNI1486321,M,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I1486321_941_S_6998.stripped.N4.nii.gz +ADNI313534,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I313534_116_S_4625.stripped.N4.nii.gz +DLBS0028340_session_1,F,67.83,dlbs_storage/DLBS_bias_corrected/0028340_session_1.stripped.N4.nii.gz +sub-CC321431,F,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321431.stripped.N4.nii.gz +sub-CC711158,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711158.stripped.N4.nii.gz +sub-CC420412,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420412.stripped.N4.nii.gz +sub-CC510115,F,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510115.stripped.N4.nii.gz +sub-CC120208,F,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120208.stripped.N4.nii.gz +fcon1000NewYork_sub41546,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub41546.stripped.N4.nii.gz +sub-CC610372,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610372.stripped.N4.nii.gz +DLBS0028350_session_1,F,49.82,dlbs_storage/DLBS_bias_corrected/0028350_session_1.stripped.N4.nii.gz +sub-CC620785,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620785.stripped.N4.nii.gz +sub-CC710382,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710382.stripped.N4.nii.gz +DLBS0028352_session_1,F,29.84,dlbs_storage/DLBS_bias_corrected/0028352_session_1.stripped.N4.nii.gz +ADNI296878,F,58.5,adni_storage/ADNI_nii_gz_bias_corrected/I296878_012_S_4642.stripped.N4.nii.gz +fcon1000Munchen_sub96752,F,63.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub96752.stripped.N4.nii.gz +ADNI1514331,F,52.8,adni_storage/ADNI_nii_gz_bias_corrected/I1514331_037_S_6992.stripped.N4.nii.gz +ADNI368465,M,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I368465_073_S_4552.stripped.N4.nii.gz +fcon1000Baltimore_sub90893,F,39.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub90893.stripped.N4.nii.gz +fcon1000Cambridge_sub82435,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub82435.stripped.N4.nii.gz +fcon1000Beijing_sub15441,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub15441.stripped.N4.nii.gz +sub-CC621284,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC621284.stripped.N4.nii.gz +sub-CC410354,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410354.stripped.N4.nii.gz +sub-CC122405,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC122405.stripped.N4.nii.gz +fcon1000Cambridge_sub50272,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub50272.stripped.N4.nii.gz +sub-CC721707,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721707.stripped.N4.nii.gz +fcon1000Bangor_sub04097,M,36.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub04097.stripped.N4.nii.gz +ADNI1092240,M,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1092240_114_S_6039.stripped.N4.nii.gz +DLBS0028631_session_1,F,29.92,dlbs_storage/DLBS_bias_corrected/0028631_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub87784,M,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub87784.stripped.N4.nii.gz +ADNI365455,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I365455_073_S_4795.stripped.N4.nii.gz +sub-CC310414,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310414.stripped.N4.nii.gz +fcon1000Cleveland_sub02480,F,56.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub02480.stripped.N4.nii.gz +fcon1000Milwaukee_sub24237,F,52.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub24237.stripped.N4.nii.gz +fcon1000NewYork_sub15213,M,16.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub15213.stripped.N4.nii.gz +sub-CC110037,M,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110037.stripped.N4.nii.gz +fcon1000Beijing_sub71693,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub71693.stripped.N4.nii.gz +DLBS0028490_session_1,F,63.73,dlbs_storage/DLBS_bias_corrected/0028490_session_1.stripped.N4.nii.gz +sub-CC321880,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321880.stripped.N4.nii.gz +sub-CC321594,M,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321594.stripped.N4.nii.gz +sub-CC221828,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221828.stripped.N4.nii.gz +DLBS0028474_session_1,F,83.7,dlbs_storage/DLBS_bias_corrected/0028474_session_1.stripped.N4.nii.gz +ADNI247842,F,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I247842_037_S_4028.stripped.N4.nii.gz +fcon1000Cambridge_sub57221,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub57221.stripped.N4.nii.gz +sub-CC120286,M,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120286.stripped.N4.nii.gz +DLBS0028441_session_1,M,45.18,dlbs_storage/DLBS_bias_corrected/0028441_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub28698,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28698.stripped.N4.nii.gz +ADNI117521,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I117521_051_S_1072.stripped.N4.nii.gz +fcon1000Cambridge_sub47162,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47162.stripped.N4.nii.gz +fcon1000Beijing_sub54890,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub54890.stripped.N4.nii.gz +sub-CC720304,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720304.stripped.N4.nii.gz +fcon1000Cambridge_sub58682,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58682.stripped.N4.nii.gz +fcon1000Beijing_sub05267,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub05267.stripped.N4.nii.gz +ADNI36695,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I36695_016_S_1121.stripped.N4.nii.gz +sub-CC520775,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520775.stripped.N4.nii.gz +fcon1000Beijing_sub81062,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub81062.stripped.N4.nii.gz +fcon1000Milwaukee_sub58677,F,46.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub58677.stripped.N4.nii.gz +DLBS0028374_session_1,F,55.62,dlbs_storage/DLBS_bias_corrected/0028374_session_1.stripped.N4.nii.gz +DLBS0028345_session_1,F,59.73,dlbs_storage/DLBS_bias_corrected/0028345_session_1.stripped.N4.nii.gz +DLBS0028381_session_1,F,24.24,dlbs_storage/DLBS_bias_corrected/0028381_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub42512,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42512.stripped.N4.nii.gz +sub-CC620557,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620557.stripped.N4.nii.gz +sub-CC120469,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120469.stripped.N4.nii.gz +ADNI399835,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I399835_137_S_0994.stripped.N4.nii.gz +ADNI379704,M,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I379704_131_S_5138.stripped.N4.nii.gz +DLBS0028574_session_1,M,50.35,dlbs_storage/DLBS_bias_corrected/0028574_session_1.stripped.N4.nii.gz +ADNI359049,M,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I359049_073_S_5090.stripped.N4.nii.gz +sub-CC222367,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222367.stripped.N4.nii.gz +fcon1000Beijing_sub56659,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56659.stripped.N4.nii.gz +fcon1000Cambridge_sub63661,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub63661.stripped.N4.nii.gz +DLBS0028566_session_1,F,57.36,dlbs_storage/DLBS_bias_corrected/0028566_session_1.stripped.N4.nii.gz +ADNI1079630,F,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I1079630_082_S_6629.stripped.N4.nii.gz +ADNI358859,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I358859_130_S_4982.stripped.N4.nii.gz +DLBS0028428_session_1,F,45.85,dlbs_storage/DLBS_bias_corrected/0028428_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub99085,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99085.stripped.N4.nii.gz +fcon1000Beijing_sub66528,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub66528.stripped.N4.nii.gz +ADNI1332718,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I1332718_123_S_6884.stripped.N4.nii.gz +ADNI1031290,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1031290_070_S_6542.stripped.N4.nii.gz +fcon1000NewYork_sub22349,M,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub22349.stripped.N4.nii.gz +fcon1000Cambridge_sub06987,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub06987.stripped.N4.nii.gz +fcon1000Beijing_sub58029,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58029.stripped.N4.nii.gz +sub-CC610462,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610462.stripped.N4.nii.gz +ADNI1029048,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I1029048_177_S_6409.stripped.N4.nii.gz +DLBS0028502_session_1,F,82.54,dlbs_storage/DLBS_bias_corrected/0028502_session_1.stripped.N4.nii.gz +DLBS0028514_session_1,M,34.44,dlbs_storage/DLBS_bias_corrected/0028514_session_1.stripped.N4.nii.gz +fcon1000Cleveland_sub34189,M,55.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub34189.stripped.N4.nii.gz +sub-CC520517,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520517.stripped.N4.nii.gz +fcon1000Cambridge_sub68425,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub68425.stripped.N4.nii.gz +fcon1000Beijing_sub42555,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42555.stripped.N4.nii.gz +ADNI10453853,M,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I10453853_019_S_10102.stripped.N4.nii.gz +fcon1000Beijing_sub30988,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30988.stripped.N4.nii.gz +fcon1000Beijing_sub42843,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub42843.stripped.N4.nii.gz +fcon1000Berlin_sub27797,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27797.stripped.N4.nii.gz +sub-CC610099,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610099.stripped.N4.nii.gz +fcon1000Cambridge_sub37374,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub37374.stripped.N4.nii.gz +fcon1000Cambridge_sub34586,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub34586.stripped.N4.nii.gz +fcon1000Cambridge_sub39142,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39142.stripped.N4.nii.gz +ADNI1559411,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1559411_082_S_6629.stripped.N4.nii.gz +fcon1000Cleveland_sub58811,M,36.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub58811.stripped.N4.nii.gz +fcon1000Cambridge_sub25058,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25058.stripped.N4.nii.gz +fcon1000Cambridge_sub90059,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90059.stripped.N4.nii.gz +fcon1000Beijing_sub88306,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub88306.stripped.N4.nii.gz +ADNI386097,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I386097_041_S_4874.stripped.N4.nii.gz +DLBS0028382_session_1,F,88.07,dlbs_storage/DLBS_bias_corrected/0028382_session_1.stripped.N4.nii.gz +sub-CC711245,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711245.stripped.N4.nii.gz +ADNI908586,M,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I908586_012_S_6073.stripped.N4.nii.gz +sub-CC221977,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221977.stripped.N4.nii.gz +fcon1000NewYork_sub48803,M,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub48803.stripped.N4.nii.gz +ADNI1002373,M,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1002373_014_S_6366.stripped.N4.nii.gz +ADNI298226,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I298226_023_S_4448.stripped.N4.nii.gz +fcon1000Cleveland_sub46075,M,33.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub46075.stripped.N4.nii.gz +fcon1000NewYork_sub26267,F,15.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub26267.stripped.N4.nii.gz +fcon1000Cambridge_sub84064,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84064.stripped.N4.nii.gz +fcon1000Cleveland_sub67936,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub67936.stripped.N4.nii.gz +sub-CC520065,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520065.stripped.N4.nii.gz +sub-CC320417,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320417.stripped.N4.nii.gz +ADNI20682,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I20682_131_S_0691.stripped.N4.nii.gz +sub-CC310473,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310473.stripped.N4.nii.gz +fcon1000NewYork_sub15758,M,32.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub15758.stripped.N4.nii.gz +fcon1000Berlin_sub47066,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub47066.stripped.N4.nii.gz +fcon1000Beijing_sub35309,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35309.stripped.N4.nii.gz +fcon1000Beijing_sub02403,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub02403.stripped.N4.nii.gz +fcon1000Cleveland_sub18566,F,33.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub18566.stripped.N4.nii.gz +ADNI298228,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I298228_023_S_4448.stripped.N4.nii.gz +sub-CC420260,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420260.stripped.N4.nii.gz +DLBS0028550_session_1,F,22.17,dlbs_storage/DLBS_bias_corrected/0028550_session_1.stripped.N4.nii.gz +sub-CC710350,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710350.stripped.N4.nii.gz +fcon1000AnnArbor_sub56028,F,26.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub56028.stripped.N4.nii.gz +fcon1000Cambridge_sub61185,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61185.stripped.N4.nii.gz +ADNI1592044,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I1592044_014_S_7080.stripped.N4.nii.gz +DLBS0028469_session_1,M,50.46,dlbs_storage/DLBS_bias_corrected/0028469_session_1.stripped.N4.nii.gz +sub-CC510355,F,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510355.stripped.N4.nii.gz +fcon1000NewYork_sub24528,M,45.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub24528.stripped.N4.nii.gz +DLBS0028486_session_1,F,37.81,dlbs_storage/DLBS_bias_corrected/0028486_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub27519,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub27519.stripped.N4.nii.gz +DLBS0028609_session_1,M,85.77,dlbs_storage/DLBS_bias_corrected/0028609_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub44515,M,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44515.stripped.N4.nii.gz +ADNI10907107,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I10907107_073_S_10167.stripped.N4.nii.gz +fcon1000Cambridge_sub77337,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub77337.stripped.N4.nii.gz +sub-CC420061,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420061.stripped.N4.nii.gz +fcon1000Cambridge_sub29800,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub29800.stripped.N4.nii.gz +sub-CC710416,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710416.stripped.N4.nii.gz +ADNI1321252,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1321252_305_S_6744.stripped.N4.nii.gz +fcon1000Cambridge_sub61436,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61436.stripped.N4.nii.gz +fcon1000AnnArbor_sub04619,M,18.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub04619.stripped.N4.nii.gz +sub-CC420433,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420433.stripped.N4.nii.gz +fcon1000Cambridge_sub99330,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub99330.stripped.N4.nii.gz +sub-CC420454,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420454.stripped.N4.nii.gz +sub-CC710494,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710494.stripped.N4.nii.gz +fcon1000NewYork_sub54828,M,41.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub54828.stripped.N4.nii.gz +ADNI339298,M,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I339298_073_S_4552.stripped.N4.nii.gz +ADNI271074,M,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I271074_116_S_4195.stripped.N4.nii.gz +sub-CC720497,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720497.stripped.N4.nii.gz +ADNI942628,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I942628_036_S_6134.stripped.N4.nii.gz +ADNI372468,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I372468_019_S_5019.stripped.N4.nii.gz +fcon1000Newark_sub53422,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub53422.stripped.N4.nii.gz +sub-CC510226,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510226.stripped.N4.nii.gz +sub-CC420241,M,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420241.stripped.N4.nii.gz +ADNI10417928,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10417928_037_S_10061.stripped.N4.nii.gz +fcon1000Beijing_sub08455,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub08455.stripped.N4.nii.gz +sub-CC510534,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510534.stripped.N4.nii.gz +fcon1000Cambridge_sub61209,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub61209.stripped.N4.nii.gz +sub-CC721434,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721434.stripped.N4.nii.gz +sub-CC720023,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720023.stripped.N4.nii.gz +DLBS0028442_session_1,F,29.32,dlbs_storage/DLBS_bias_corrected/0028442_session_1.stripped.N4.nii.gz +sub-CC410220,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410220.stripped.N4.nii.gz +fcon1000Baltimore_sub31837,F,34.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub31837.stripped.N4.nii.gz +sub-CC320680,M,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320680.stripped.N4.nii.gz +DLBS0028399_session_1,F,70.68,dlbs_storage/DLBS_bias_corrected/0028399_session_1.stripped.N4.nii.gz +ADNI1527249,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I1527249_035_S_7030.stripped.N4.nii.gz +sub-CC410226,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410226.stripped.N4.nii.gz +sub-CC620436,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620436.stripped.N4.nii.gz +fcon1000Atlanta_sub61442,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub61442.stripped.N4.nii.gz +sub-CC610288,M,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610288.stripped.N4.nii.gz +fcon1000Beijing_sub87089,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub87089.stripped.N4.nii.gz +fcon1000Beijing_sub53572,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub53572.stripped.N4.nii.gz +DLBS0028346_session_1,F,57.48,dlbs_storage/DLBS_bias_corrected/0028346_session_1.stripped.N4.nii.gz +ADNI1463003,M,57.1,adni_storage/ADNI_nii_gz_bias_corrected/I1463003_033_S_6976.stripped.N4.nii.gz +fcon1000Newark_sub54933,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub54933.stripped.N4.nii.gz +sub-CC120123,F,19.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120123.stripped.N4.nii.gz +fcon1000Beijing_sub91952,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub91952.stripped.N4.nii.gz +DLBS0028477_session_1,F,60.81,dlbs_storage/DLBS_bias_corrected/0028477_session_1.stripped.N4.nii.gz +DLBS0028372_session_1,F,74.83,dlbs_storage/DLBS_bias_corrected/0028372_session_1.stripped.N4.nii.gz +sub-CC610051,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610051.stripped.N4.nii.gz +fcon1000Munchen_sub66933,M,72.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub66933.stripped.N4.nii.gz +fcon1000Atlanta_sub61902,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub61902.stripped.N4.nii.gz +sub-CC620496,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620496.stripped.N4.nii.gz +fcon1000Beijing_sub10973,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10973.stripped.N4.nii.gz +fcon1000NewYork_sub21212,M,30.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub21212.stripped.N4.nii.gz +sub-CC520055,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520055.stripped.N4.nii.gz +ADNI1004030,F,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1004030_023_S_6400.stripped.N4.nii.gz +ADNI925573,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I925573_168_S_6098.stripped.N4.nii.gz +fcon1000Baltimore_sub81887,M,32.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub81887.stripped.N4.nii.gz +fcon1000NewYork_sub77203,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub77203.stripped.N4.nii.gz +sub-CC410177,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410177.stripped.N4.nii.gz +DLBS0028338_session_1,F,30.26,dlbs_storage/DLBS_bias_corrected/0028338_session_1.stripped.N4.nii.gz +ADNI10666918,F,59.7,adni_storage/ADNI_nii_gz_bias_corrected/I10666918_301_S_10139.stripped.N4.nii.gz +fcon1000Cambridge_sub09015,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09015.stripped.N4.nii.gz +DLBS0028455_session_1,F,72.56,dlbs_storage/DLBS_bias_corrected/0028455_session_1.stripped.N4.nii.gz +sub-CC420197,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420197.stripped.N4.nii.gz +sub-CC710313,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710313.stripped.N4.nii.gz +fcon1000Atlanta_sub55652,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub55652.stripped.N4.nii.gz +fcon1000Leiden_sub10481,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub10481.stripped.N4.nii.gz +fcon1000Cambridge_sub64308,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub64308.stripped.N4.nii.gz +fcon1000Beijing_sub10869,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10869.stripped.N4.nii.gz +sub-CC520247,M,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520247.stripped.N4.nii.gz +DLBS0028367_session_1,F,29.58,dlbs_storage/DLBS_bias_corrected/0028367_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub35512,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub35512.stripped.N4.nii.gz +ADNI342679,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I342679_073_S_5016.stripped.N4.nii.gz +ADNI1215081,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I1215081_116_S_6550.stripped.N4.nii.gz +sub-CC510304,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510304.stripped.N4.nii.gz +sub-CC620549,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620549.stripped.N4.nii.gz +DLBS0028569_session_1,M,67.65,dlbs_storage/DLBS_bias_corrected/0028569_session_1.stripped.N4.nii.gz +sub-CC320576,F,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320576.stripped.N4.nii.gz +fcon1000Cleveland_sub20003,M,39.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub20003.stripped.N4.nii.gz +sub-CC220115,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220115.stripped.N4.nii.gz +ADNI883189,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I883189_141_S_6042.stripped.N4.nii.gz +ADNI415587,M,57.2,adni_storage/ADNI_nii_gz_bias_corrected/I415587_009_S_5252.stripped.N4.nii.gz +fcon1000Atlanta_sub18702,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub18702.stripped.N4.nii.gz +sub-CC723395,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC723395.stripped.N4.nii.gz +fcon1000NewYork_sub53710,F,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub53710.stripped.N4.nii.gz +ADNI372477,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I372477_019_S_5019.stripped.N4.nii.gz +ADNI238752,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I238752_014_S_4039.stripped.N4.nii.gz +sub-CC221031,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221031.stripped.N4.nii.gz +fcon1000Cambridge_sub51172,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51172.stripped.N4.nii.gz +sub-CC620515,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620515.stripped.N4.nii.gz +sub-CC320267,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320267.stripped.N4.nii.gz +sub-CC221038,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221038.stripped.N4.nii.gz +fcon1000AnnArbor_sub42616,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub42616.stripped.N4.nii.gz +sub-CC321595,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321595.stripped.N4.nii.gz +DLBS0028496_session_1,M,22.44,dlbs_storage/DLBS_bias_corrected/0028496_session_1.stripped.N4.nii.gz +sub-CC720290,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720290.stripped.N4.nii.gz +sub-CC520168,M,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520168.stripped.N4.nii.gz +fcon1000Berlin_sub97162,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub97162.stripped.N4.nii.gz +DLBS0028541_session_1,F,45.8,dlbs_storage/DLBS_bias_corrected/0028541_session_1.stripped.N4.nii.gz +DLBS0028402_session_1,M,86.41,dlbs_storage/DLBS_bias_corrected/0028402_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub45019,F,44.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub45019.stripped.N4.nii.gz +ADNI46723,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I46723_016_S_0769.stripped.N4.nii.gz +sub-CC720986,M,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720986.stripped.N4.nii.gz +sub-CC710342,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710342.stripped.N4.nii.gz +sub-CC520127,M,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520127.stripped.N4.nii.gz +ADNI117520,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I117520_051_S_1072.stripped.N4.nii.gz +fcon1000Beijing_sub33991,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33991.stripped.N4.nii.gz +sub-CC420180,F,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420180.stripped.N4.nii.gz +sub-CC610022,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610022.stripped.N4.nii.gz +sub-CC521040,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC521040.stripped.N4.nii.gz +fcon1000Beijing_sub62083,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62083.stripped.N4.nii.gz +fcon1000Atlanta_sub26938,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub26938.stripped.N4.nii.gz +ADNI958917,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I958917_070_S_6191.stripped.N4.nii.gz +sub-CC420623,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420623.stripped.N4.nii.gz +fcon1000NewYork_sub45217,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub45217.stripped.N4.nii.gz +sub-CC310135,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310135.stripped.N4.nii.gz +ADNI1427086,F,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I1427086_003_S_6924.stripped.N4.nii.gz +DLBS0028456_session_1,M,53.75,dlbs_storage/DLBS_bias_corrected/0028456_session_1.stripped.N4.nii.gz +ADNI1549623,F,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1549623_035_S_7043.stripped.N4.nii.gz +ADNI1485047,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1485047_116_S_6550.stripped.N4.nii.gz +fcon1000Berlin_sub75506,M,28.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub75506.stripped.N4.nii.gz +fcon1000AnnArbor_sub47659,M,33.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub47659.stripped.N4.nii.gz +fcon1000NewYork_sub12486,M,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub12486.stripped.N4.nii.gz +DLBS0028364_session_1,F,24.49,dlbs_storage/DLBS_bias_corrected/0028364_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub98624,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub98624.stripped.N4.nii.gz +ADNI982856,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I982856_109_S_6218.stripped.N4.nii.gz +sub-CC321899,F,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321899.stripped.N4.nii.gz +sub-CC310397,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310397.stripped.N4.nii.gz +fcon1000NewYork_sub51677,F,25.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub51677.stripped.N4.nii.gz +fcon1000AnnArbor_sub72215,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub72215.stripped.N4.nii.gz +sub-CC221107,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221107.stripped.N4.nii.gz +fcon1000Newark_sub76647,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub76647.stripped.N4.nii.gz +fcon1000Atlanta_sub75153,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub75153.stripped.N4.nii.gz +fcon1000Cambridge_sub17737,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17737.stripped.N4.nii.gz +ADNI296138,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I296138_116_S_4625.stripped.N4.nii.gz +sub-CC410094,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410094.stripped.N4.nii.gz +fcon1000Cambridge_sub41567,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41567.stripped.N4.nii.gz +fcon1000Atlanta_sub24972,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub24972.stripped.N4.nii.gz +fcon1000AnnArbor_sub90950,M,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub90950.stripped.N4.nii.gz +fcon1000Beijing_sub35806,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub35806.stripped.N4.nii.gz +sub-CC721532,F,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721532.stripped.N4.nii.gz +fcon1000Cambridge_sub51512,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51512.stripped.N4.nii.gz +ADNI946333,F,58.4,adni_storage/ADNI_nii_gz_bias_corrected/I946333_024_S_6033.stripped.N4.nii.gz +fcon1000Cambridge_sub71849,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub71849.stripped.N4.nii.gz +ADNI23823,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I23823_016_S_0769.stripped.N4.nii.gz +DLBS0028462_session_1,M,31.03,dlbs_storage/DLBS_bias_corrected/0028462_session_1.stripped.N4.nii.gz +fcon1000Milwaukee_sub17004,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub17004.stripped.N4.nii.gz +ADNI10460262,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I10460262_011_S_10041.stripped.N4.nii.gz +sub-CC510208,F,66.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510208.stripped.N4.nii.gz +DLBS0028524_session_1,F,56.55,dlbs_storage/DLBS_bias_corrected/0028524_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub73812,M,28.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub73812.stripped.N4.nii.gz +sub-CC410284,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410284.stripped.N4.nii.gz +fcon1000Atlanta_sub58250,F,54.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub58250.stripped.N4.nii.gz +fcon1000Newark_sub71743,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub71743.stripped.N4.nii.gz +ADNI115774,F,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I115774_033_S_0733.stripped.N4.nii.gz +ADNI394452,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I394452_135_S_4954.stripped.N4.nii.gz +ADNI358858,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I358858_130_S_4982.stripped.N4.nii.gz +sub-CC321203,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321203.stripped.N4.nii.gz +fcon1000Cambridge_sub94304,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub94304.stripped.N4.nii.gz +ADNI1591453,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I1591453_014_S_7072.stripped.N4.nii.gz +DLBS0028526_session_1,M,42.6,dlbs_storage/DLBS_bias_corrected/0028526_session_1.stripped.N4.nii.gz +sub-CC310400,M,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310400.stripped.N4.nii.gz +fcon1000Bangor_sub87568,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub87568.stripped.N4.nii.gz +sub-CC520200,F,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520200.stripped.N4.nii.gz +sub-CC722891,F,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722891.stripped.N4.nii.gz +sub-CC420100,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420100.stripped.N4.nii.gz +sub-CC520053,M,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520053.stripped.N4.nii.gz +fcon1000Berlin_sub23506,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub23506.stripped.N4.nii.gz +sub-CC520287,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520287.stripped.N4.nii.gz +DLBS0028568_session_1,M,41.17,dlbs_storage/DLBS_bias_corrected/0028568_session_1.stripped.N4.nii.gz +ADNI1032531,F,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I1032531_116_S_6550.stripped.N4.nii.gz +sub-CC320621,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320621.stripped.N4.nii.gz +fcon1000Cambridge_sub62424,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62424.stripped.N4.nii.gz +fcon1000Cambridge_sub43304,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub43304.stripped.N4.nii.gz +sub-CC610061,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610061.stripped.N4.nii.gz +sub-CC320478,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320478.stripped.N4.nii.gz +sub-CC722421,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722421.stripped.N4.nii.gz +ADNI1469780,M,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1469780_073_S_6669.stripped.N4.nii.gz +fcon1000Munchen_sub64202,F,67.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub64202.stripped.N4.nii.gz +fcon1000Beijing_sub33747,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub33747.stripped.N4.nii.gz +ADNI37255,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I37255_067_S_1185.stripped.N4.nii.gz +sub-CC420229,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420229.stripped.N4.nii.gz +sub-CC221002,F,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221002.stripped.N4.nii.gz +DLBS0028599_session_1,F,62.14,dlbs_storage/DLBS_bias_corrected/0028599_session_1.stripped.N4.nii.gz +sub-CC320888,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320888.stripped.N4.nii.gz +DLBS0028618_session_1,F,26.36,dlbs_storage/DLBS_bias_corrected/0028618_session_1.stripped.N4.nii.gz +sub-CC610614,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610614.stripped.N4.nii.gz +sub-CC710679,M,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710679.stripped.N4.nii.gz +sub-CC222125,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222125.stripped.N4.nii.gz +ADNI10658149,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I10658149_016_S_10124.stripped.N4.nii.gz +sub-CC720622,F,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720622.stripped.N4.nii.gz +sub-CC712027,M,87.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC712027.stripped.N4.nii.gz +sub-CC221487,M,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221487.stripped.N4.nii.gz +sub-CC220352,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220352.stripped.N4.nii.gz +ADNI46724,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I46724_016_S_0769.stripped.N4.nii.gz +fcon1000Berlin_sub57028,F,37.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub57028.stripped.N4.nii.gz +fcon1000Beijing_sub06899,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub06899.stripped.N4.nii.gz +fcon1000Cambridge_sub00294,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub00294.stripped.N4.nii.gz +fcon1000Leiden_sub40907,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub40907.stripped.N4.nii.gz +DLBS0028355_session_1,M,70.7,dlbs_storage/DLBS_bias_corrected/0028355_session_1.stripped.N4.nii.gz +ADNI1476165,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I1476165_305_S_6744.stripped.N4.nii.gz +ADNI1484638,F,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I1484638_067_S_6986.stripped.N4.nii.gz +fcon1000Beijing_sub26713,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub26713.stripped.N4.nii.gz +DLBS0028510_session_1,F,51.3,dlbs_storage/DLBS_bias_corrected/0028510_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub20563,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub20563.stripped.N4.nii.gz +fcon1000Newark_sub36023,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub36023.stripped.N4.nii.gz +fcon1000Berlin_sub27536,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub27536.stripped.N4.nii.gz +fcon1000Milwaukee_sub75919,F,50.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub75919.stripped.N4.nii.gz +sub-CC110062,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110062.stripped.N4.nii.gz +ADNI347408,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I347408_130_S_4997.stripped.N4.nii.gz +fcon1000Leiden_sub18456,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub18456.stripped.N4.nii.gz +ADNI1571742,F,58.6,adni_storage/ADNI_nii_gz_bias_corrected/I1571742_067_S_7061.stripped.N4.nii.gz +sub-CC610469,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610469.stripped.N4.nii.gz +fcon1000Munchen_sub28902,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub28902.stripped.N4.nii.gz +ADNI67599,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I67599_033_S_0733.stripped.N4.nii.gz +sub-CC320686,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320686.stripped.N4.nii.gz +sub-CC220098,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220098.stripped.N4.nii.gz +DLBS0028489_session_1,F,70.28,dlbs_storage/DLBS_bias_corrected/0028489_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub66131,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub66131.stripped.N4.nii.gz +DLBS0028626_session_1,M,48.88,dlbs_storage/DLBS_bias_corrected/0028626_session_1.stripped.N4.nii.gz +sub-CC720511,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720511.stripped.N4.nii.gz +fcon1000Beijing_sub28403,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28403.stripped.N4.nii.gz +ADNI1478584,F,57.4,adni_storage/ADNI_nii_gz_bias_corrected/I1478584_037_S_6963.stripped.N4.nii.gz +sub-CC721648,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721648.stripped.N4.nii.gz +ADNI267802,F,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I267802_037_S_4028.stripped.N4.nii.gz +fcon1000Beijing_sub55856,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55856.stripped.N4.nii.gz +fcon1000NewYork_sub10582,M,47.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub10582.stripped.N4.nii.gz +ADNI87683,F,57.8,adni_storage/ADNI_nii_gz_bias_corrected/I87683_133_S_0913.stripped.N4.nii.gz +ADNI883190,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I883190_141_S_6042.stripped.N4.nii.gz +fcon1000Milwaukee_sub51182,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub51182.stripped.N4.nii.gz +sub-CC720188,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720188.stripped.N4.nii.gz +sub-CC420231,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420231.stripped.N4.nii.gz +ADNI382181,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I382181_018_S_5240.stripped.N4.nii.gz +DLBS0028501_session_1,F,88.36,dlbs_storage/DLBS_bias_corrected/0028501_session_1.stripped.N4.nii.gz +DLBS0028584_session_1,F,51.24,dlbs_storage/DLBS_bias_corrected/0028584_session_1.stripped.N4.nii.gz +ADNI336509,M,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I336509_135_S_4954.stripped.N4.nii.gz +sub-CC610039,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610039.stripped.N4.nii.gz +fcon1000Cambridge_sub80557,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub80557.stripped.N4.nii.gz +fcon1000Beijing_sub77440,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub77440.stripped.N4.nii.gz +DLBS0028532_session_1,F,34.11,dlbs_storage/DLBS_bias_corrected/0028532_session_1.stripped.N4.nii.gz +DLBS0028505_session_1,M,20.75,dlbs_storage/DLBS_bias_corrected/0028505_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub45604,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45604.stripped.N4.nii.gz +sub-CC610625,F,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610625.stripped.N4.nii.gz +ADNI10883387,M,60.2,adni_storage/ADNI_nii_gz_bias_corrected/I10883387_033_S_6976.stripped.N4.nii.gz +sub-CC420435,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420435.stripped.N4.nii.gz +fcon1000Milwaukee_sub84314,M,58.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub84314.stripped.N4.nii.gz +DLBS0028559_session_1,F,25.01,dlbs_storage/DLBS_bias_corrected/0028559_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub27123,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub27123.stripped.N4.nii.gz +fcon1000Beijing_sub32587,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub32587.stripped.N4.nii.gz +DLBS0028343_session_1,F,61.27,dlbs_storage/DLBS_bias_corrected/0028343_session_1.stripped.N4.nii.gz +sub-CC720516,F,84.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720516.stripped.N4.nii.gz +sub-CC510086,M,65.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510086.stripped.N4.nii.gz +fcon1000Cambridge_sub84504,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84504.stripped.N4.nii.gz +fcon1000Beijing_sub19642,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub19642.stripped.N4.nii.gz +ADNI369303,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I369303_130_S_4982.stripped.N4.nii.gz +fcon1000Cleveland_sub17946,F,29.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub17946.stripped.N4.nii.gz +sub-CC222555,M,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222555.stripped.N4.nii.gz +ADNI10972872,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10972872_033_S_10005.stripped.N4.nii.gz +sub-CC412004,M,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC412004.stripped.N4.nii.gz +DLBS0028517_session_1,M,23.14,dlbs_storage/DLBS_bias_corrected/0028517_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub80163,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80163.stripped.N4.nii.gz +ADNI346548,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I346548_137_S_0994.stripped.N4.nii.gz +sub-CC710664,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710664.stripped.N4.nii.gz +fcon1000Milwaukee_sub36386,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub36386.stripped.N4.nii.gz +fcon1000Cambridge_sub86637,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub86637.stripped.N4.nii.gz +sub-CC420075,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420075.stripped.N4.nii.gz +fcon1000Beijing_sub20246,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub20246.stripped.N4.nii.gz +fcon1000Beijing_sub85030,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub85030.stripped.N4.nii.gz +sub-CC320342,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320342.stripped.N4.nii.gz +ADNI970943,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I970943_153_S_6237.stripped.N4.nii.gz +sub-CC320759,F,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320759.stripped.N4.nii.gz +ADNI10939738,F,62.5,adni_storage/ADNI_nii_gz_bias_corrected/I10939738_301_S_10230.stripped.N4.nii.gz +sub-CC420091,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420091.stripped.N4.nii.gz +DLBS0028611_session_1,F,46.79,dlbs_storage/DLBS_bias_corrected/0028611_session_1.stripped.N4.nii.gz +sub-CC720180,M,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720180.stripped.N4.nii.gz +sub-CC610496,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610496.stripped.N4.nii.gz +sub-CC410119,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410119.stripped.N4.nii.gz +fcon1000Beijing_sub92544,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92544.stripped.N4.nii.gz +sub-CC610058,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610058.stripped.N4.nii.gz +fcon1000Bangor_sub73082,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub73082.stripped.N4.nii.gz +sub-CC220635,F,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220635.stripped.N4.nii.gz +sub-CC120987,F,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120987.stripped.N4.nii.gz +sub-CC210172,F,31.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210172.stripped.N4.nii.gz +fcon1000Milwaukee_sub56108,F,51.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub56108.stripped.N4.nii.gz +DLBS0028330_session_1,F,35.36,dlbs_storage/DLBS_bias_corrected/0028330_session_1.stripped.N4.nii.gz +ADNI1002815,F,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I1002815_023_S_6374.stripped.N4.nii.gz +sub-CC420137,M,56.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420137.stripped.N4.nii.gz +DLBS0028504_session_1,F,73.07,dlbs_storage/DLBS_bias_corrected/0028504_session_1.stripped.N4.nii.gz +sub-CC620114,M,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620114.stripped.N4.nii.gz +DLBS0028591_session_1,M,86.25,dlbs_storage/DLBS_bias_corrected/0028591_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub68050,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub68050.stripped.N4.nii.gz +DLBS0028395_session_1,M,83.87,dlbs_storage/DLBS_bias_corrected/0028395_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub13959,M,31.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub13959.stripped.N4.nii.gz +fcon1000Cambridge_sub34741,F,27.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub34741.stripped.N4.nii.gz +DLBS0028616_session_1,F,61.54,dlbs_storage/DLBS_bias_corrected/0028616_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub46541,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46541.stripped.N4.nii.gz +sub-CC120049,M,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120049.stripped.N4.nii.gz +sub-CC610046,M,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610046.stripped.N4.nii.gz +DLBS0028418_session_1,M,70.49,dlbs_storage/DLBS_bias_corrected/0028418_session_1.stripped.N4.nii.gz +sub-CC721618,F,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721618.stripped.N4.nii.gz +fcon1000Beijing_sub92490,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub92490.stripped.N4.nii.gz +fcon1000Leiden_sub08518,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub08518.stripped.N4.nii.gz +DLBS0028416_session_1,M,31.58,dlbs_storage/DLBS_bias_corrected/0028416_session_1.stripped.N4.nii.gz +ADNI10883427,F,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I10883427_016_S_10138.stripped.N4.nii.gz +sub-CC121795,F,25.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121795.stripped.N4.nii.gz +DLBS0028431_session_1,M,47.63,dlbs_storage/DLBS_bias_corrected/0028431_session_1.stripped.N4.nii.gz +ADNI1400867,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1400867_019_S_6635.stripped.N4.nii.gz +DLBS0028556_session_1,F,36.97,dlbs_storage/DLBS_bias_corrected/0028556_session_1.stripped.N4.nii.gz +ADNI67598,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I67598_033_S_0733.stripped.N4.nii.gz +sub-CC321137,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321137.stripped.N4.nii.gz +fcon1000Cambridge_sub53107,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53107.stripped.N4.nii.gz +fcon1000Beijing_sub98353,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub98353.stripped.N4.nii.gz +sub-CC710131,M,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710131.stripped.N4.nii.gz +DLBS0028564_session_1,F,40.21,dlbs_storage/DLBS_bias_corrected/0028564_session_1.stripped.N4.nii.gz +ADNI86564,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I86564_016_S_1121.stripped.N4.nii.gz +DLBS0028461_session_1,F,53.95,dlbs_storage/DLBS_bias_corrected/0028461_session_1.stripped.N4.nii.gz +ADNI70746,M,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I70746_016_S_0769.stripped.N4.nii.gz +sub-CC320059,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320059.stripped.N4.nii.gz +ADNI1433167,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1433167_024_S_6033.stripped.N4.nii.gz +ADNI487386,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I487386_128_S_4599.stripped.N4.nii.gz +DLBS0028511_session_1,F,23.55,dlbs_storage/DLBS_bias_corrected/0028511_session_1.stripped.N4.nii.gz +sub-CC610575,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610575.stripped.N4.nii.gz +sub-CC610227,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610227.stripped.N4.nii.gz +ADNI1031289,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1031289_070_S_6542.stripped.N4.nii.gz +fcon1000NewYork_sub63915,M,44.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub63915.stripped.N4.nii.gz +sub-CC220828,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220828.stripped.N4.nii.gz +DLBS0028551_session_1,M,24.66,dlbs_storage/DLBS_bias_corrected/0028551_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub08947,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08947.stripped.N4.nii.gz +sub-CC610050,F,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610050.stripped.N4.nii.gz +DLBS0028433_session_1,F,80.5,dlbs_storage/DLBS_bias_corrected/0028433_session_1.stripped.N4.nii.gz +ADNI1282405,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I1282405_019_S_6635.stripped.N4.nii.gz +sub-CC120816,M,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120816.stripped.N4.nii.gz +sub-CC120276,F,23.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120276.stripped.N4.nii.gz +ADNI65945,M,62.7,adni_storage/ADNI_nii_gz_bias_corrected/I65945_067_S_1185.stripped.N4.nii.gz +fcon1000Beijing_sub55301,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55301.stripped.N4.nii.gz +ADNI839474,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I839474_141_S_6008.stripped.N4.nii.gz +fcon1000Cambridge_sub73477,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub73477.stripped.N4.nii.gz +fcon1000Beijing_sub12220,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub12220.stripped.N4.nii.gz +sub-CC210422,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210422.stripped.N4.nii.gz +ADNI10435128,F,55.5,adni_storage/ADNI_nii_gz_bias_corrected/I10435128_035_S_10093.stripped.N4.nii.gz +fcon1000Cambridge_sub26348,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub26348.stripped.N4.nii.gz diff --git a/triamese.py b/triamese.py new file mode 100644 index 0000000..5be8c7b --- /dev/null +++ b/triamese.py @@ -0,0 +1,287 @@ +import torch +import torch.nn as nn +import nibabel as nib +import numpy as np +import matplotlib.pyplot as plt +from torch.utils.data import Dataset, DataLoader +import os +import pandas as pd +from sklearn.model_selection import train_test_split +from tqdm import tqdm +from scipy.ndimage import zoom + +def resample_nifti(img_data, target_slices = [64, 64, 32]): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = [img_data.shape[0], img_data.shape[1], img_data.shape[2]] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = [a / b for a, b in zip(target_slices, current_slices)] + + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor[0], zoom_factor[1], zoom_factor[2]), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + + +# Load metadata +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) + +# Append full file paths for .nii.gz images +data_dir = "roi" + +def get_image_path(row): + image_title = f"I{row['ImageID']}_{row['SubjectID']}.stripped.N4_cropped.nii.gz" + return os.path.join(data_dir, image_title) + +df['filepath'] = df.apply(get_image_path, axis=1) + +# Drop rows where the filepath doesn't exist +df = df[df['filepath'].apply(os.path.exists)] + +print(df.head()) # Verify file paths and Age column + + +def load_and_preprocess(filepath, patch_size=(7, 7)): + """ + Load the .nii.gz file, resample it, extract three views, and divide them into fixed-size patches. + The number of patches is dynamically calculated based on the patch size and image dimensions. + """ + import nibabel as nib + import torch + + # Load the .nii.gz image + image = nib.load(filepath).get_fdata() + image = resample_nifti(image, [91, 109, 91]) + + # Extract the three views + axial = image[:, :, image.shape[2] // 2] # Axial view + coronal = image[:, image.shape[1] // 2, :] # Coronal view + sagittal = image[image.shape[0] // 2, :, :] # Sagittal view + + def extract_patches(view, patch_size): + """ + Extract fixed-size patches from a 2D view and pad to handle dimensions not divisible by patch size. + Dynamically calculate the number of patches. + """ + h, w = view.shape + ph, pw = patch_size + + # Calculate the number of patches in height and width + num_patches_h = (h + ph - 1) // ph # Ceiling division for height + num_patches_w = (w + pw - 1) // pw # Ceiling division for width + num_patches = num_patches_h * num_patches_w + + # Pad the image to ensure dimensions are divisible by the patch size + pad_h = (num_patches_h * ph - h) + pad_w = (num_patches_w * pw - w) + view = torch.nn.functional.pad(torch.tensor(view, dtype=torch.float32), (0, pad_w, 0, pad_h), value=0) + + # Extract patches + patches = [] + for i in range(0, view.shape[0], ph): + for j in range(0, view.shape[1], pw): + patch = view[i:i + ph, j:j + pw] + patches.append(patch.flatten()) + + # Convert to tensor + patches = torch.stack(patches) + return patches, num_patches + + # Extract patches and calculate dynamic num_patches + axial_patches, num_patches_axial = extract_patches(axial, patch_size) + coronal_patches, num_patches_coronal = extract_patches(coronal, patch_size) + sagittal_patches, num_patches_sagittal = extract_patches(sagittal, patch_size) + + # Verify consistency + assert num_patches_axial == num_patches_coronal == num_patches_sagittal, \ + "Mismatch in the number of patches across views." + + return axial_patches, coronal_patches, sagittal_patches + + +def calculate_num_patches(image_size, patch_size): + """ + Calculate the total number of patches for a given image size and patch size. + + Args: + image_size (tuple): Dimensions of the image (height, width). + patch_size (tuple): Dimensions of each patch (height, width). + + Returns: + int: Total number of patches. + """ + h, w = image_size + ph, pw = patch_size + + # Calculate the number of patches along each dimension + num_patches_h = (h + ph - 1) // ph # Ceiling division for height + num_patches_w = (w + pw - 1) // pw # Ceiling division for width + + # Total patches + return num_patches_h * num_patches_w + +num_patches = calculate_num_patches((91, 109), (7, 7)) + + + +class TransformerEncoder(nn.Module): + def __init__(self, embed_dim, num_heads, mlp_dim, dropout=0.1): + super().__init__() + self.attn = nn.MultiheadAttention(embed_dim, num_heads) + self.ffn = nn.Sequential( + nn.Linear(embed_dim, mlp_dim), + nn.GELU(), + nn.Linear(mlp_dim, embed_dim) + ) + self.norm1 = nn.LayerNorm(embed_dim) + self.norm2 = nn.LayerNorm(embed_dim) + self.dropout = nn.Dropout(dropout) + + def forward(self, x): + x = x + self.dropout(self.attn(x, x, x)[0]) + x = self.norm1(x) + x = x + self.dropout(self.ffn(x)) + x = self.norm2(x) + return x + +class TriameseViT(nn.Module): + def __init__(self, num_patches, embed_dim=768, num_heads=12, mlp_dim=512, depth=10): + super().__init__() + self.patch_embedding = nn.Linear(256, embed_dim) # Flattened patch size 16x16 -> 256 + self.pos_embedding = nn.Parameter(torch.randn(1, num_patches, embed_dim)) + + # Three transformer encoders + self.transformers = nn.ModuleList([ + nn.Sequential(*[TransformerEncoder(embed_dim, num_heads, mlp_dim) for _ in range(depth)]) + for _ in range(3) + ]) + + # Three MLP heads with hidden layer size 3072 + self.mlp_heads = nn.ModuleList([ + nn.Sequential( + nn.LayerNorm(embed_dim), + nn.Linear(embed_dim, 3072), + nn.ReLU(), + nn.Linear(3072, 1) + ) + for _ in range(3) + ]) + + # Final FNN layers: 1024 -> 512 -> 256 -> 128 -> 3 -> 1 + self.triamese_fnn = nn.Sequential( + nn.Linear(3, 1024), + nn.ReLU(), + nn.Linear(1024, 512), + nn.ReLU(), + nn.Linear(512, 256), + nn.ReLU(), + nn.Linear(256, 128), + nn.ReLU(), + nn.Linear(128, 3), + nn.ReLU(), + nn.Linear(3, 1) + ) + + # Initialize weights + self._initialize_weights() + + def _initialize_weights(self): + for m in self.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.LayerNorm): + nn.init.constant_(m.bias, 0) + nn.init.constant_(m.weight, 1.0) + + def forward(self, axial, coronal, sagittal): + # Patch embedding + positional encoding + views = [axial, coronal, sagittal] + outputs = [] + + for i, view in enumerate(views): + x = self.patch_embedding(view) + self.pos_embedding + x = self.transformers[i](x) + x = x.mean(dim=1) # Global average pooling + outputs.append(self.mlp_heads[i](x)) + + combined = torch.cat(outputs, dim=1) + final_output = self.triamese_fnn(combined) + return final_output + + +# Dataset Class +class MRIDataset(Dataset): + def __init__(self, df): + self.filepaths = df['filepath'].values + self.ages = df['Age'].values + + def __len__(self): + return len(self.filepaths) + + def __getitem__(self, idx): + filepath = self.filepaths[idx] + axial, coronal, sagittal = load_and_preprocess(filepath) + label = torch.tensor(self.ages[idx], dtype=torch.float32) + return axial, coronal, sagittal, label + +# Split data into train and validation +train_df, val_df = train_test_split(df, test_size=0.2, random_state=42, shuffle=True) + +# Create datasets +train_dataset = MRIDataset(train_df) +val_dataset = MRIDataset(val_df) + +# DataLoaders +train_loader = DataLoader(train_dataset, batch_size=4, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=4, shuffle=False) + +print(f"Train size: {len(train_dataset)}, Validation size: {len(val_dataset)}") + + +model = TriameseViT(num_patches=num_patches) +optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=1e-6, betas=(0.9, 0.999)) +criterion = nn.MSELoss() +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +model.to(device) + +# Training and Validation Loop +for epoch in range(20): + # Training Phase + model.train() + train_loss = 0 + train_loader_tqdm = tqdm(train_loader, desc=f"Epoch {epoch+1} [Training]", unit="batch") + + for axial, coronal, sagittal, labels in train_loader_tqdm: + axial, coronal, sagittal, labels = axial.to(device), coronal.to(device), sagittal.to(device), labels.to(device) + + optimizer.zero_grad() + outputs = model(axial, coronal, sagittal) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + train_loss += loss.item() + + # Update tqdm with current loss + train_loader_tqdm.set_postfix(loss=loss.item()) + + # Validation Phase + model.eval() + val_loss = 0 + val_loader_tqdm = tqdm(val_loader, desc=f"Epoch {epoch+1} [Validation]", unit="batch") + + with torch.no_grad(): + for axial, coronal, sagittal, labels in val_loader_tqdm: + axial, coronal, sagittal, labels = axial.to(device), coronal.to(device), sagittal.to(device), labels.to(device) + outputs = model(axial, coronal, sagittal) + loss = criterion(outputs, labels) + val_loss += loss.item() + + # Update tqdm with current loss + val_loader_tqdm.set_postfix(loss=loss.item()) + + print(f"Epoch {epoch+1}, Train Loss: {train_loss / len(train_loader):.4f}, Val Loss: {val_loss / len(val_loader):.4f}") \ No newline at end of file diff --git a/val_dataset.csv b/val_dataset.csv new file mode 100644 index 0000000..e89aeee --- /dev/null +++ b/val_dataset.csv @@ -0,0 +1,448 @@ +ImageID,Sex,Age,filepath +fcon1000Beijing_sub10277,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub10277.stripped.N4.nii.gz +DLBS0028329_session_1,M,30.74,dlbs_storage/DLBS_bias_corrected/0028329_session_1.stripped.N4.nii.gz +ADNI23822,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I23822_016_S_0769.stripped.N4.nii.gz +ADNI1184047,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1184047_022_S_6013.stripped.N4.nii.gz +sub-CC220567,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220567.stripped.N4.nii.gz +sub-CC120309,M,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120309.stripped.N4.nii.gz +fcon1000Cambridge_sub43358,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub43358.stripped.N4.nii.gz +fcon1000Cleveland_sub46739,F,60.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub46739.stripped.N4.nii.gz +sub-CC212153,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC212153.stripped.N4.nii.gz +ADNI1017005,M,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017005_116_S_6428.stripped.N4.nii.gz +fcon1000Baltimore_sub17017,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub17017.stripped.N4.nii.gz +DLBS0028449_session_1,F,28.96,dlbs_storage/DLBS_bias_corrected/0028449_session_1.stripped.N4.nii.gz +ADNI1536458,F,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I1536458_016_S_7039.stripped.N4.nii.gz +sub-CC320297,M,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320297.stripped.N4.nii.gz +ADNI1156695,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I1156695_023_S_6723.stripped.N4.nii.gz +ADNI415207,F,64.0,adni_storage/ADNI_nii_gz_bias_corrected/I415207_019_S_5019.stripped.N4.nii.gz +fcon1000Beijing_sub89238,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89238.stripped.N4.nii.gz +ADNI10461419,F,58.2,adni_storage/ADNI_nii_gz_bias_corrected/I10461419_011_S_10044.stripped.N4.nii.gz +sub-CC721292,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721292.stripped.N4.nii.gz +ADNI495305,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I495305_128_S_4607.stripped.N4.nii.gz +sub-CC220323,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220323.stripped.N4.nii.gz +ADNI346547,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I346547_137_S_0994.stripped.N4.nii.gz +fcon1000Cambridge_sub81289,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81289.stripped.N4.nii.gz +ADNI10460278,F,61.6,adni_storage/ADNI_nii_gz_bias_corrected/I10460278_019_S_10106.stripped.N4.nii.gz +fcon1000AnnArbor_sub45660,M,16.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub45660.stripped.N4.nii.gz +sub-CC721114,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721114.stripped.N4.nii.gz +fcon1000Beijing_sub95755,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub95755.stripped.N4.nii.gz +sub-CC221980,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221980.stripped.N4.nii.gz +ADNI461110,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I461110_137_S_0994.stripped.N4.nii.gz +sub-CC620259,F,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620259.stripped.N4.nii.gz +ADNI1070046,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1070046_006_S_6610.stripped.N4.nii.gz +ADNI37605,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37605_051_S_1072.stripped.N4.nii.gz +fcon1000Cleveland_sub82518,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub82518.stripped.N4.nii.gz +ADNI1373547,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I1373547_041_S_6801.stripped.N4.nii.gz +ADNI1181047,M,60.0,adni_storage/ADNI_nii_gz_bias_corrected/I1181047_116_S_6428.stripped.N4.nii.gz +fcon1000Leiden_sub97690,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub97690.stripped.N4.nii.gz +fcon1000Beijing_sub58332,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub58332.stripped.N4.nii.gz +sub-CC120462,F,18.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120462.stripped.N4.nii.gz +fcon1000Milwaukee_sub93170,F,65.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub93170.stripped.N4.nii.gz +fcon1000Berlin_sub47791,M,31.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub47791.stripped.N4.nii.gz +DLBS0028387_session_1,F,54.68,dlbs_storage/DLBS_bias_corrected/0028387_session_1.stripped.N4.nii.gz +sub-CC720400,F,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720400.stripped.N4.nii.gz +DLBS0028411_session_1,F,83.09,dlbs_storage/DLBS_bias_corrected/0028411_session_1.stripped.N4.nii.gz +ADNI77627,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I77627_020_S_1288.stripped.N4.nii.gz +ADNI487400,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I487400_128_S_4599.stripped.N4.nii.gz +fcon1000NewYork_sub47633,F,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub47633.stripped.N4.nii.gz +sub-CC410251,F,53.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410251.stripped.N4.nii.gz +sub-CC410129,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410129.stripped.N4.nii.gz +sub-CC720407,M,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720407.stripped.N4.nii.gz +DLBS0028603_session_1,M,35.96,dlbs_storage/DLBS_bias_corrected/0028603_session_1.stripped.N4.nii.gz +sub-CC410289,F,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410289.stripped.N4.nii.gz +DLBS0028519_session_1,M,64.79,dlbs_storage/DLBS_bias_corrected/0028519_session_1.stripped.N4.nii.gz +ADNI1331165,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I1331165_116_S_6550.stripped.N4.nii.gz +fcon1000AnnArbor_sub59573,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub59573.stripped.N4.nii.gz +ADNI1028373,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I1028373_109_S_6406.stripped.N4.nii.gz +sub-CC320687,F,41.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320687.stripped.N4.nii.gz +fcon1000Cambridge_sub90681,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub90681.stripped.N4.nii.gz +ADNI369298,F,58.8,adni_storage/ADNI_nii_gz_bias_corrected/I369298_130_S_4982.stripped.N4.nii.gz +fcon1000NewYork_sub33062,F,34.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub33062.stripped.N4.nii.gz +fcon1000AnnArbor_sub47191,M,27.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub47191.stripped.N4.nii.gz +ADNI47972,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I47972_067_S_1253.stripped.N4.nii.gz +ADNI346266,F,61.0,adni_storage/ADNI_nii_gz_bias_corrected/I346266_036_S_4894.stripped.N4.nii.gz +sub-CC420060,M,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420060.stripped.N4.nii.gz +fcon1000Beijing_sub00440,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub00440.stripped.N4.nii.gz +sub-CC520002,F,64.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520002.stripped.N4.nii.gz +sub-CC710858,M,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710858.stripped.N4.nii.gz +ADNI1002374,M,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1002374_014_S_6366.stripped.N4.nii.gz +fcon1000Atlanta_sub86323,F,31.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub86323.stripped.N4.nii.gz +fcon1000Baltimore_sub30072,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub30072.stripped.N4.nii.gz +fcon1000Beijing_sub01018,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub01018.stripped.N4.nii.gz +sub-CC120470,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120470.stripped.N4.nii.gz +fcon1000Cleveland_sub75398,F,43.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub75398.stripped.N4.nii.gz +sub-CC321107,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321107.stripped.N4.nii.gz +sub-CC520253,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520253.stripped.N4.nii.gz +DLBS0028509_session_1,F,51.39,dlbs_storage/DLBS_bias_corrected/0028509_session_1.stripped.N4.nii.gz +ADNI1070047,M,61.4,adni_storage/ADNI_nii_gz_bias_corrected/I1070047_006_S_6610.stripped.N4.nii.gz +ADNI10654619,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I10654619_100_S_10035.stripped.N4.nii.gz +fcon1000Beijing_sub37602,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub37602.stripped.N4.nii.gz +DLBS0028409_session_1,M,70.68,dlbs_storage/DLBS_bias_corrected/0028409_session_1.stripped.N4.nii.gz +ADNI346866,F,56.9,adni_storage/ADNI_nii_gz_bias_corrected/I346866_128_S_4607.stripped.N4.nii.gz +fcon1000AnnArbor_sub39923,M,70.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub39923.stripped.N4.nii.gz +sub-CC420324,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420324.stripped.N4.nii.gz +fcon1000Cleveland_sub92232,F,45.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub92232.stripped.N4.nii.gz +fcon1000Baltimore_sub90658,F,32.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub90658.stripped.N4.nii.gz +DLBS0028634_session_1,F,38.33,dlbs_storage/DLBS_bias_corrected/0028634_session_1.stripped.N4.nii.gz +ADNI1536326,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I1536326_052_S_7037.stripped.N4.nii.gz +sub-CC510393,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510393.stripped.N4.nii.gz +DLBS0028639_session_1,F,74.96,dlbs_storage/DLBS_bias_corrected/0028639_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub62843,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62843.stripped.N4.nii.gz +fcon1000Leiden_sub01553,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub01553.stripped.N4.nii.gz +fcon1000Leiden_sub72247,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub72247.stripped.N4.nii.gz +DLBS0028429_session_1,F,42.63,dlbs_storage/DLBS_bias_corrected/0028429_session_1.stripped.N4.nii.gz +fcon1000Atlanta_sub72096,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub72096.stripped.N4.nii.gz +fcon1000Cambridge_sub89894,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub89894.stripped.N4.nii.gz +fcon1000Cambridge_sub69287,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub69287.stripped.N4.nii.gz +fcon1000Beijing_sub88947,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub88947.stripped.N4.nii.gz +sub-CC320429,M,48.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320429.stripped.N4.nii.gz +fcon1000Cambridge_sub59434,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub59434.stripped.N4.nii.gz +fcon1000Beijing_sub55541,M,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55541.stripped.N4.nii.gz +fcon1000Cambridge_sub42146,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub42146.stripped.N4.nii.gz +sub-CC320107,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320107.stripped.N4.nii.gz +ADNI10666922,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I10666922_100_S_10091.stripped.N4.nii.gz +DLBS0028588_session_1,M,48.53,dlbs_storage/DLBS_bias_corrected/0028588_session_1.stripped.N4.nii.gz +sub-CC221324,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221324.stripped.N4.nii.gz +DLBS0028361_session_1,M,55.56,dlbs_storage/DLBS_bias_corrected/0028361_session_1.stripped.N4.nii.gz +ADNI10976428,F,64.2,adni_storage/ADNI_nii_gz_bias_corrected/I10976428_052_S_10275.stripped.N4.nii.gz +sub-CC310214,F,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310214.stripped.N4.nii.gz +DLBS0028360_session_1,F,54.03,dlbs_storage/DLBS_bias_corrected/0028360_session_1.stripped.N4.nii.gz +sub-CC210519,F,29.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210519.stripped.N4.nii.gz +fcon1000Cambridge_sub87846,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub87846.stripped.N4.nii.gz +ADNI1514753,F,50.5,adni_storage/ADNI_nii_gz_bias_corrected/I1514753_037_S_7011.stripped.N4.nii.gz +ADNI10889397,M,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I10889397_019_S_10152.stripped.N4.nii.gz +DLBS0028495_session_1,F,40.56,dlbs_storage/DLBS_bias_corrected/0028495_session_1.stripped.N4.nii.gz +sub-CC620284,F,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620284.stripped.N4.nii.gz +sub-CC210617,M,34.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210617.stripped.N4.nii.gz +sub-CC420462,F,55.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420462.stripped.N4.nii.gz +ADNI1151022,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I1151022_016_S_6708.stripped.N4.nii.gz +sub-CC420322,M,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420322.stripped.N4.nii.gz +ADNI36696,F,56.4,adni_storage/ADNI_nii_gz_bias_corrected/I36696_016_S_1121.stripped.N4.nii.gz +fcon1000AnnArbor_sub98007,F,66.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub98007.stripped.N4.nii.gz +fcon1000Beijing_sub04191,M,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub04191.stripped.N4.nii.gz +ADNI388757,M,64.3,adni_storage/ADNI_nii_gz_bias_corrected/I388757_116_S_4195.stripped.N4.nii.gz +sub-CC610576,F,72.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610576.stripped.N4.nii.gz +sub-CC720358,F,83.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720358.stripped.N4.nii.gz +sub-CC420493,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420493.stripped.N4.nii.gz +fcon1000Cambridge_sub81562,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81562.stripped.N4.nii.gz +DLBS0028408_session_1,F,20.7,dlbs_storage/DLBS_bias_corrected/0028408_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub39335,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub39335.stripped.N4.nii.gz +ADNI907712,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I907712_014_S_6076.stripped.N4.nii.gz +fcon1000Beijing_sub56703,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub56703.stripped.N4.nii.gz +ADNI313318,F,56.5,adni_storage/ADNI_nii_gz_bias_corrected/I313318_128_S_4607.stripped.N4.nii.gz +sub-CC721888,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721888.stripped.N4.nii.gz +ADNI324988,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I324988_023_S_4448.stripped.N4.nii.gz +fcon1000Beijing_sub83624,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub83624.stripped.N4.nii.gz +fcon1000Beijing_sub19974,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub19974.stripped.N4.nii.gz +ADNI228879,F,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I228879_031_S_4024.stripped.N4.nii.gz +ADNI376810,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I376810_067_S_5205.stripped.N4.nii.gz +fcon1000Bangor_sub63767,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub63767.stripped.N4.nii.gz +sub-CC320448,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320448.stripped.N4.nii.gz +ADNI341795,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I341795_130_S_4982.stripped.N4.nii.gz +ADNI140028,M,62.1,adni_storage/ADNI_nii_gz_bias_corrected/I140028_020_S_1288.stripped.N4.nii.gz +sub-CC120795,M,24.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120795.stripped.N4.nii.gz +ADNI382180,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I382180_018_S_5240.stripped.N4.nii.gz +fcon1000Beijing_sub69518,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub69518.stripped.N4.nii.gz +sub-CC420720,F,50.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420720.stripped.N4.nii.gz +ADNI1005735,M,55.3,adni_storage/ADNI_nii_gz_bias_corrected/I1005735_003_S_6264.stripped.N4.nii.gz +fcon1000Cambridge_sub02953,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub02953.stripped.N4.nii.gz +sub-CC610631,F,77.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610631.stripped.N4.nii.gz +fcon1000Cambridge_sub17584,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub17584.stripped.N4.nii.gz +sub-CC710591,F,85.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710591.stripped.N4.nii.gz +fcon1000AnnArbor_sub33437,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub33437.stripped.N4.nii.gz +sub-CC711035,F,88.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711035.stripped.N4.nii.gz +fcon1000Milwaukee_sub50771,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub50771.stripped.N4.nii.gz +fcon1000Cleveland_sub64706,F,57.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub64706.stripped.N4.nii.gz +ADNI1062510,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I1062510_019_S_6585.stripped.N4.nii.gz +sub-CC320218,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320218.stripped.N4.nii.gz +sub-CC121144,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121144.stripped.N4.nii.gz +sub-CC320269,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320269.stripped.N4.nii.gz +fcon1000Beijing_sub50972,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub50972.stripped.N4.nii.gz +DLBS0028593_session_1,F,62.06,dlbs_storage/DLBS_bias_corrected/0028593_session_1.stripped.N4.nii.gz +ADNI1532649,F,59.9,adni_storage/ADNI_nii_gz_bias_corrected/I1532649_067_S_7029.stripped.N4.nii.gz +fcon1000NewYork_sub08595,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub08595.stripped.N4.nii.gz +fcon1000Newark_sub71042,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Newark_sub71042.stripped.N4.nii.gz +ADNI37256,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I37256_067_S_1185.stripped.N4.nii.gz +fcon1000Beijing_sub22890,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22890.stripped.N4.nii.gz +fcon1000Beijing_sub16091,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub16091.stripped.N4.nii.gz +fcon1000NewYork_sub51309,F,27.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub51309.stripped.N4.nii.gz +fcon1000NewYork_sub09539,F,21.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub09539.stripped.N4.nii.gz +sub-CC321053,F,40.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321053.stripped.N4.nii.gz +DLBS0028481_session_1,F,41.87,dlbs_storage/DLBS_bias_corrected/0028481_session_1.stripped.N4.nii.gz +DLBS0028597_session_1,M,52.52,dlbs_storage/DLBS_bias_corrected/0028597_session_1.stripped.N4.nii.gz +fcon1000Bangor_sub61908,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub61908.stripped.N4.nii.gz +sub-CC410325,F,54.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410325.stripped.N4.nii.gz +DLBS0028347_session_1,F,85.66,dlbs_storage/DLBS_bias_corrected/0028347_session_1.stripped.N4.nii.gz +ADNI10245972,M,59.2,adni_storage/ADNI_nii_gz_bias_corrected/I10245972_033_S_6976.stripped.N4.nii.gz +sub-CC221033,F,28.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221033.stripped.N4.nii.gz +ADNI1221674,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1221674_013_S_6780.stripped.N4.nii.gz +DLBS0028635_session_1,F,23.5,dlbs_storage/DLBS_bias_corrected/0028635_session_1.stripped.N4.nii.gz +ADNI345563,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345563_019_S_5019.stripped.N4.nii.gz +ADNI98972,M,63.9,adni_storage/ADNI_nii_gz_bias_corrected/I98972_016_S_0769.stripped.N4.nii.gz +ADNI254248,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I254248_116_S_4195.stripped.N4.nii.gz +ADNI1154285,F,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I1154285_011_S_6714.stripped.N4.nii.gz +fcon1000Beijing_sub30616,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub30616.stripped.N4.nii.gz +DLBS0028632_session_1,F,59.96,dlbs_storage/DLBS_bias_corrected/0028632_session_1.stripped.N4.nii.gz +ADNI10461435,F,56.1,adni_storage/ADNI_nii_gz_bias_corrected/I10461435_022_S_10066.stripped.N4.nii.gz +DLBS0028377_session_1,F,64.37,dlbs_storage/DLBS_bias_corrected/0028377_session_1.stripped.N4.nii.gz +ADNI1433667,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I1433667_067_S_6912.stripped.N4.nii.gz +ADNI1669252,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I1669252_035_S_7121.stripped.N4.nii.gz +fcon1000Baltimore_sub52358,F,40.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub52358.stripped.N4.nii.gz +sub-CC610071,F,69.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610071.stripped.N4.nii.gz +sub-CC722536,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722536.stripped.N4.nii.gz +fcon1000NewYork_sub14299,F,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub14299.stripped.N4.nii.gz +fcon1000Atlanta_sub81596,M,53.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub81596.stripped.N4.nii.gz +fcon1000Beijing_sub28965,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28965.stripped.N4.nii.gz +sub-CC710486,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC710486.stripped.N4.nii.gz +fcon1000Cambridge_sub72068,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub72068.stripped.N4.nii.gz +ADNI1143230,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1143230_023_S_6702.stripped.N4.nii.gz +DLBS0028573_session_1,M,44.29,dlbs_storage/DLBS_bias_corrected/0028573_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub43409,M,71.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub43409.stripped.N4.nii.gz +fcon1000Cleveland_sub97844,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub97844.stripped.N4.nii.gz +sub-CC620572,F,78.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620572.stripped.N4.nii.gz +ADNI10954719,F,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I10954719_052_S_10168.stripped.N4.nii.gz +ADNI10989649,M,62.2,adni_storage/ADNI_nii_gz_bias_corrected/I10989649_019_S_10263.stripped.N4.nii.gz +ADNI308620,M,57.0,adni_storage/ADNI_nii_gz_bias_corrected/I308620_014_S_4039.stripped.N4.nii.gz +sub-CC721704,F,82.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721704.stripped.N4.nii.gz +sub-CC510568,M,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510568.stripped.N4.nii.gz +fcon1000Beijing_sub94536,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub94536.stripped.N4.nii.gz +ADNI10392424,F,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I10392424_035_S_7043.stripped.N4.nii.gz +fcon1000Leiden_sub64642,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub64642.stripped.N4.nii.gz +fcon1000AnnArbor_sub07921,F,19.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub07921.stripped.N4.nii.gz +DLBS0028557_session_1,F,75.89,dlbs_storage/DLBS_bias_corrected/0028557_session_1.stripped.N4.nii.gz +DLBS0028443_session_1,M,36.18,dlbs_storage/DLBS_bias_corrected/0028443_session_1.stripped.N4.nii.gz +sub-CC721418,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721418.stripped.N4.nii.gz +sub-CC221740,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221740.stripped.N4.nii.gz +fcon1000Bangor_sub14388,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub14388.stripped.N4.nii.gz +ADNI73491,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I73491_067_S_1253.stripped.N4.nii.gz +sub-CC120218,F,27.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120218.stripped.N4.nii.gz +fcon1000Beijing_sub28792,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub28792.stripped.N4.nii.gz +fcon1000Beijing_sub17159,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub17159.stripped.N4.nii.gz +ADNI1261605,F,63.3,adni_storage/ADNI_nii_gz_bias_corrected/I1261605_016_S_6802.stripped.N4.nii.gz +fcon1000Milwaukee_sub99479,F,65.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub99479.stripped.N4.nii.gz +sub-CC320089,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320089.stripped.N4.nii.gz +fcon1000AnnArbor_sub53959,M,20.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub53959.stripped.N4.nii.gz +fcon1000Cambridge_sub25099,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub25099.stripped.N4.nii.gz +fcon1000Cleveland_sub65858,F,53.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub65858.stripped.N4.nii.gz +fcon1000Cambridge_sub10268,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub10268.stripped.N4.nii.gz +fcon1000Beijing_sub22661,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub22661.stripped.N4.nii.gz +sub-CC620413,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620413.stripped.N4.nii.gz +ADNI1634180,F,58.0,adni_storage/ADNI_nii_gz_bias_corrected/I1634180_013_S_7103.stripped.N4.nii.gz +ADNI44673,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I44673_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub48563,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub48563.stripped.N4.nii.gz +sub-CC410387,M,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC410387.stripped.N4.nii.gz +fcon1000Beijing_sub89941,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub89941.stripped.N4.nii.gz +DLBS0028630_session_1,M,38.37,dlbs_storage/DLBS_bias_corrected/0028630_session_1.stripped.N4.nii.gz +sub-CC620821,M,70.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620821.stripped.N4.nii.gz +ADNI10914005,F,59.1,adni_storage/ADNI_nii_gz_bias_corrected/I10914005_052_S_10185.stripped.N4.nii.gz +ADNI1494601,F,58.7,adni_storage/ADNI_nii_gz_bias_corrected/I1494601_037_S_6995.stripped.N4.nii.gz +fcon1000Cambridge_sub53296,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub53296.stripped.N4.nii.gz +ADNI399834,F,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I399834_137_S_0994.stripped.N4.nii.gz +sub-CC420402,M,49.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420402.stripped.N4.nii.gz +ADNI73381,F,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I73381_051_S_1072.stripped.N4.nii.gz +fcon1000NewYork_sub10011,F,40.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub10011.stripped.N4.nii.gz +fcon1000Atlanta_sub60499,M,29.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub60499.stripped.N4.nii.gz +ADNI1584200,F,62.8,adni_storage/ADNI_nii_gz_bias_corrected/I1584200_035_S_7076.stripped.N4.nii.gz +sub-CC720646,M,81.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720646.stripped.N4.nii.gz +sub-CC221775,F,32.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221775.stripped.N4.nii.gz +ADNI31766,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I31766_023_S_1104.stripped.N4.nii.gz +ADNI291512,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I291512_116_S_4195.stripped.N4.nii.gz +fcon1000Cambridge_sub11388,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub11388.stripped.N4.nii.gz +DLBS0028437_session_1,F,64.01,dlbs_storage/DLBS_bias_corrected/0028437_session_1.stripped.N4.nii.gz +DLBS0028533_session_1,F,46.77,dlbs_storage/DLBS_bias_corrected/0028533_session_1.stripped.N4.nii.gz +ADNI974673,M,56.2,adni_storage/ADNI_nii_gz_bias_corrected/I974673_023_S_6270.stripped.N4.nii.gz +fcon1000Cambridge_sub15258,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub15258.stripped.N4.nii.gz +ADNI367181,M,61.8,adni_storage/ADNI_nii_gz_bias_corrected/I367181_135_S_4954.stripped.N4.nii.gz +ADNI879215,M,56.0,adni_storage/ADNI_nii_gz_bias_corrected/I879215_114_S_6039.stripped.N4.nii.gz +fcon1000NewYork_sub04856,M,9.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub04856.stripped.N4.nii.gz +ADNI1604933,F,58.9,adni_storage/ADNI_nii_gz_bias_corrected/I1604933_067_S_7094.stripped.N4.nii.gz +fcon1000Cambridge_sub62732,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub62732.stripped.N4.nii.gz +sub-CC222652,M,30.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222652.stripped.N4.nii.gz +sub-CC620405,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620405.stripped.N4.nii.gz +sub-CC520197,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520197.stripped.N4.nii.gz +fcon1000Cambridge_sub66351,F,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub66351.stripped.N4.nii.gz +fcon1000Beijing_sub36942,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub36942.stripped.N4.nii.gz +sub-CC520868,M,67.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520868.stripped.N4.nii.gz +fcon1000AnnArbor_sub28433,M,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub28433.stripped.N4.nii.gz +ADNI394453,M,62.3,adni_storage/ADNI_nii_gz_bias_corrected/I394453_135_S_4954.stripped.N4.nii.gz +ADNI345558,F,63.0,adni_storage/ADNI_nii_gz_bias_corrected/I345558_019_S_5019.stripped.N4.nii.gz +ADNI114057,F,57.9,adni_storage/ADNI_nii_gz_bias_corrected/I114057_016_S_1121.stripped.N4.nii.gz +fcon1000Bangor_sub77520,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub77520.stripped.N4.nii.gz +ADNI389098,F,59.6,adni_storage/ADNI_nii_gz_bias_corrected/I389098_067_S_5205.stripped.N4.nii.gz +fcon1000Cambridge_sub27796,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27796.stripped.N4.nii.gz +fcon1000Cambridge_sub09633,F,30.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09633.stripped.N4.nii.gz +ADNI99328,M,61.1,adni_storage/ADNI_nii_gz_bias_corrected/I99328_020_S_1288.stripped.N4.nii.gz +fcon1000Beijing_sub62438,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub62438.stripped.N4.nii.gz +DLBS0028548_session_1,F,40.83,dlbs_storage/DLBS_bias_corrected/0028548_session_1.stripped.N4.nii.gz +sub-CC420348,F,57.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420348.stripped.N4.nii.gz +fcon1000NewYork_sub18638,M,23.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub18638.stripped.N4.nii.gz +ADNI379689,M,60.9,adni_storage/ADNI_nii_gz_bias_corrected/I379689_131_S_5138.stripped.N4.nii.gz +ADNI376818,F,59.4,adni_storage/ADNI_nii_gz_bias_corrected/I376818_067_S_5205.stripped.N4.nii.gz +ADNI10443906,M,64.5,adni_storage/ADNI_nii_gz_bias_corrected/I10443906_389_S_10076.stripped.N4.nii.gz +fcon1000Cambridge_sub41814,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub41814.stripped.N4.nii.gz +sub-CC620451,M,75.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620451.stripped.N4.nii.gz +ADNI705596,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I705596_128_S_4607.stripped.N4.nii.gz +sub-CC320850,F,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320850.stripped.N4.nii.gz +sub-CC321428,F,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321428.stripped.N4.nii.gz +sub-CC420071,F,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420071.stripped.N4.nii.gz +ADNI335137,M,63.8,adni_storage/ADNI_nii_gz_bias_corrected/I335137_073_S_4552.stripped.N4.nii.gz +ADNI10932456,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I10932456_035_S_7121.stripped.N4.nii.gz +fcon1000Milwaukee_sub73547,F,55.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub73547.stripped.N4.nii.gz +ADNI1356513,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I1356513_137_S_6883.stripped.N4.nii.gz +ADNI1228298,F,61.9,adni_storage/ADNI_nii_gz_bias_corrected/I1228298_131_S_6805.stripped.N4.nii.gz +fcon1000Cambridge_sub92393,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub92393.stripped.N4.nii.gz +fcon1000Beijing_sub18960,M,23.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub18960.stripped.N4.nii.gz +fcon1000NewYork_sub14465,M,47.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub14465.stripped.N4.nii.gz +DLBS0028577_session_1,M,65.52,dlbs_storage/DLBS_bias_corrected/0028577_session_1.stripped.N4.nii.gz +sub-CC310256,M,44.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310256.stripped.N4.nii.gz +fcon1000Beijing_sub59347,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub59347.stripped.N4.nii.gz +DLBS0028500_session_1,M,32.85,dlbs_storage/DLBS_bias_corrected/0028500_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub69696,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub69696.stripped.N4.nii.gz +fcon1000Milwaukee_sub23607,F,48.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub23607.stripped.N4.nii.gz +ADNI313538,M,64.1,adni_storage/ADNI_nii_gz_bias_corrected/I313538_116_S_4625.stripped.N4.nii.gz +fcon1000NewYork_sub03951,M,37.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub03951.stripped.N4.nii.gz +sub-CC310407,F,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310407.stripped.N4.nii.gz +ADNI1260254,M,62.4,adni_storage/ADNI_nii_gz_bias_corrected/I1260254_006_S_6610.stripped.N4.nii.gz +ADNI114262,F,58.3,adni_storage/ADNI_nii_gz_bias_corrected/I114262_133_S_0913.stripped.N4.nii.gz +ADNI365441,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I365441_073_S_5023.stripped.N4.nii.gz +DLBS0028628_session_1,M,51.81,dlbs_storage/DLBS_bias_corrected/0028628_session_1.stripped.N4.nii.gz +ADNI705606,F,60.4,adni_storage/ADNI_nii_gz_bias_corrected/I705606_128_S_4607.stripped.N4.nii.gz +fcon1000Bangor_sub61418,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Bangor_sub61418.stripped.N4.nii.gz +DLBS0028623_session_1,F,30.31,dlbs_storage/DLBS_bias_corrected/0028623_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub47278,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47278.stripped.N4.nii.gz +sub-CC110056,F,22.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110056.stripped.N4.nii.gz +fcon1000Cambridge_sub47231,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub47231.stripped.N4.nii.gz +sub-CC510648,F,61.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510648.stripped.N4.nii.gz +sub-CC210051,F,35.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC210051.stripped.N4.nii.gz +fcon1000Berlin_sub40143,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub40143.stripped.N4.nii.gz +ADNI367565,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I367565_131_S_5138.stripped.N4.nii.gz +DLBS0028439_session_1,M,25.38,dlbs_storage/DLBS_bias_corrected/0028439_session_1.stripped.N4.nii.gz +fcon1000Beijing_sub55736,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub55736.stripped.N4.nii.gz +ADNI10908346,M,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I10908346_073_S_6925.stripped.N4.nii.gz +DLBS0028615_session_1,F,80.95,dlbs_storage/DLBS_bias_corrected/0028615_session_1.stripped.N4.nii.gz +DLBS0028326_session_1,M,66.42,dlbs_storage/DLBS_bias_corrected/0028326_session_1.stripped.N4.nii.gz +ADNI31765,F,64.6,adni_storage/ADNI_nii_gz_bias_corrected/I31765_023_S_1104.stripped.N4.nii.gz +DLBS0028553_session_1,M,30.76,dlbs_storage/DLBS_bias_corrected/0028553_session_1.stripped.N4.nii.gz +ADNI1423364,F,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1423364_003_S_6915.stripped.N4.nii.gz +DLBS0028470_session_1,F,43.19,dlbs_storage/DLBS_bias_corrected/0028470_session_1.stripped.N4.nii.gz +fcon1000AnnArbor_sub73168,M,78.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub73168.stripped.N4.nii.gz +sub-CC310331,M,46.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310331.stripped.N4.nii.gz +ADNI10952478,F,55.6,adni_storage/ADNI_nii_gz_bias_corrected/I10952478_022_S_10186.stripped.N4.nii.gz +ADNI1032530,F,55.9,adni_storage/ADNI_nii_gz_bias_corrected/I1032530_116_S_6550.stripped.N4.nii.gz +ADNI10939739,F,62.5,adni_storage/ADNI_nii_gz_bias_corrected/I10939739_301_S_10230.stripped.N4.nii.gz +fcon1000Cambridge_sub88445,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub88445.stripped.N4.nii.gz +DLBS0028582_session_1,M,48.45,dlbs_storage/DLBS_bias_corrected/0028582_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub09397,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub09397.stripped.N4.nii.gz +sub-CC222264,M,37.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222264.stripped.N4.nii.gz +fcon1000Leiden_sub19281,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub19281.stripped.N4.nii.gz +ADNI1017357,F,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I1017357_024_S_6033.stripped.N4.nii.gz +fcon1000Baltimore_sub86414,F,23.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub86414.stripped.N4.nii.gz +fcon1000Beijing_sub72678,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub72678.stripped.N4.nii.gz +fcon1000Berlin_sub06204,M,34.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub06204.stripped.N4.nii.gz +ADNI335031,M,63.4,adni_storage/ADNI_nii_gz_bias_corrected/I335031_116_S_4195.stripped.N4.nii.gz +sub-CC510548,M,62.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510548.stripped.N4.nii.gz +sub-CC220394,F,33.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC220394.stripped.N4.nii.gz +DLBS0028523_session_1,M,49.68,dlbs_storage/DLBS_bias_corrected/0028523_session_1.stripped.N4.nii.gz +fcon1000NewYork_sub35262,F,28.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub35262.stripped.N4.nii.gz +sub-CC520584,F,59.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520584.stripped.N4.nii.gz +fcon1000Beijing_sub43290,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub43290.stripped.N4.nii.gz +fcon1000Cambridge_sub39053,M,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39053.stripped.N4.nii.gz +DLBS0028388_session_1,M,82.93,dlbs_storage/DLBS_bias_corrected/0028388_session_1.stripped.N4.nii.gz +sub-CC320651,M,42.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320651.stripped.N4.nii.gz +fcon1000Beijing_sub95575,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub95575.stripped.N4.nii.gz +fcon1000Cambridge_sub84256,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub84256.stripped.N4.nii.gz +sub-CC520377,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520377.stripped.N4.nii.gz +fcon1000NewYork_sub30623,F,26.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub30623.stripped.N4.nii.gz +fcon1000Beijing_sub80551,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub80551.stripped.N4.nii.gz +sub-CC510043,M,58.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510043.stripped.N4.nii.gz +sub-CC720238,F,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720238.stripped.N4.nii.gz +fcon1000Baltimore_sub85922,M,30.0,fcon1000_storage/fcon1000_bias_corrected/Baltimore_sub85922.stripped.N4.nii.gz +fcon1000Munchen_sub50162,M,73.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub50162.stripped.N4.nii.gz +DLBS0028518_session_1,F,71.09,dlbs_storage/DLBS_bias_corrected/0028518_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub24757,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub24757.stripped.N4.nii.gz +fcon1000Beijing_sub46259,M,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub46259.stripped.N4.nii.gz +sub-CC420589,M,52.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420589.stripped.N4.nii.gz +ADNI37607,F,60.1,adni_storage/ADNI_nii_gz_bias_corrected/I37607_051_S_1072.stripped.N4.nii.gz +fcon1000NewYork_sub44979,F,15.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub44979.stripped.N4.nii.gz +sub-CC620314,F,74.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620314.stripped.N4.nii.gz +fcon1000Cambridge_sub55660,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub55660.stripped.N4.nii.gz +sub-CC320359,M,47.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320359.stripped.N4.nii.gz +sub-CC320608,M,45.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320608.stripped.N4.nii.gz +DLBS0028595_session_1,F,87.68,dlbs_storage/DLBS_bias_corrected/0028595_session_1.stripped.N4.nii.gz +sub-CC620193,M,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620193.stripped.N4.nii.gz +fcon1000Cambridge_sub51671,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub51671.stripped.N4.nii.gz +sub-CC721374,M,86.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC721374.stripped.N4.nii.gz +fcon1000Cambridge_sub81524,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub81524.stripped.N4.nii.gz +sub-CC221040,M,36.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC221040.stripped.N4.nii.gz +sub-CC310361,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC310361.stripped.N4.nii.gz +fcon1000Cambridge_sub45344,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub45344.stripped.N4.nii.gz +ADNI1484664,F,64.4,adni_storage/ADNI_nii_gz_bias_corrected/I1484664_067_S_6525.stripped.N4.nii.gz +DLBS0028334_session_1,F,55.26,dlbs_storage/DLBS_bias_corrected/0028334_session_1.stripped.N4.nii.gz +ADNI10951691,F,59.0,adni_storage/ADNI_nii_gz_bias_corrected/I10951691_014_S_10236.stripped.N4.nii.gz +fcon1000Munchen_sub74607,M,65.0,fcon1000_storage/fcon1000_bias_corrected/Munchen_sub74607.stripped.N4.nii.gz +fcon1000Milwaukee_sub16666,F,47.0,fcon1000_storage/fcon1000_bias_corrected/Milwaukee_sub16666.stripped.N4.nii.gz +ADNI1501367,F,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I1501367_035_S_7004.stripped.N4.nii.gz +fcon1000Cleveland_sub28596,F,24.0,fcon1000_storage/fcon1000_bias_corrected/Cleveland_sub28596.stripped.N4.nii.gz +DLBS0028466_session_1,M,74.5,dlbs_storage/DLBS_bias_corrected/0028466_session_1.stripped.N4.nii.gz +ADNI60862,F,57.3,adni_storage/ADNI_nii_gz_bias_corrected/I60862_133_S_0913.stripped.N4.nii.gz +sub-CC510284,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510284.stripped.N4.nii.gz +sub-CC620526,F,73.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620526.stripped.N4.nii.gz +fcon1000Cambridge_sub64985,M,18.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub64985.stripped.N4.nii.gz +fcon1000NewYork_sub37864,F,41.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub37864.stripped.N4.nii.gz +sub-CC620935,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620935.stripped.N4.nii.gz +sub-CC610285,M,71.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC610285.stripped.N4.nii.gz +ADNI291506,M,62.9,adni_storage/ADNI_nii_gz_bias_corrected/I291506_116_S_4195.stripped.N4.nii.gz +sub-CC320109,M,39.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320109.stripped.N4.nii.gz +sub-CC620359,M,68.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620359.stripped.N4.nii.gz +ADNI1246020,F,61.5,adni_storage/ADNI_nii_gz_bias_corrected/I1246020_003_S_6479.stripped.N4.nii.gz +sub-CC420392,F,51.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC420392.stripped.N4.nii.gz +sub-CC222304,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC222304.stripped.N4.nii.gz +ADNI339295,M,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I339295_073_S_4552.stripped.N4.nii.gz +fcon1000Atlanta_sub91049,F,48.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub91049.stripped.N4.nii.gz +DLBS0028637_session_1,F,44.54,dlbs_storage/DLBS_bias_corrected/0028637_session_1.stripped.N4.nii.gz +ADNI1267895,M,63.2,adni_storage/ADNI_nii_gz_bias_corrected/I1267895_041_S_6136.stripped.N4.nii.gz +DLBS0028363_session_1,M,26.02,dlbs_storage/DLBS_bias_corrected/0028363_session_1.stripped.N4.nii.gz +fcon1000Cambridge_sub39065,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub39065.stripped.N4.nii.gz +sub-CC510486,F,63.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC510486.stripped.N4.nii.gz +fcon1000Cambridge_sub08588,F,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub08588.stripped.N4.nii.gz +ADNI1092176,F,56.6,adni_storage/ADNI_nii_gz_bias_corrected/I1092176_019_S_6635.stripped.N4.nii.gz +ADNI256318,M,56.3,adni_storage/ADNI_nii_gz_bias_corrected/I256318_014_S_4039.stripped.N4.nii.gz +sub-CC223085,M,38.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC223085.stripped.N4.nii.gz +fcon1000Atlanta_sub06870,M,57.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub06870.stripped.N4.nii.gz +sub-CC720670,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC720670.stripped.N4.nii.gz +DLBS0028392_session_1,F,54.85,dlbs_storage/DLBS_bias_corrected/0028392_session_1.stripped.N4.nii.gz +fcon1000Berlin_sub28092,F,26.0,fcon1000_storage/fcon1000_bias_corrected/Berlin_sub28092.stripped.N4.nii.gz +fcon1000AnnArbor_sub82334,M,14.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub82334.stripped.N4.nii.gz +fcon1000Beijing_sub98617,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub98617.stripped.N4.nii.gz +fcon1000Cambridge_sub58874,M,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub58874.stripped.N4.nii.gz +fcon1000Beijing_sub68597,F,19.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub68597.stripped.N4.nii.gz +ADNI90755,F,61.2,adni_storage/ADNI_nii_gz_bias_corrected/I90755_051_S_1072.stripped.N4.nii.gz +sub-CC620264,F,76.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC620264.stripped.N4.nii.gz +DLBS0028400_session_1,M,49.92,dlbs_storage/DLBS_bias_corrected/0028400_session_1.stripped.N4.nii.gz +DLBS0028607_session_1,M,66.74,dlbs_storage/DLBS_bias_corrected/0028607_session_1.stripped.N4.nii.gz +fcon1000Leiden_sub86034,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Leiden_sub86034.stripped.N4.nii.gz +fcon1000Beijing_sub74587,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub74587.stripped.N4.nii.gz +DLBS0028513_session_1,M,26.68,dlbs_storage/DLBS_bias_corrected/0028513_session_1.stripped.N4.nii.gz +sub-CC320661,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC320661.stripped.N4.nii.gz +sub-CC121479,F,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC121479.stripped.N4.nii.gz +ADNI1236085,F,61.7,adni_storage/ADNI_nii_gz_bias_corrected/I1236085_022_S_6822.stripped.N4.nii.gz +sub-CC321073,F,43.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC321073.stripped.N4.nii.gz +DLBS0028578_session_1,M,87.34,dlbs_storage/DLBS_bias_corrected/0028578_session_1.stripped.N4.nii.gz +ADNI871835,F,57.7,adni_storage/ADNI_nii_gz_bias_corrected/I871835_141_S_6041.stripped.N4.nii.gz +sub-CC722651,F,79.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC722651.stripped.N4.nii.gz +fcon1000Cambridge_sub52036,F,20.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub52036.stripped.N4.nii.gz +ADNI228854,F,63.5,adni_storage/ADNI_nii_gz_bias_corrected/I228854_037_S_4028.stripped.N4.nii.gz +ADNI916399,F,55.8,adni_storage/ADNI_nii_gz_bias_corrected/I916399_168_S_6085.stripped.N4.nii.gz +ADNI982860,F,62.6,adni_storage/ADNI_nii_gz_bias_corrected/I982860_109_S_6218.stripped.N4.nii.gz +fcon1000NewYork_sub77903,M,24.0,fcon1000_storage/fcon1000_bias_corrected/NewYork_sub77903.stripped.N4.nii.gz +ADNI367563,M,60.7,adni_storage/ADNI_nii_gz_bias_corrected/I367563_131_S_5138.stripped.N4.nii.gz +fcon1000Beijing_sub65467,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub65467.stripped.N4.nii.gz +sub-CC520011,F,60.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC520011.stripped.N4.nii.gz +fcon1000Beijing_sub72654,F,22.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub72654.stripped.N4.nii.gz +sub-CC120008,M,26.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC120008.stripped.N4.nii.gz +fcon1000Cambridge_sub27065,M,21.0,fcon1000_storage/fcon1000_bias_corrected/Cambridge_sub27065.stripped.N4.nii.gz +fcon1000Beijing_sub01244,F,25.0,fcon1000_storage/fcon1000_bias_corrected/Beijing_sub01244.stripped.N4.nii.gz +sub-CC711128,M,80.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC711128.stripped.N4.nii.gz +sub-CC110606,M,20.0,camcan_storage/CamCAN_nii_gz_bias_corrected/sub-CC110606.stripped.N4.nii.gz +fcon1000AnnArbor_sub97518,F,21.0,fcon1000_storage/fcon1000_bias_corrected/AnnArbor_sub97518.stripped.N4.nii.gz +fcon1000Atlanta_sub71337,M,27.0,fcon1000_storage/fcon1000_bias_corrected/Atlanta_sub71337.stripped.N4.nii.gz diff --git a/vit_feature_cnn_fscaled_main.py b/vit_feature_cnn_fscaled_main.py new file mode 100644 index 0000000..56cead6 --- /dev/null +++ b/vit_feature_cnn_fscaled_main.py @@ -0,0 +1,423 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +print (df) +# Add a new column 'filepath' with the constructed file paths +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features", exist_ok=True) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +# Process each row in the DataFrame +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = StandardScaler().fit_transform(features) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_volume_to_fixed_slices(data, affine, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +model = AgePredictionCNN(features_list[0].shape).to(device) +criterion = nn.L1Loss() # MAE Loss +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = 200 + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + train_outputs[train_indices[idx]] = outputs.item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = criterion(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + print (train_df) + train_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + # print (test_df) + test_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_val.csv") + + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + # plt.figure(figsize=(8, 6)) + # plt.scatter(train_df['Age'], train_df['Predicted_Age'], color='blue', label='Predicted vs Actual') + # # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # plt.xlabel('Age') + # plt.ylabel('Predicted Age') + # plt.title('Age vs Predicted Age') + # plt.legend() + # plt.grid(True) + # plt.show() \ No newline at end of file diff --git a/vit_feature_cnn_main.py b/vit_feature_cnn_main.py index ec347cc..3987e78 100644 --- a/vit_feature_cnn_main.py +++ b/vit_feature_cnn_main.py @@ -386,7 +386,7 @@ def update_loss_plot(epoch_data, filename): # Assign the values to their respective indices for index, value in train_outputs.items(): df_trn.loc[index, "Predicted_Age"] = value - print (df_trn) + # print (df_trn) df2 = df.copy() df2['Predicted_Age'] = df_trn['Predicted_Age'] @@ -400,12 +400,12 @@ def update_loss_plot(epoch_data, filename): # Assign the values to their respective indices for index, value in val_outputs.items(): df_pred.loc[index, "Predicted_Age"] = value - print (df_pred) + # print (df_pred) df1 = df.copy() df1['Predicted_Age'] = df_pred['Predicted_Age'] test_df = df1.loc[val_outputs.keys()] - print (test_df) + # print (test_df) test_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_val.csv") diff --git a/vit_feature_cnn_main1k.py b/vit_feature_cnn_main1k.py new file mode 100644 index 0000000..0b1b803 --- /dev/null +++ b/vit_feature_cnn_main1k.py @@ -0,0 +1,422 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +df = df.sample(n=1000, random_state=69420) +print (df) +# Add a new column 'filepath' with the constructed file paths +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features", exist_ok=True) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +# Process each row in the DataFrame +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_volume_to_fixed_slices(data, affine, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +model = AgePredictionCNN(features_list[0].shape).to(device) +criterion = nn.L1Loss() # MAE Loss +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata_1k.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = 200 + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}1k.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}1k.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}1k.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + train_outputs[train_indices[idx]] = outputs.item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = criterion(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata1k.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + # df2['Predicted_Age'] = df_trn['Predicted_Age'] + # train_df = df2.loc[train_outputs.keys()] + # print (train_df) + # train_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_train1k.csv") + + # max_index = max(val_outputs.keys()) + # # Create a DataFrame with NaN for all indices initially + # df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # # Assign the values to their respective indices + # for index, value in val_outputs.items(): + # df_pred.loc[index, "Predicted_Age"] = value + # # print (df_pred) + + # df1 = df.copy() + # df1['Predicted_Age'] = df_pred['Predicted_Age'] + # test_df = df1.loc[val_outputs.keys()] + # # print (test_df) + # test_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_val1k.csv") + + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + # plt.figure(figsize=(8, 6)) + # plt.scatter(train_df['Age'], train_df['Predicted_Age'], color='blue', label='Predicted vs Actual') + # # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # plt.xlabel('Age') + # plt.ylabel('Predicted Age') + # plt.title('Age vs Predicted Age') + # plt.legend() + # plt.grid(True) + # plt.show() \ No newline at end of file diff --git a/vit_feature_cnn_main1kroi.py b/vit_feature_cnn_main1kroi.py new file mode 100644 index 0000000..7e6d690 --- /dev/null +++ b/vit_feature_cnn_main1kroi.py @@ -0,0 +1,466 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +df = df.sample(n=1000, random_state=69420) +print (df) +# Add a new column 'filepath' with the constructed file paths +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features", exist_ok=True) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features/roi", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + +# Process each row in the DataFrame +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/roi/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Crop the brain volume + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +model = AgePredictionCNN(features_list[0].shape).to(device) +criterion = nn.L1Loss() # MAE Loss +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata_1kroi.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = 200 + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}1kroi.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}1kroi.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}1kroi.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + train_outputs[train_indices[idx]] = outputs.item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = criterion(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata1kroi.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + # df2['Predicted_Age'] = df_trn['Predicted_Age'] + # train_df = df2.loc[train_outputs.keys()] + # print (train_df) + # train_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_train1kroi.csv") + + # max_index = max(val_outputs.keys()) + # # Create a DataFrame with NaN for all indices initially + # df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # # Assign the values to their respective indices + # for index, value in val_outputs.items(): + # df_pred.loc[index, "Predicted_Age"] = value + # # print (df_pred) + + # df1 = df.copy() + # df1['Predicted_Age'] = df_pred['Predicted_Age'] + # test_df = df1.loc[val_outputs.keys()] + # # print (test_df) + # test_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_val1kroi.csv") + + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + # plt.figure(figsize=(8, 6)) + # plt.scatter(train_df['Age'], train_df['Predicted_Age'], color='blue', label='Predicted vs Actual') + # # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # plt.xlabel('Age') + # plt.ylabel('Predicted Age') + # plt.title('Age vs Predicted Age') + # plt.legend() + # plt.grid(True) + # plt.show() \ No newline at end of file diff --git a/vit_feature_cnn_main_mix.py b/vit_feature_cnn_main_mix.py new file mode 100644 index 0000000..3ce1685 --- /dev/null +++ b/vit_feature_cnn_main_mix.py @@ -0,0 +1,1042 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +df_ixi = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_ixi['filepath'] = df_ixi.apply( + lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + +# metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +# df_abide = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_abide['filepath'] = df_abide.apply( +# lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "camcan_storage/camcan_brainrotnet_metadata.csv" +df_camcan = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_camcan['filepath'] = df_camcan.apply( + lambda row: f"camcan_storage/CamCAN_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + +# metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +# df_cobre = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_cobre['filepath'] = df_cobre.apply( +# lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +# metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +# df_sald = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_sald['filepath'] = df_sald.apply( +# lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# # df_sald = df_sald.sample(n=300) + +# metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +# df_corr = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_corr['filepath'] = df_corr.apply( +# lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +# df_corr = df_corr.sample(n=200) + + +# metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +# df_oas1 = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_oas1['filepath'] = df_oas1.apply( +# lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age']], + # df_ixi[['ImageID', 'Sex', 'Age']], + # df_abide[['ImageID', 'Sex', 'Age']], + df_dlbs[['ImageID', 'Sex', 'Age']], + # df_cobre[['ImageID', 'Sex', 'Age']], + df_fcon[['ImageID', 'Sex', 'Age']], + # df_sald[['ImageID', 'Sex', 'Age']], + # df_corr[['ImageID', 'Sex', 'Age']], + # df_oas1[['ImageID', 'Sex', 'Age']], + df_camcan[['ImageID', 'Sex', 'Age']] + ], ignore_index=True) +print (df) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +roi = 160 + + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features/", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +# Process each row in the DataFrame +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + # from PIL import Image + # # Normalize the array to 0-255 for grayscale image + # data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + # data_normalized = np.repeat(data_normalized, 4, axis=0) + # # Create an image from the array + # img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # # Save the image + # img.save(f"adni_storage/ADNI_features/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_volume_to_fixed_slices(data, affine, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + + + +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][4:]}" +# # Check if the feature file already exists +# feature_file_path = f"sald_storage/SALD_features/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"oasis1_storage/oasis1_features/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +for _, row in tqdm(df_camcan.iterrows(), total=len(df_camcan), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"camcan_storage/CamCAN_features/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset +from dataset_cls import ADNIDataset + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.MSELoss() # MAE Loss +eval_crit = nn.L1Loss() +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/plots/vit_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/vit_feature_cnn_main_mix_roi.py b/vit_feature_cnn_main_mix_roi.py new file mode 100644 index 0000000..efc912e --- /dev/null +++ b/vit_feature_cnn_main_mix_roi.py @@ -0,0 +1,1012 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +df_ixi = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_ixi['filepath'] = df_ixi.apply( + lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +df_abide = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_abide['filepath'] = df_abide.apply( + lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", + axis=1 +) +df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +df_cobre = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_cobre['filepath'] = df_cobre.apply( + lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +df_sald = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_sald['filepath'] = df_sald.apply( + lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) +# df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# # df_sald = df_sald.sample(n=300) + +metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +df_corr = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_corr['filepath'] = df_corr.apply( + lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", + axis=1 +) +df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +df_corr = df_corr.sample(n=200) + + +metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +df_oas1 = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_oas1['filepath'] = df_oas1.apply( + lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) +df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age']], + # df_ixi[['ImageID', 'Sex', 'Age']], + # df_abide[['ImageID', 'Sex', 'Age']], + df_dlbs[['ImageID', 'Sex', 'Age']], + # df_cobre[['ImageID', 'Sex', 'Age']], + df_fcon[['ImageID', 'Sex', 'Age']], + df_sald[['ImageID', 'Sex', 'Age']], + # df_corr[['ImageID', 'Sex', 'Age']], + df_oas1[['ImageID', 'Sex', 'Age']], + ], ignore_index=True) +print (df) + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +model = ViTModel.from_pretrained("google/vit-base-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +roi = 160 + + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features/", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +# Process each row in the DataFrame +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{image_title}_features_roi.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + img.save(f"adni_storage/ADNI_features/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = crop_brain_volumes(data) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = crop_brain_volumes(data) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/{image_title}_features_roi.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = crop_brain_volumes(data) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/{image_title}_features_roi.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = crop_brain_volumes(data) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/{image_title}_features_roi.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = crop_brain_volumes(data) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/{image_title}_features_roi.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = crop_brain_volumes(data) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"sald_storage/SALD_features/{image_title}_features_roi.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = crop_brain_volumes(data) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/{image_title}_features_roi.npy" +# # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features_roi.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = crop_brain_volumes(data) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# outputs = model(slice_tensor) +# slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"oasis1_storage/oasis1_features/{image_title}_features_roi.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = crop_brain_volumes(data) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset +from dataset_cls import ADNIDataset + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.L1Loss() # MAE Loss +eval_crit = nn.L1Loss() +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/plots/vit_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/vit_train_feature_cnn_main_mix.py b/vit_train_feature_cnn_main_mix.py new file mode 100644 index 0000000..a4841a0 --- /dev/null +++ b/vit_train_feature_cnn_main_mix.py @@ -0,0 +1,1186 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDataset, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +df_ixi = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_ixi['filepath'] = df_ixi.apply( + lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +df_abide = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_abide['filepath'] = df_abide.apply( + lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", + axis=1 +) +df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +df_cobre = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_cobre['filepath'] = df_cobre.apply( + lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", + axis=1 +) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +df_sald = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_sald['filepath'] = df_sald.apply( + lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) +# df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# # df_sald = df_sald.sample(n=300) + +metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +df_corr = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_corr['filepath'] = df_corr.apply( + lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", + axis=1 +) +df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +df_corr = df_corr.sample(n=200) + + +metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +df_oas1 = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_oas1['filepath'] = df_oas1.apply( + lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) +df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age', 'filepath']], + df_ixi[['ImageID', 'Sex', 'Age', 'filepath']], + # df_abide[['ImageID', 'Sex', 'Age', 'filepath']], + df_dlbs[['ImageID', 'Sex', 'Age', 'filepath']], + # df_cobre[['ImageID', 'Sex', 'Age', 'filepath']], + df_fcon[['ImageID', 'Sex', 'Age', 'filepath']], + # df_sald[['ImageID', 'Sex', 'Age', 'filepath']], + # df_corr[['ImageID', 'Sex', 'Age', 'filepath']], + # df_oas1[['ImageID', 'Sex', 'Age', 'filepath']], + ], ignore_index=True) +print (df) +# Ensure 'Age' is an integer +df['Age_Group'] = df['Age'].astype(int).apply(lambda x: f"{x:03d}"[:-1] + "0") +df['Age_Group'] = df['Age_Group'] + df['Sex'] +print (df['Age_Group'].unique()) +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() +filepath_list = df['filepath'].tolist() +label_list = df['Age_Group'].tolist() + +# Get unique labels and create a mapping +unique_labels = sorted(set(label_list)) # Ensure consistent ordering +label_to_idx = {label: idx for idx, label in enumerate(unique_labels)} +idx_to_label = {idx: label for label, idx in label_to_idx.items()} # Reverse mapping for decoding + +# Convert labels to integers +numeric_labels = [label_to_idx[label] for label in label_list] +label_list = numeric_labels + +roi = 160 + +# Transformation pipeline for ViT +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # Normalize for ViT +]) + + +# Function to extract 16 evenly spaced slices +def extract_slices(volume, num_slices=16): + total_slices = volume.shape[0] + indices = np.linspace(0, total_slices - 1, num_slices, dtype=int) + return volume[indices, :, :] # Select slices + +# Create ADNIDataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +print(len(vit_train_dataset)) + +# DataLoader for training +vit_train_loader = DataLoader(vit_train_dataset, batch_size=8, shuffle=False) + +# Function to preprocess data and dynamically expand slices while saving to disk +def preprocess_and_expand(dataset, transform, output_dir, num_slices=16): + os.makedirs(output_dir, exist_ok=True) # Ensure output directory exists + expanded_images, expanded_labels = [], [] + + for filepath, label in tqdm(dataset, desc="Processing Slices"): + # Check if all slice files already exist + all_slices_exist = True + slice_filenames = [ + os.path.join(output_dir, f"{os.path.basename(filepath)}_slice_{i}.pt") + for i in range(num_slices) + ] + if not all(os.path.exists(slice_file) for slice_file in slice_filenames): + all_slices_exist = False + + # Skip processing if all slices exist + if all_slices_exist: + expanded_images.extend(slice_filenames) # Add existing file paths + expanded_labels.extend([label] * num_slices) + continue + + # Load NIfTI image only if slices are missing + nii_img = nib.load(filepath) + data = nii_img.get_fdata() + + # Normalize and extract slices + data = (data - data.min()) / (data.max() - data.min()) + slices = extract_slices(data, num_slices) + + # Transform each slice, save to file, and add to dataset + for i, slice_data in enumerate(slices): + slice_filename = slice_filenames[i] + if not os.path.exists(slice_filename): + transformed_slice = transform(slice_data) # Transform slice + torch.save(transformed_slice, slice_filename) # Save to file + expanded_images.append(slice_filename) # Store file path + expanded_labels.append(label) + + return expanded_images, expanded_labels + +# Instantiate Dataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +# Split Dataset +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +# Create New Dataset with Filepaths +class ExpandedDataset(Dataset): + def __init__(self, image_paths, labels): + self.image_paths = image_paths + self.labels = labels + + def __len__(self): + return len(self.labels) + + def __getitem__(self, idx): + # Load the image from file + image = torch.load(self.image_paths[idx]) + label = torch.tensor(self.labels[idx], dtype=torch.long) + return image, label + +# Define output directory for slices +output_dir = "processed_slices" + +# Preprocess and expand the training data +expanded_image_paths, expanded_labels = preprocess_and_expand(vit_train_dataset, transform, output_dir) + +# Create Expanded Dataset and DataLoader +expanded_train_dataset = ExpandedDataset(expanded_image_paths, expanded_labels) +expanded_train_loader = DataLoader(expanded_train_dataset, batch_size=8, shuffle=True) + +# Print Sizes +print(f"Original Training Dataset Size: {len(vit_train_dataset)}") +print(f"Expanded Training Dataset Size: {len(expanded_train_dataset)}") + +from transformers import ViTForImageClassification +# Load ViT model +num_classes = df['Age_Group'].nunique() # Number of unique Age_Groups +model = ViTForImageClassification.from_pretrained( + "google/vit-base-patch16-224", + num_labels=num_classes, + ignore_mismatched_sizes=True, +) + +model.to(device) + +# Loss function and optimizer +criterion = nn.CrossEntropyLoss() +optimizer = optim.AdamW(model.parameters(), lr=1e-4) + +# Function to save checkpoint +def save_checkpoint(epoch, model, optimizer, path="model_dumps/vit_train_checkpoint.pth"): + torch.save({ + 'epoch': epoch, + 'model_state_dict': model.state_dict(), + 'optimizer_state_dict': optimizer.state_dict(), + }, path) + print(f"Checkpoint saved at epoch {epoch+1}") + +# Function to load checkpoint +def load_checkpoint(path="model_dumps/vit_train_checkpoint.pth"): + checkpoint = torch.load(path) + model.load_state_dict(checkpoint['model_state_dict']) + optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + start_epoch = checkpoint['epoch'] + 1 + print(f"Checkpoint loaded. Resuming from epoch {start_epoch}") + return start_epoch + +# Check if recovery mode is enabled +checkpoint_path = "model_dumps/vit_train_checkpoint.pth" +start_epoch = 0 + +if len(sys.argv) > 4 and sys.argv[4] == "recover": + start_epoch = load_checkpoint(path=checkpoint_path) + +# Training loop +vit_train_epochs = 15 +model.train() + +for epoch in range(start_epoch, vit_train_epochs): + running_loss = 0.0 + correct = 0 + total = 0 + + for inputs, labels in tqdm(expanded_train_loader, desc=f"Epoch {epoch+1}/{vit_train_epochs}"): + # Move data to device + inputs, labels = inputs.to(device), labels.to(device) + + # Forward pass + outputs = model(pixel_values=inputs) # ViT expects `pixel_values` + loss = criterion(outputs.logits, labels) + + # Backward pass and optimization + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() + + # Calculate accuracy + _, predicted = torch.max(outputs.logits, dim=1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + # batch_accuracy = 100 * (predicted == labels).sum().item() / labels.size(0) + # print(f"Batch Accuracy: {batch_accuracy:.2f}%") + + epoch_loss = running_loss / len(expanded_train_loader) + epoch_accuracy = 100 * correct / total + print(f"Epoch {epoch+1}/{vit_train_epochs}, Loss: {epoch_loss:.4f}, Accuracy: {epoch_accuracy:.2f}%") + + # Save checkpoint at the end of each epoch + save_checkpoint(epoch, model, optimizer, path=f"model_dumps/vit_train_checkpoint.pth") +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +# model = ViTModel.from_pretrained("google/vit-base-patch16-224") +# model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +torch.cuda.empty_cache() # Free GPU memory + + + +# To store features and labels +features_list = [] +labels_list = [] + + +# Directory to save processed images and features +os.makedirs(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/", exist_ok=True) +# Process each row in the DataFrame +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + # img.save(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_volume_to_fixed_slices(data, affine, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + # #outputs = model(slice_tensor) + # slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# Directory to save processed images and features +os.makedirs(f"ixi_storage/IXI_features/train_e{vit_train_epochs}/", exist_ok=True) +for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# # Directory to save processed images and features +# os.makedirs(f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/", exist_ok=True) +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"dlbs_storage/DLBS_features/train_e{vit_train_epochs}/", exist_ok=True) +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/train_e{vit_train_epochs}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# os.makedirs(f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/", exist_ok=True) +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"fcon1000_storage/fcon1000_features/train_e{vit_train_epochs}/", exist_ok=True) +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/train_e{vit_train_epochs}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# os.makedirs(f"sald_storage/SALD_features/train_e{vit_train_epochs}/", exist_ok=True) +# for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][4:]}" +# # Check if the feature file already exists +# feature_file_path = f"sald_storage/SALD_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +# os.makedirs(f"corr_storage/CORR_features/train_e{vit_train_epochs}/", exist_ok=True) +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# os.makedirs(f"oasis1_storage/oasis1_features/train_e{vit_train_epochs}/", exist_ok=True) +# for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"oasis1_storage/oasis1_features/train_e{vit_train_epochs}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +generator.manual_seed(universal_seed) +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.MSELoss() # MAE Loss +eval_crit = nn.L1Loss() +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/plots/vit_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/vit_train_feature_cnn_main_mix_roi.py b/vit_train_feature_cnn_main_mix_roi.py new file mode 100644 index 0000000..c54e4ad --- /dev/null +++ b/vit_train_feature_cnn_main_mix_roi.py @@ -0,0 +1,1304 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from transformers import ViTForImageClassification +from transformers import DeiTForImageClassification +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDataset, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset +import gc + +model_name = "vit" + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +# metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +# df_ixi = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_ixi['filepath'] = df_ixi.apply( +# lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) + +# metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +# df_abide = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_abide['filepath'] = df_abide.apply( +# lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +# metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +# df_cobre = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_cobre['filepath'] = df_cobre.apply( +# lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +df_sald = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_sald['filepath'] = df_sald.apply( + lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) +df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_sald = df_sald.sample(n=300) + +# metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +# df_corr = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_corr['filepath'] = df_corr.apply( +# lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +# df_corr = df_corr.sample(n=200) + + +metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +df_oas1 = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_oas1['filepath'] = df_oas1.apply( + lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) +df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +metadata_path = "camcan_storage/camcan_brainrotnet_metadata.csv" +df_camcan = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_camcan['filepath'] = df_camcan.apply( + lambda row: f"camcan_storage/CamCAN_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age', 'filepath']], + # df_ixi[['ImageID', 'Sex', 'Age', 'filepath']], + # df_abide[['ImageID', 'Sex', 'Age', 'filepath']], + df_dlbs[['ImageID', 'Sex', 'Age', 'filepath']], + # df_cobre[['ImageID', 'Sex', 'Age', 'filepath']], + df_fcon[['ImageID', 'Sex', 'Age', 'filepath']], + df_sald[['ImageID', 'Sex', 'Age', 'filepath']], + # df_corr[['ImageID', 'Sex', 'Age', 'filepath']], + df_oas1[['ImageID', 'Sex', 'Age', 'filepath']], + df_camcan[['ImageID', 'Sex', 'Age', 'filepath']] + ], ignore_index=True) +print (df) +# Ensure 'Age' is an integer +df['Age_Group'] = df['Age'].astype(int).apply(lambda x: f"{x:03d}"[:-1] + "0") +df['Age_Group'] = df['Age_Group'] + df['Sex'] +print (df['Age_Group'].unique()) +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() +filepath_list = df['filepath'].tolist() +label_list = df['Age_Group'].tolist() + +# Get unique labels and create a mapping +unique_labels = sorted(set(label_list)) # Ensure consistent ordering +label_to_idx = {label: idx for idx, label in enumerate(unique_labels)} +idx_to_label = {idx: label for label, idx in label_to_idx.items()} # Reverse mapping for decoding + +# Convert labels to integers +numeric_labels = [label_to_idx[label] for label in label_list] +label_list = numeric_labels + +roi = 160 + +# Transformation pipeline for ViT +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # Normalize for ViT +]) + + +# Function to extract 16 evenly spaced slices +def extract_slices(volume, num_slices=16): + total_slices = volume.shape[0] + indices = np.linspace(0, total_slices - 1, num_slices, dtype=int) + return volume[indices, :, :] # Select slices + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + +# Function to preprocess data and dynamically expand slices while saving to disk +def preprocess_and_expand(dataset, transform, output_dir, num_slices=16): + os.makedirs(output_dir, exist_ok=True) # Ensure output directory exists + expanded_images, expanded_labels = [], [] + + for filepath, label in tqdm(dataset, desc="Processing Slices"): + # Check if all slice files already exist + all_slices_exist = True + slice_filenames = [ + os.path.join(output_dir, f"{os.path.basename(filepath)}_slice_{i}.pt") + for i in range(num_slices) + ] + if not all(os.path.exists(slice_file) for slice_file in slice_filenames): + all_slices_exist = False + + # Skip processing if all slices exist + if all_slices_exist: + expanded_images.extend(slice_filenames) # Add existing file paths + expanded_labels.extend([label] * num_slices) + continue + + # Load NIfTI image only if slices are missing + nii_img = nib.load(filepath) + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + data = crop_brain_volumes(data) + + # Normalize and extract slices + data = (data - data.min()) / (data.max() - data.min()) + slices = extract_slices(data, num_slices) + + # Transform each slice, save to file, and add to dataset + for i, slice_data in enumerate(slices): + slice_filename = slice_filenames[i] + if not os.path.exists(slice_filename): + transformed_slice = transform(slice_data) # Transform slice + torch.save(transformed_slice, slice_filename) # Save to file + expanded_images.append(slice_filename) # Store file path + expanded_labels.append(label) + + return expanded_images, expanded_labels +# Instantiate Dataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +# Split Dataset +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +# Create New Dataset with Filepaths +class ExpandedDataset(Dataset): + def __init__(self, image_paths, labels): + self.image_paths = image_paths + self.labels = labels + + def __len__(self): + return len(self.labels) + + def __getitem__(self, idx): + # Load the image from file + image = torch.load(self.image_paths[idx]) + label = torch.tensor(self.labels[idx], dtype=torch.long) + return image, label + +slice_count = 32 + +# Define output directory for slices +output_dir = f"processed_slices/{slice_count}" + +# Preprocess and expand the training data +expanded_image_paths, expanded_labels = preprocess_and_expand(vit_train_dataset, transform, output_dir, num_slices=slice_count) + +# Create Expanded Dataset and DataLoader +expanded_train_dataset = ExpandedDataset(expanded_image_paths, expanded_labels) +expanded_train_loader = DataLoader(expanded_train_dataset, batch_size=8, shuffle=True) + +# Print Sizes +print(f"Original Training Dataset Size: {len(vit_train_dataset)}") +print(f"Expanded Training Dataset Size: {len(expanded_train_dataset)}") + + +# Load ViT model +num_classes = df['Age_Group'].nunique() # Number of unique Age_Groups +model = ViTForImageClassification.from_pretrained( + "google/vit-base-patch16-224", + num_labels=num_classes, + ignore_mismatched_sizes=True, +) + + + +model.to(device) + +# Loss function and optimizer +criterion = nn.CrossEntropyLoss() +optimizer = optim.AdamW(model.parameters(), lr=1e-4) + +# Function to save checkpoint +def save_checkpoint(epoch, model, optimizer, path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth"): + torch.save({ + 'epoch': epoch, + 'model_state_dict': model.state_dict(), + 'optimizer_state_dict': optimizer.state_dict(), + }, path) + print(f"Checkpoint saved at epoch {epoch+1}") + +# Function to load checkpoint +def load_checkpoint(path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth"): + checkpoint = torch.load(path) + model.load_state_dict(checkpoint['model_state_dict']) + optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + start_epoch = checkpoint['epoch'] + 1 + print(f"Checkpoint loaded. Resuming from epoch {start_epoch}") + return start_epoch + +# Check if recovery mode is enabled +checkpoint_path = f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth" +start_epoch = 0 + +if len(sys.argv) > 4 and sys.argv[4] == "recover": + start_epoch = load_checkpoint(path=checkpoint_path) + +# Training loop +vit_train_epochs = 1 +model.train() + +for epoch in range(start_epoch, vit_train_epochs): + running_loss = 0.0 + correct = 0 + total = 0 + + for inputs, labels in tqdm(expanded_train_loader, desc=f"Epoch {epoch+1}/{vit_train_epochs}"): + # Move data to device + inputs, labels = inputs.to(device), labels.to(device) + + # Forward pass + outputs = model(pixel_values=inputs) # ViT expects `pixel_values` + loss = criterion(outputs.logits, labels) + + # Backward pass and optimization + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() + + # Calculate accuracy + _, predicted = torch.max(outputs.logits, dim=1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + # batch_accuracy = 100 * (predicted == labels).sum().item() / labels.size(0) + # print(f"Batch Accuracy: {batch_accuracy:.2f}%") + + epoch_loss = running_loss / len(expanded_train_loader) + epoch_accuracy = 100 * correct / total + print(f"Epoch {epoch+1}/{vit_train_epochs}, Loss: {epoch_loss:.4f}, Accuracy: {epoch_accuracy:.2f}%") + # sav the accuracy and loss for each epoch in a csv file + with open(f'{model_name}_train_metrics_{slice_count}.csv', 'a') as f: + f.write(f"{epoch+1},{epoch_loss},{epoch_accuracy}\n") + # Save checkpoint at the end of each epoch + # shift the model to cpu before saving + # model.to('cpu') + save_checkpoint(epoch, model, optimizer, path=f"model_dumps/{model_name}_train_checkpoint_{slice_count}.pth") + # model.to(device) # Move back to GPU + gc.collect() + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +# model = ViTModel.from_pretrained("google/vit-base-patch16-224") +# model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +torch.cuda.empty_cache() # Free GPU memory + + + +# To store features and labels +features_list = [] +labels_list = [] + + +# Directory to save processed images and features +os.makedirs(f"adni_storage/ADNI_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# Process each row in the DataFrame, +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + # img.save(f"adni_storage/ADNI_features/train_e{vit_train_epochs}/{slice_count}/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + # #outputs = model(slice_tensor) + # slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# Directory to save processed images and features +# os.makedirs(f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# # Directory to save processed images and features +# os.makedirs(f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"dlbs_storage/DLBS_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# os.makedirs(f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"fcon1000_storage/fcon1000_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +os.makedirs(f"sald_storage/SALD_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"sald_storage/SALD_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# os.makedirs(f"corr_storage/CORR_features/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +os.makedirs(f"oasis1_storage/oasis1_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"oasis1_storage/oasis1_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +os.makedirs(f"camcan_storage/CamCAN_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_camcan.iterrows(), total=len(df_camcan), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"camcan_storage/CamCAN_features/{model_name}/train_e{vit_train_epochs}/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +generator.manual_seed(universal_seed) +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size], generator=generator) +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.L1Loss() + +eval_crit = nn.L1Loss() +# optimizer = optim.Adam(model.parameters(), lr=0.001) +# adamw +optimizer = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.001) +#optimizer = optim.Adam(model.parameters(), lr=0.0005, weight_decay=0.0001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 +scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.5) +#scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[10, 20, 30], gamma=0.5) +#scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.5, patience=5, verbose=True) +#scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=10, eta_min=0.0001, last_epoch=-1) +#scheduler = optim.lr_scheduler.OneCycleLR(optimizer, max_lr=0.001, steps_per_epoch=len(train_loader), epochs=epochs) + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_best_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{model_name}/{slice_count}/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{slice_count}/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{slice_count}/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + #scheduler.step() + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{model_name}/{slice_count}/{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/{model_name}/{slice_count}/plots/{model_name}_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/vit_train_metrics.csv b/vit_train_metrics.csv new file mode 100644 index 0000000..84a52db --- /dev/null +++ b/vit_train_metrics.csv @@ -0,0 +1,3 @@ +3,1.153491705672757,57.71790919282511 +4,0.9176502034210103,66.72155269058295 +5,0.7490490353697569,73.3639293721973 diff --git a/vit_train_metrics_16.csv b/vit_train_metrics_16.csv new file mode 100644 index 0000000..ed8230a --- /dev/null +++ b/vit_train_metrics_16.csv @@ -0,0 +1,15 @@ +1,1.9349344514911753,30.69646860986547 +2,1.4820295305663695,45.65232623318386 +3,1.184266876237208,56.66690022421525 +4,0.9285762824072198,66.49383408071749 +5,0.7777999946643962,72.16227578475336 +1,1.9349344514911753,30.69646860986547 +2,1.4789821329639363,45.59627242152467 +3,1.187399784704428,56.07132847533632 +4,0.9425200620883316,65.6635369955157 +5,0.7542759179254585,72.84893497757848 +1,18.520315172827296 +2,17.078083339961655 +3,17.15616446051897 +4,17.168859794000873 +5,17.010499005226812 diff --git a/vit_train_metrics_32.csv b/vit_train_metrics_32.csv new file mode 100644 index 0000000..963b9f0 --- /dev/null +++ b/vit_train_metrics_32.csv @@ -0,0 +1,38 @@ +1,17.599097248283737 +2,15.433740411070698 +3,12.161920863249644 +4,10.272737560919047 +5,9.215972374606828 +6,8.64863115676048 +7,8.578263686777765 +8,7.895704537496439 +9,7.318833008809475 +10,7.07903076324094 +11,6.877992988835536 +12,6.5025946226288385 +13,6.597799714637978 +14,6.411531273659836 +15,6.346511487034672 +1,17.60040367805637 +2,16.76178139160834 +3,15.88713075771861 +1,1.6977335079593976,38.03951793721973 +2,1.1888967110742001,55.68595852017937 +3,0.8706669232791349,67.72351457399103 +1,1.6995013216719232,37.90288677130045 +2,1.1868429208266227,55.79456278026906 +3,0.8673531520994789,67.80759529147981 +4,0.6384090962587446,76.73591647982063 +5,0.4965632288418387,82.23794843049328 +6,0.40968506034940855,85.81137892376681 +7,0.3472242637618842,88.16388733183857 +8,0.3045740294707966,89.69660874439462 +9,0.2790904786823196,90.50413396860986 +10,0.25063995638637576,91.61119674887892 +1,1.768086351878783,35.719412544169614 +2,1.286926638336635,52.13808524734982 +3,0.984793563152897,63.55316916961131 +4,0.7407006252659468,73.20837014134275 +5,0.5799919746269253,79.46113074204948 +1,1.7682361794543509,35.78290636042403 +6,0.47092240503395,83.49160777385158 diff --git a/vit_train_reg_feature_cnn_main_mix_roi.py b/vit_train_reg_feature_cnn_main_mix_roi.py new file mode 100644 index 0000000..2c3fa71 --- /dev/null +++ b/vit_train_reg_feature_cnn_main_mix_roi.py @@ -0,0 +1,1286 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk +from scipy.ndimage import zoom +from dataset_cls import ADNIDataset, ADNIDatasetViT +from torch.utils.data import DataLoader, Dataset +import gc + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +universal_seed = 69420 + +set_random_seed(universal_seed) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + + +def resample_nifti(img_data, target_slices = 160): + # Determine the current number of slices along the z-axis (3rd dimension) + current_slices = img_data.shape[0] + # Calculate the zoom factor for resampling (only along the z-axis) + zoom_factor = target_slices / current_slices + # Resample the image data along the z-axis + resampled_data = zoom(img_data, (zoom_factor, 1, 1), order=3) # order=3 for cubic interpolation + # Ensure that the resampled data has the target number of slices + # print (resampled_data.shape) + # resampled_data = resampled_data[:target_slices,:,:] + # print (resampled_data.shape) + return resampled_data + + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df_adni = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +# Add a new column 'filepath' with the constructed file paths +df_adni['filepath'] = df_adni.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID'][4:]}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) +df_adni = df_adni.sort_values(by='Age', ascending=True).reset_index(drop=True).head(500) +# df_adni=df_adni.sample(n=400) + +# Load independent dataset metadata +# metadata_path = "ixi_storage/ixi_brainrotnet_metadata.csv" +# df_ixi = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_ixi['filepath'] = df_ixi.apply( +# lambda row: f"ixi_storage/IXI_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) + +# metadata_path = "abide_storage/abide_brainrotnet_metadata.csv" +# df_abide = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_abide['filepath'] = df_abide.apply( +# lambda row: f"abide_storage/ABIDEII_bias_corrected/{row['ImageID'][7:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_abide = df_abide.sort_values(by='Age', ascending=False).reset_index(drop=True).head(500) +# df_abide=df_abide.sample(n=400) + +metadata_path = "dlbs_storage/dlbs_brainrotnet_metadata.csv" +df_dlbs = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_dlbs['filepath'] = df_dlbs.apply( + lambda row: f"dlbs_storage/DLBS_bias_corrected/{row['ImageID'][4:]}.stripped.N4.nii.gz", + axis=1 +) + +# metadata_path = "cobre_storage/cobre_brainrotnet_metadata.csv" +# df_cobre = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_cobre['filepath'] = df_cobre.apply( +# lambda row: f"cobre_storage/COBRE_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) + +metadata_path = "fcon1000_storage/fcon1000_brainrotnet_metadata.csv" +df_fcon = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_fcon['filepath'] = df_fcon.apply( + lambda row: f"fcon1000_storage/fcon1000_bias_corrected/{row['ImageID'][8:]}.stripped.N4.nii.gz", + axis=1 +) +df_fcon = df_fcon.dropna() +# df_fcon = df_fcon.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# df_fcon = df_fcon.sample(n=300) + +# metadata_path = "sald_storage/sald_brainrotnet_metadata.csv" +# df_sald = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_sald['filepath'] = df_sald.apply( +# lambda row: f"sald_storage/SALD_bias_corrected/sub-{row['ImageID'][4:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_sald = df_sald.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +# # df_sald = df_sald.sample(n=300) + +# metadata_path = "corr_storage/corr_brainrotnet_metadata.csv" +# df_corr = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_corr['filepath'] = df_corr.apply( +# lambda row: f"corr_storage/CORR_bias_corrected/{row['ImageID'][5:]}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_corr = df_corr.sort_values(by='Age', ascending=True).reset_index(drop=True).head(300) +# df_corr = df_corr.sample(n=200) + + +# metadata_path = "oasis1_storage/oasis1_brainrotnet_metadata.csv" +# df_oas1 = pd.read_csv(metadata_path) +# # Update filepaths for the independent dataset +# df_oas1['filepath'] = df_oas1.apply( +# lambda row: f"oasis1_storage/oasis_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", +# axis=1 +# ) +# df_oas1 = df_oas1.sort_values(by='Age', ascending=False).reset_index(drop=True).head(300) +metadata_path = "camcan_storage/camcan_brainrotnet_metadata.csv" +df_camcan = pd.read_csv(metadata_path) +# Update filepaths for the independent dataset +df_camcan['filepath'] = df_camcan.apply( + lambda row: f"camcan_storage/CamCAN_nii_gz_bias_corrected/{row['ImageID']}.stripped.N4.nii.gz", + axis=1 +) + + +df = pd.concat ([ + df_adni[['ImageID', 'Sex', 'Age', 'filepath']], + # df_ixi[['ImageID', 'Sex', 'Age', 'filepath']], + # df_abide[['ImageID', 'Sex', 'Age', 'filepath']], + df_dlbs[['ImageID', 'Sex', 'Age', 'filepath']], + # df_cobre[['ImageID', 'Sex', 'Age', 'filepath']], + df_fcon[['ImageID', 'Sex', 'Age', 'filepath']], + # df_sald[['ImageID', 'Sex', 'Age', 'filepath']], + # df_corr[['ImageID', 'Sex', 'Age', 'filepath']], + # df_oas1[['ImageID', 'Sex', 'Age', 'filepath']], + df_camcan[['ImageID', 'Sex', 'Age', 'filepath']] + ], ignore_index=True) +print (df) +# Ensure 'Age' is an integer +# df['Age_Group'] = df['Age'].astype(int).apply(lambda x: f"{x:03d}"[:-1] + "0") +# df['Age_Group'] = df['Age_Group'] + df['Sex'] +# print (df['Age_Group'].unique()) +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() +filepath_list = df['filepath'].tolist() +# label_list = df['Age_Group'].tolist() +# Use 'Age' directly as labels +label_list = df['Age'].tolist() + +# Get unique labels and create a mapping +# unique_labels = sorted(set(label_list)) # Ensure consistent ordering +# label_to_idx = {label: idx for idx, label in enumerate(unique_labels)} +# idx_to_label = {idx: label for label, idx in label_to_idx.items()} # Reverse mapping for decoding + +# # Convert labels to integers +# numeric_labels = [label_to_idx[label] for label in label_list] +# label_list = numeric_labels + +roi = 160 + +# Transformation pipeline for ViT +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # Normalize for ViT +]) + + +# Function to extract 16 evenly spaced slices +def extract_slices(volume, num_slices=16): + total_slices = volume.shape[0] + indices = np.linspace(0, total_slices - 1, num_slices, dtype=int) + return volume[indices, :, :] # Select slices + +def calculate_bounding_box_from_volume(volume): + # Find indices of non-zero values + non_zero_indices = np.argwhere(volume > 0) + + # Calculate min and max indices along each dimension + min_indices = np.min(non_zero_indices, axis=0) + max_indices = np.max(non_zero_indices, axis=0) + + # Convert indices to integers + min_indices = min_indices.astype(int) + max_indices = max_indices.astype(int) + + return min_indices, max_indices + + +def crop_brain_volumes(brain_data): + + + # Calculate bounding box from the brain volume + min_indices, max_indices = calculate_bounding_box_from_volume(brain_data) + + # Crop the volume + cropped_brain = brain_data[min_indices[0]:max_indices[0] + 1, + min_indices[1]:max_indices[1] + 1, + min_indices[2]:max_indices[2] + 1] + return cropped_brain + +# Function to preprocess data and dynamically expand slices while saving to disk +def preprocess_and_expand(dataset, transform, output_dir, num_slices=16): + os.makedirs(output_dir, exist_ok=True) # Ensure output directory exists + expanded_images, expanded_labels = [], [] + + for filepath, label in tqdm(dataset, desc="Processing Slices"): + # Check if all slice files already exist + all_slices_exist = True + slice_filenames = [ + os.path.join(output_dir, f"{os.path.basename(filepath)}_slice_{i}.pt") + for i in range(num_slices) + ] + if not all(os.path.exists(slice_file) for slice_file in slice_filenames): + all_slices_exist = False + + # Skip processing if all slices exist + if all_slices_exist: + expanded_images.extend(slice_filenames) # Add existing file paths + expanded_labels.extend([label] * num_slices) + continue + + # Load NIfTI image only if slices are missing + nii_img = nib.load(filepath) + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + data = crop_brain_volumes(data) + + # Normalize and extract slices + data = (data - data.min()) / (data.max() - data.min()) + slices = extract_slices(data, num_slices) + + # Transform each slice, save to file, and add to dataset + for i, slice_data in enumerate(slices): + slice_filename = slice_filenames[i] + if not os.path.exists(slice_filename): + transformed_slice = transform(slice_data) # Transform slice + torch.save(transformed_slice, slice_filename) # Save to file + expanded_images.append(slice_filename) # Store file path + expanded_labels.append(label) + + return expanded_images, expanded_labels +# Instantiate Dataset +vit_dataset = ADNIDatasetViT(filepath_list, label_list) + +# Split Dataset +train_size = int(0.8 * len(vit_dataset)) +val_size = len(vit_dataset) - train_size +generator = torch.Generator().manual_seed(universal_seed) +vit_train_dataset, vit_val_dataset = torch.utils.data.random_split(vit_dataset, [train_size, val_size], generator=generator) + +# Create New Dataset with Filepaths +class ExpandedDataset(Dataset): + def __init__(self, image_paths, labels): + self.image_paths = image_paths + self.labels = labels + + def __len__(self): + return len(self.labels) + + def __getitem__(self, idx): + # Load the image from file + image = torch.load(self.image_paths[idx]) + label = torch.tensor(self.labels[idx], dtype=torch.long) + return image, label + +slice_count = 32 + +# Define output directory for slices +output_dir = f"processed_slices/{slice_count}" + +# Preprocess and expand the training data +expanded_image_paths, expanded_labels = preprocess_and_expand(vit_train_dataset, transform, output_dir, num_slices=slice_count) + +# Create Expanded Dataset and DataLoader +expanded_train_dataset = ExpandedDataset(expanded_image_paths, expanded_labels) +expanded_train_loader = DataLoader(expanded_train_dataset, batch_size=8, shuffle=True) + +# Print Sizes +print(f"Original Training Dataset Size: {len(vit_train_dataset)}") +print(f"Expanded Training Dataset Size: {len(expanded_train_dataset)}") + +from transformers import ViTForImageClassification +# Load ViT model +# num_classes = df['Age_Group'].nunique() # Number of unique Age_Groups +model = ViTForImageClassification.from_pretrained( + "google/vit-base-patch16-224", + num_labels=1, # Regression task + ignore_mismatched_sizes=True, +) + +model.to(device) +vit_train_epochs = 3 +# Loss function and optimizer +criterion = nn.L1Loss() +optimizer = optim.AdamW(model.parameters(), lr=1e-4) + +# Function to save checkpoint +def save_checkpoint(epoch, model, optimizer, path=f"model_dumps/vit_train_reg_checkpoint_slice{slice_count}_e{vit_train_epochs}.pth"): + torch.save({ + 'epoch': epoch, + 'model_state_dict': model.state_dict(), + 'optimizer_state_dict': optimizer.state_dict(), + }, path) + print(f"Checkpoint saved at epoch {epoch+1}") + +# Function to load checkpoint +def load_checkpoint(path=f"model_dumps/vit_train_reg_checkpoint_slice{slice_count}_e{vit_train_epochs}.pth"): + checkpoint = torch.load(path) + model.load_state_dict(checkpoint['model_state_dict']) + optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + start_epoch = checkpoint['epoch'] + 1 + print(f"Checkpoint loaded. Resuming from epoch {start_epoch}") + return start_epoch + +# Check if recovery mode is enabled +checkpoint_path = f"model_dumps/vit_train_reg_checkpoint_slice{slice_count}_e{vit_train_epochs}.pth" +start_epoch = 0 + +if len(sys.argv) > 4 and sys.argv[4] == "recover": + start_epoch = load_checkpoint(path=checkpoint_path) + +# Training loop + +model.train() + +for epoch in range(start_epoch, vit_train_epochs): + running_loss = 0.0 + correct = 0 + total_samples = 0 + + for inputs, labels in tqdm(expanded_train_loader, desc=f"Epoch {epoch+1}/{vit_train_epochs}"): + # Move data to device + inputs, labels = inputs.to(device), labels.to(device) + + # Forward pass + outputs = model(pixel_values=inputs) # ViT expects `pixel_values` + predictions = outputs.logits.squeeze() # Squeeze logits for regression (shape: [batch_size]) + + # Calculate loss + loss = criterion(predictions, labels) + + # Backward pass and optimization + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() * labels.size(0) # Sum up the loss + total_samples += labels.size(0) + + # Calculate epoch metrics + epoch_mae = running_loss / total_samples # Loss is MAE in this case + # epoch_mae = running_loss / len(expanded_train_loader) + print(f"Epoch {epoch+1}/{vit_train_epochs}, MAE (Loss): {epoch_mae:.4f}") + print(f"Total Samples: {total_samples}") + + # Save the accuracy and loss for each epoch in a CSV file + with open(f'vit_train_metrics_{slice_count}.csv', 'a') as f: + f.write(f"{epoch+1},{epoch_mae}\n") + + save_checkpoint(epoch, model, optimizer, path=f"model_dumps/vit_train_reg_checkpoint_slice{slice_count}_e{vit_train_epochs}.pth") + gc.collect() + +# Load pre-trained ViT model +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224") +# model = ViTModel.from_pretrained("google/vit-base-patch16-224") +# model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +torch.cuda.empty_cache() # Free GPU memory + + + +# To store features and labels +features_list = [] +labels_list = [] + + +# Directory to save processed images and features +os.makedirs(f"adni_storage/ADNI_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# Process each row in the DataFrame +for _, row in tqdm(df_adni.iterrows(), total=len(df_adni), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + + from PIL import Image + # Normalize the array to 0-255 for grayscale image + data_normalized = ((features - np.min(features)) / (np.max(features) - np.min(features)) * 255).astype(np.uint8) + data_normalized = np.repeat(data_normalized, 4, axis=0) + # Create an image from the array + img = Image.fromarray(np.transpose(data_normalized), mode='L') # 'L' mode for grayscale + # Save the image + # img.save(f"adni_storage/ADNI_features/train_e{vit_train_epochs}_reg/{slice_count}/featuremaps/{image_title}_fm.png") + + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + # #outputs = model(slice_tensor) + # slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# Directory to save processed images and features +# os.makedirs(f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_ixi.iterrows(), total=len(df_ixi), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# # Directory to save processed images and features +# os.makedirs(f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_abide.iterrows(), total=len(df_abide), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][7:]}" +# # Check if the feature file already exists +# feature_file_path = f"abide_storage/ABIDEII_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"dlbs_storage/DLBS_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_dlbs.iterrows(), total=len(df_dlbs), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][4:]}" + # Check if the feature file already exists + feature_file_path = f"dlbs_storage/DLBS_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + +# os.makedirs(f"cobre_storage/COBRE_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_cobre.iterrows(), total=len(df_cobre), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"cobre_storage/COBRE_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"fcon1000_storage/fcon1000_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_fcon.iterrows(), total=len(df_fcon), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID'][5:]}" + # Check if the feature file already exists + feature_file_path = f"fcon1000_storage/fcon1000_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + #outputs = model(slice_tensor) + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +# os.makedirs(f"sald_storage/SALD_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_sald.iterrows(), total=len(df_sald), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][4:]}" +# # Check if the feature file already exists +# feature_file_path = f"sald_storage/SALD_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +# os.makedirs(f"corr_storage/CORR_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_corr.iterrows(), total=len(df_corr), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID'][5:]}" +# # Check if the feature file already exists +# feature_file_path = f"corr_storage/CORR_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# # feature_file_path = f"ixi_storage/IXI_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + + +# os.makedirs(f"oasis1_storage/oasis1_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +# for _, row in tqdm(df_oas1.iterrows(), total=len(df_oas1), desc="Processing test images"): +# filepath = row['filepath'] +# image_title = f"{row['ImageID']}" +# # Check if the feature file already exists +# feature_file_path = f"oasis1_storage/oasis1_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" +# if os.path.exists(feature_file_path): +# # If file exists, load the features from the file +# features = np.load(feature_file_path) + +# features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] +# features_list.append(features) # Flatten the features and add to the list +# labels_list.append(row['Age']) # Add the corresponding age label +# else: +# if os.path.exists(filepath): +# try: +# # Load the NIfTI image +# nii_img = nib.load(filepath) + +# # Get current orientation and reorient to RAS +# orig_ornt = io_orientation(nii_img.affine) +# ras_ornt = axcodes2ornt(("R", "A", "S")) +# ornt_trans = ornt_transform(orig_ornt, ras_ornt) + +# data = nii_img.get_fdata() # Load image data +# data = apply_orientation(data, ornt_trans) + +# affine = nii_img.affine # Affine transformation matrix + +# # Resample the volume to 160 slices (if required) +# data = resample_nifti(data, target_slices=160) +# # Extract features for all slices +# features = [] +# for slice_idx in range(data.shape[0]): +# slice_data = data[slice_idx, :, :] +# slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + +# slice_tensor = transform(slice_data).unsqueeze(0).to(device) + +# # Extract features using ViT +# with torch.no_grad(): +# #outputs = model(slice_tensor) +# slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() +# features.append(slice_features) +# # Save extracted features +# features = np.array(features) +# np.save(feature_file_path, features) +# features_list.append(features) +# labels_list.append(row['Age']) # Assuming 'Age' is the target + +# except Exception as e: +# print(f"Error processing {filepath}: {e}") +# else: +# print(f"File not found: {filepath}") + +os.makedirs(f"camcan_storage/CamCAN_features/train_e{vit_train_epochs}_reg/{slice_count}/", exist_ok=True) +for _, row in tqdm(df_camcan.iterrows(), total=len(df_camcan), desc="Processing test images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}" + # Check if the feature file already exists + feature_file_path = f"camcan_storage/CamCAN_features/train_e{vit_train_epochs}_reg/{slice_count}/{image_title}_features.npy" + # feature_file_path = f"ixi_storage/IXI_features/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + + features = features[len(features) // 2 - roi//2 : len(features) // 2 + roi//2] + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + data = crop_brain_volumes(data) + + # Resample the volume to 160 slices (if required) + data = resample_nifti(data, target_slices=160) + # Extract features for all slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + slice_tensor = transform(slice_data).unsqueeze(0).to(device) + + # Extract features using ViT + with torch.no_grad(): + + slice_features = model.vit(slice_tensor).last_hidden_state.mean(dim=1).squeeze().cpu().numpy() + features.append(slice_features) + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Assuming 'Age' is the target + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + + + +batch_size = 1 + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +generator.manual_seed(universal_seed) +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size], generator=generator) +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +print (features_list[0].shape) +model = AgePredictionCNN((1, features_list[0].shape[0], features_list[0].shape[1])).to(device) +criterion = nn.MSELoss() + +eval_crit = nn.L1Loss() +optimizer = optim.Adam(model.parameters(), lr=0.001) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + with open(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_best_model_with_metadata_{vit_train_epochs}.pkl", "rb") as f: + checkpoint = pickle.load(f) + best_loss = checkpoint["loss"] + + # Load the checkpoint + with open(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_{load_saved}_model_with_metadata_{vit_train_epochs}.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with validation loss {loaded_loss:.4f}, best loss {best_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = int(sys.argv[3]) + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/mix/{slice_count}/{filename}_reg.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/mix/{slice_count}/{filename}_reg.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/mix/{slice_count}/{filename}_reg.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + # Store the output for each sample in the batch + for i in range(outputs.size(0)): + train_outputs[train_indices[idx * batch_size + i]] = outputs[i].item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = eval_crit(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + for i in range(outputs.size(0)): + val_outputs[val_indices[idx * batch_size + i]] = outputs[i].item() + # val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_last_model_with_metadata_{vit_train_epochs}.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_best_model_with_metadata_{vit_train_epochs}.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + # print (train_df) + train_df.to_csv(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + print (test_df) + test_df.to_csv(f"model_dumps/mix/{slice_count}/reg_{sys.argv[1]}_predicted_ages_val.csv") + + + # Map unique first 4 characters of ImageID to color codes + unique_groups = test_df['ImageID'].str[:3].unique() + group_to_color = {group: i for i, group in enumerate(unique_groups)} + + # Assign colors based on the mapping + cmap = plt.get_cmap('tab10') # Change colormap as desired + colors = [cmap(group_to_color[group]) for group in test_df['ImageID'].str[:3]] + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + plt.figure(figsize=(8, 6)) + plt.scatter(test_df['Age'], test_df['Predicted_Age'], color=colors, label='Predicted vs Actual') + # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # Add legend for colors based on ImageID groups + handles = [plt.Line2D([0], [0], marker='o', color=cmap(i), linestyle='', markersize=10) + for i, group in enumerate(unique_groups)] + plt.legend(handles, unique_groups, title="ImageID Groups") + plt.xlabel('Age') + plt.ylabel('Predicted Age') + plt.title('Age vs Predicted Age') + plt.grid(True) + plt.savefig(f"model_dumps/mix/{slice_count}/plots/reg_vit_cnn_{sys.argv[1]}_epoch{epoch}.png") diff --git a/vitlarge_feature_cnn_main.py b/vitlarge_feature_cnn_main.py new file mode 100644 index 0000000..3d7fdb6 --- /dev/null +++ b/vitlarge_feature_cnn_main.py @@ -0,0 +1,405 @@ +import os +import pandas as pd +import nibabel as nib +import numpy as np +import torch +import torch.nn as nn +import torch.nn.init as init +import torch.optim as optim +from tqdm import tqdm +from nibabel.orientations import io_orientation, axcodes2ornt, ornt_transform, apply_orientation +from torchvision import transforms +from transformers import ViTFeatureExtractor, ViTModel +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import pickle +import matplotlib.pyplot as plt +import sys +import SimpleITK as sitk + +def set_random_seed(seed=69420): + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # For multi-GPU setups + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + +set_random_seed(69420) + +# Function to resample the volume to 160 slices +def resample_volume_to_fixed_slices(data, affine, target_slices=160): + # Convert Numpy array and affine to SimpleITK image + sitk_img = sitk.GetImageFromArray(data) + sitk_img.SetSpacing([affine[0, 0], affine[1, 1], affine[2, 2]]) + + original_size = sitk_img.GetSize() # (width, height, depth) + original_spacing = sitk_img.GetSpacing() # (spacing_x, spacing_y, spacing_z) + + # Calculate new spacing to achieve the target number of slices + new_spacing = list(original_spacing) + new_spacing[2] = (original_spacing[2] * original_size[2]) / target_slices + + # Define new size + new_size = [original_size[0], original_size[1], target_slices] + + # Resample the image + resampler = sitk.ResampleImageFilter() + resampler.SetOutputSpacing(new_spacing) + resampler.SetSize(new_size) + resampler.SetInterpolator(sitk.sitkLinear) + resampled_img = resampler.Execute(sitk_img) + + return sitk.GetArrayFromImage(resampled_img) # Return the resampled image as a numpy array + +# Check if GPU is available +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Load the CSV file into a pandas DataFrame +csv_path = "adni_storage/adni_brainrotnet_metadata.csv" +df = pd.read_csv(csv_path) +# df = df.sample(n=1000, random_state=69420) +print (df) +# Add a new column 'filepath' with the constructed file paths +df['filepath'] = df.apply( + lambda row: f"adni_storage/ADNI_nii_gz_bias_corrected/I{row['ImageID']}_{row['SubjectID']}.stripped.N4.nii.gz", + axis=1 +) + + +# Load pre-trained ViT model , vit-large-patch16-224 +feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-large-patch16-224") +model = ViTModel.from_pretrained("google/vit-large-patch16-224") +model.to(device) # Move the model to the GPU (if available) +model.eval() + +# Update image transform for grayscale images to match ViT input requirements +transform = transforms.Compose([ + transforms.ToPILImage(), + transforms.Resize((224, 224)), + transforms.Lambda(lambda img: img.convert("RGB")), # Convert to RGB directly + transforms.ToTensor(), + transforms.Normalize(mean=feature_extractor.image_mean, std=feature_extractor.image_std), +]) + +# Directory to save processed images and features +os.makedirs("adni_storage/ADNI_features_large", exist_ok=True) + +# To store features and labels +features_list = [] +labels_list = [] + +# Process each row in the DataFrame +for _, row in tqdm(df.iterrows(), total=len(df), desc="Processing images"): + filepath = row['filepath'] + image_title = f"{row['ImageID']}_{row['SubjectID']}" + + # Check if the feature file already exists + feature_file_path = f"adni_storage/ADNI_features_large/{image_title}_features.npy" + if os.path.exists(feature_file_path): + # If file exists, load the features from the file + features = np.load(feature_file_path) + features_list.append(features) # Flatten the features and add to the list + labels_list.append(row['Age']) # Add the corresponding age label + else: + # print ("hiii") + if os.path.exists(filepath): + try: + # Load the NIfTI image + nii_img = nib.load(filepath) + + # Get current orientation and reorient to RAS + orig_ornt = io_orientation(nii_img.affine) + ras_ornt = axcodes2ornt(("R", "A", "S")) + ornt_trans = ornt_transform(orig_ornt, ras_ornt) + + data = nii_img.get_fdata() # Load image data + data = apply_orientation(data, ornt_trans) + + affine = nii_img.affine # Affine transformation matrix + + # Resample the volume to 160 slices (if required) + data = resample_volume_to_fixed_slices(data, affine, target_slices=160) + + # Extract features for all sagittal slices + features = [] + for slice_idx in range(data.shape[0]): + slice_data = data[slice_idx, :, :] + slice_data = (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data)) # Normalize + + # Transform slice for ViT input + slice_tensor = transform(slice_data).unsqueeze(0).to(device) # Add batch dimension and move to GPU + + # Extract features using ViT + with torch.no_grad(): + outputs = model(slice_tensor) + slice_features = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy() # Move output back to CPU + features.append(slice_features) + + # Save extracted features + features = np.array(features) + np.save(feature_file_path, features) + features_list.append(features) + labels_list.append(row['Age']) # Target is 'Age' + + except Exception as e: + print(f"Error processing {filepath}: {e}") + else: + print(f"File not found: {filepath}") + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import DataLoader, Dataset + +# Custom Dataset +class ADNIDataset(Dataset): + def __init__(self, features_list, sex_list, age_list): + self.features = features_list + self.sex = sex_list + self.age = age_list + + def __len__(self): + return len(self.features) + + def __getitem__(self, idx): + return ( + torch.tensor(self.features[idx], dtype=torch.float32), + torch.tensor(self.sex[idx], dtype=torch.float32), + torch.tensor(self.age[idx], dtype=torch.float32), + ) + + +# Prepare dataset and dataloaders +sex_encoded = df['Sex'].apply(lambda x: 0 if x == 'M' else 1).tolist() +age_list = df['Age'].tolist() + +# print (features_list) +print (features_list[0].shape) + +# Create Dataset and DataLoader +dataset = ADNIDataset(features_list, sex_encoded, age_list) +train_size = int(0.8 * len(dataset)) +val_size = len(dataset) - train_size +train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size]) + +# Store the indices of the validation dataset +val_indices = val_dataset.indices +train_indices = train_dataset.indices + +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False) +val_loader = DataLoader(val_dataset, batch_size=1, shuffle=False) + + +# Tracking outputs for validation samples +val_outputs = {} +train_outputs = {} + +# Initialize model, loss, and optimizer +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +########################################### +# THIS IS WHERE YOU CHOOSE A MODEL TO TEST +########################################### + +import importlib + +# Assuming sys.argv[1] is the module name +module_name = sys.argv[1] # Example: "my_model" +class_name = "AgePredictionCNN" # The class you want to import + +try: + # Dynamically import the module + module = importlib.import_module(module_name) + + # Dynamically get the class + AgePredictionCNN = getattr(module, class_name) + + print(f"Successfully imported {class_name} from {module_name}.") + +except ImportError: + print(f"Module {module_name} could not be imported.") +except AttributeError: + print(f"{class_name} does not exist in {module_name}.") + +############################## +# MODEL IMPORTED DYNAMICALLY +############################## + +model = AgePredictionCNN(features_list[0].shape).to(device) +criterion = nn.L1Loss() # MAE Loss +optimizer = optim.Adam(model.parameters(), lr=0.007) +best_loss = np.inf # Initialize the best loss to infinity +start_epoch = 0 + +load_saved = sys.argv[2] # "last, "best" +if load_saved != "none": + # Load the checkpoint + with open(f"model_dumps/{sys.argv[1]}_{load_saved}_model_with_metadata.pkl", "rb") as f: + checkpoint = pickle.load(f) + + # Restore model and optimizer state + model.load_state_dict(checkpoint["model_state"]) + optimizer.load_state_dict(checkpoint["optimizer_state"]) + + # Restore RNG states + torch.set_rng_state(checkpoint["t_rng_st"]) + np.random.set_state(checkpoint["n_rng_st"]) + if torch.cuda.is_available() and checkpoint["cuda_rng_st"] is not None: + torch.cuda.set_rng_state_all(checkpoint["cuda_rng_st"]) + + # Retrieve metadata + start_epoch = checkpoint["epoch"] + 1 + loaded_loss = checkpoint["loss"] + + print(f"Loaded model from epoch {start_epoch} with best validation loss: {loaded_loss:.4f}") + +predicted_ages = None +# Training loop +epochs = 200 + +# Initialize lists to track loss +filename = sys.argv[1] +csv_file = f"model_dumps/{filename}.csv" + +# Load existing epoch data if the file exists +if os.path.exists(csv_file): + epoch_data = pd.read_csv(csv_file).to_dict(orient="records") + print(f"Loaded existing epoch data from {csv_file}.") +else: + epoch_data = [] + print("No existing epoch data found. Starting fresh.") + + +# Plot loss vs. epoch and save the figure +def update_loss_plot(epoch_data, filename): + df = pd.DataFrame(epoch_data) + df.to_csv(f"model_dumps/{filename}.csv", index=False) # Save the data to CSV + + plt.figure(figsize=(8, 6)) + plt.plot(df['epoch'], df['train_loss'], label="Train Loss", marker="o") + plt.plot(df['epoch'], df['val_loss'], label="Validation Loss", marker="o") + plt.xlabel("Epoch") + plt.ylabel("Loss") + plt.title("Loss vs. Epoch") + plt.legend() + plt.grid(True) + plt.savefig(f"model_dumps/{filename}.png") + plt.close() + +# Training loop +for epoch in range(start_epoch, epochs): + model.train() + train_loss = 0.0 + predicted_ages = [] + + for idx, (features, sex, age) in enumerate(train_loader): + features = features.unsqueeze(1).to(device) # Add channel dimension + sex = sex.to(device) + age = age.to(device) + optimizer.zero_grad() + outputs = model(features, sex) + train_outputs[train_indices[idx]] = outputs.item() + + loss = criterion(outputs.squeeze(), age) + loss.backward() + optimizer.step() + + train_loss += loss.item() + + train_loss /= len(train_loader) + print(f"Epoch {epoch+1}/{epochs}, Train Loss: {train_loss:.4f}") + + # Validation loop + model.eval() + val_loss = 0.0 + with torch.no_grad(): + for idx, (features, sex, age) in enumerate(val_loader): + features = features.unsqueeze(1).to(device) + sex = sex.to(device) + age = age.to(device) + + outputs = model(features, sex) + loss = criterion(outputs.squeeze(), age) + val_loss += loss.item() + + # Save the predicted age for the current validation sample + val_outputs[val_indices[idx]] = outputs.item() + + val_loss /= len(val_loader) + print(f"Epoch {epoch+1}/{epochs}, Validation Loss: {val_loss:.4f}") + + # Save the last model with metadata + print(f"Saving last model...") + checkpoint = { + "model_state": model.state_dict(), + "optimizer_state": optimizer.state_dict(), + "epoch": epoch, + "loss": val_loss, + "t_rng_st": torch.get_rng_state(), + "n_rng_st": np.random.get_state(), + "cuda_rng_st": torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + } + with open(f"model_dumps/{sys.argv[1]}_last_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + print(f"Last model saved...") + + # Check if validation loss improved + if val_loss < best_loss: + best_loss = val_loss + print(f"Validation loss improved to {best_loss:.4f}. Saving model...") + with open(f"model_dumps/{sys.argv[1]}_best_model_with_metadata.pkl", "wb") as f: + pickle.dump(checkpoint, f) + + # Save predictions and create DataFrames (same as before) + # ... + + # Update epoch data and save the loss plot + epoch_data.append({ + "epoch": epoch + 1, + "train_loss": train_loss, + "val_loss": val_loss + }) + update_loss_plot(epoch_data, sys.argv[1]) + + max_index = max(train_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_trn = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in train_outputs.items(): + df_trn.loc[index, "Predicted_Age"] = value + # print (df_trn) + + df2 = df.copy() + df2['Predicted_Age'] = df_trn['Predicted_Age'] + train_df = df2.loc[train_outputs.keys()] + print (train_df) + train_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_train.csv") + + max_index = max(val_outputs.keys()) + # Create a DataFrame with NaN for all indices initially + df_pred = pd.DataFrame(index=range(max_index + 1), columns=["Predicted_Age"]) + # Assign the values to their respective indices + for index, value in val_outputs.items(): + df_pred.loc[index, "Predicted_Age"] = value + # print (df_pred) + + df1 = df.copy() + df1['Predicted_Age'] = df_pred['Predicted_Age'] + test_df = df1.loc[val_outputs.keys()] + # print (test_df) + test_df.to_csv(f"model_dumps/{sys.argv[1]}_predicted_ages_val.csv") + + + # Check that the predictions have been added to the DataFrame + # Plot Age vs. Predicted Age + # plt.figure(figsize=(8, 6)) + # plt.scatter(train_df['Age'], train_df['Predicted_Age'], color='blue', label='Predicted vs Actual') + # # plt.plot(test_df['Age'], test_df['Age'], color='red', linestyle='--', label='Perfect Prediction') # Optional: Line of perfect prediction + # plt.xlabel('Age') + # plt.ylabel('Predicted Age') + # plt.title('Age vs Predicted Age') + # plt.legend() + # plt.grid(True) + # plt.show() \ No newline at end of file