Explorar o código

plotting quant values and mixed model analysis

arefks hai 1 mes
pai
achega
49f5af13af

+ 95 - 0
code/plotting_quantitative_dti_values.py

@@ -0,0 +1,95 @@
+import os
+import sys
+import pandas as pd
+import seaborn as sns
+import matplotlib.pyplot as plt
+import statsmodels.formula.api as smf
+from statsmodels.stats.multicomp import MultiComparison
+
+# Set up warning suppression for convergence
+import warnings
+warnings.simplefilter(action='ignore')
+
+# Get the directory where the code file is located
+code_dir = os.path.dirname(os.path.abspath(__file__))
+
+# Get the parent directory of the code directory
+parent_dir = os.path.dirname(code_dir)
+
+# Step 4: Save the resulting dataframe to a CSV file
+input_file_path = os.path.join(parent_dir, 'output', "Final_Quantitative_output", 'Final_Quantitative_output&behavior_data.csv')
+
+df = pd.read_csv(input_file_path)
+
+# Filtering the dataframe based on conditions
+df_f1 = df[(df["dialation_amount"] == 0) & (~df["merged_timepoint"].isin([42, 56]))]
+
+# Create lists to store results and terminal output
+results = []
+terminal_output = []
+
+# Redirect standard output to a file
+terminal_output_file = os.path.join(parent_dir, 'output', "Final_Quantitative_output", 'terminalOutput.txt')
+sys.stdout = open(terminal_output_file, 'w')
+
+# Iterate over unique values of "Qtype" and "mask_name"
+for qq in df["Qtype"].unique():
+    for mm in df["mask_name"].unique():
+        # Filter the dataframe based on current "Qtype" and "mask_name"
+        filtered_df = df_f1[(df_f1["Qtype"] == qq) & (df_f1["mask_name"] == mm)]
+        
+        # Fit the mixed-effects model
+        md = smf.mixedlm("Value ~ merged_timepoint", filtered_df, groups=filtered_df["Group"])
+        mdf = md.fit(method=["lbfgs"])
+        
+        # Print the model name
+        model_name = str(qq) + "_" + str(mm)
+        print(model_name)
+        terminal_output.append(model_name)
+        
+        # Print the summary
+        summary_text = str(mdf.summary())
+        print(summary_text)
+        terminal_output.append(summary_text)
+        
+        # Append the results to the list
+        results.append({'Qtype': qq, 'mask_name': mm, 'p_value': mdf.pvalues['merged_timepoint']})
+
+        # Check if the p-value is significant
+        if mdf.pvalues['merged_timepoint'] < 0.05:
+            # Create a boxplot
+            sns.boxplot(data=filtered_df, x="merged_timepoint", y="Value", hue="Group")
+            
+            # Set title and labels
+            plt.title(f'Mask Name: {mm}')
+            plt.xlabel('Merged Timepoint')
+            plt.ylabel(qq)
+            
+            # Show plot
+            plt.legend(title=None, frameon=False)
+            plt.show()
+            
+            # Perform Tukey's HSD test for post hoc analysis
+            mc = MultiComparison(filtered_df["Value"], filtered_df["merged_timepoint"])
+            tukey_result = mc.tukeyhsd()
+            
+            # Print the summary of the test
+            tukey_summary_text = str(tukey_result.summary())
+            print(tukey_summary_text)
+            terminal_output.append(tukey_summary_text)
+
+# Create a DataFrame from results
+results_df = pd.DataFrame(results)
+
+# Print the table
+print(results_df)
+
+# Save results_df as CSV
+output_file_path = os.path.join(parent_dir, 'output', "Final_Quantitative_output", 'mixe_model_results.csv')
+results_df.to_csv(output_file_path, index=False)
+
+# Close the file
+sys.stdout.close()
+
+# Reset standard output
+sys.stdout = sys.__stdout__

+ 109 - 0
output/Final_Quantitative_output/mixe_model_results.csv

@@ -0,0 +1,109 @@
+Qtype,mask_name,p_value
+fa,CC_Mos_Mos.tt,0.002075535718352904
+fa,CC_MOp(dilated)_cut.tt,0.25857930913887595
+fa,CC_MOp(dilated),0.19149187239123577
+fa,CC_MOp_MOp.tt,0.057116982173103154
+fa,CC_MOp_MOp_cut.tt,0.2931600506110782
+fa,CC_MOs_MOs_cut.tt,0.017415590873072224
+fa,CC_SSp_ll.tt,0.013532412113242555
+fa,CC_SSp_ll_cut.tt,0.000144287965883589
+fa,CC_SSp_ul.tt,0.3048542057141693
+fa,CC_SSp_ul_cut.tt,0.029844089334135092
+fa,CST_links_CC_cut,0.06712416584077079
+fa,CST_links_CCasROA,0.02419818085893096
+fa,CST_links_ROA_CC_fibers_cut,0.07188523543591796
+fa,CST_rechts_CC_cut,0.11765421464151783
+fa,CST_rechts_CCasROA,0.0719520199452052
+fa,CST_rechts_ROA_CC_fibers_cut,0.0762108959499888
+fa,Optic_tract_final.tt,0.07339834729775375
+fa,Retikulospinal_tract_links,0.0050202822227741065
+fa,Retikulospinal_tract_rechts,0.6070489848077694
+fa,Rubrospinal_tract_links_,0.00671816596718948
+fa,Rubrospinal_tract_rechts,0.9563985713805789
+fa,Thalamocorticale_links_SSp_and_SSs_End,1.2505799128390217e-05
+fa,Thalamocorticale_links_SSp_ll_and_ul_ROI.tt,0.0007195449890152609
+fa,"Thalamocorticale_links_SSp_ul_and_ll_End_0,2.tt",6.296990499937095e-05
+fa,Thalamocorticale_rechts_SSp_and_SSs_End,1.912176497663292e-06
+fa,Thalamocorticale_rechts_SSp_ll_and_ul_ROI.tt,0.04903192288697123
+fa,"Thalamocorticale_rechts_SSp_ul_and_ll_End_0,2.tt",0.10568528442056387
+md,CC_Mos_Mos.tt,0.9542607750357475
+md,CC_MOp(dilated)_cut.tt,3.0658344994659045e-07
+md,CC_MOp(dilated),0.13567074356365882
+md,CC_MOp_MOp.tt,0.6874387155448942
+md,CC_MOp_MOp_cut.tt,0.0010758499208293698
+md,CC_MOs_MOs_cut.tt,0.045485814311204555
+md,CC_SSp_ll.tt,0.15082033334156228
+md,CC_SSp_ll_cut.tt,0.00015365602899717102
+md,CC_SSp_ul.tt,0.23559521706546327
+md,CC_SSp_ul_cut.tt,0.02330542502396383
+md,CST_links_CC_cut,0.06459080186318353
+md,CST_links_CCasROA,0.07988070057213341
+md,CST_links_ROA_CC_fibers_cut,0.06382800916803598
+md,CST_rechts_CC_cut,0.9591432321560838
+md,CST_rechts_CCasROA,0.7985294592142914
+md,CST_rechts_ROA_CC_fibers_cut,0.882800487954165
+md,Optic_tract_final.tt,0.32924959908923934
+md,Retikulospinal_tract_links,0.45603242152947654
+md,Retikulospinal_tract_rechts,0.235232839735534
+md,Rubrospinal_tract_links_,0.9373840210162276
+md,Rubrospinal_tract_rechts,0.0677789804196421
+md,Thalamocorticale_links_SSp_and_SSs_End,0.7167067534375922
+md,Thalamocorticale_links_SSp_ll_and_ul_ROI.tt,0.7255658160187228
+md,"Thalamocorticale_links_SSp_ul_and_ll_End_0,2.tt",0.7047807634242562
+md,Thalamocorticale_rechts_SSp_and_SSs_End,0.9332370573624645
+md,Thalamocorticale_rechts_SSp_ll_and_ul_ROI.tt,0.008057198090749456
+md,"Thalamocorticale_rechts_SSp_ul_and_ll_End_0,2.tt",0.29666830912854814
+ad,CC_Mos_Mos.tt,0.21959756231545557
+ad,CC_MOp(dilated)_cut.tt,1.303108376139094e-05
+ad,CC_MOp(dilated),0.1848273553051919
+ad,CC_MOp_MOp.tt,0.2721984670930868
+ad,CC_MOp_MOp_cut.tt,0.0003928044930791963
+ad,CC_MOs_MOs_cut.tt,0.0024765373199279995
+ad,CC_SSp_ll.tt,0.23436809377525036
+ad,CC_SSp_ll_cut.tt,0.0017629367793271938
+ad,CC_SSp_ul.tt,0.13043659848511616
+ad,CC_SSp_ul_cut.tt,0.03243014434269004
+ad,CST_links_CC_cut,0.021170077039668625
+ad,CST_links_CCasROA,0.021980046905361778
+ad,CST_links_ROA_CC_fibers_cut,0.02095804389828154
+ad,CST_rechts_CC_cut,0.7773621228192376
+ad,CST_rechts_CCasROA,0.6077483487414056
+ad,CST_rechts_ROA_CC_fibers_cut,0.6756069790742422
+ad,Optic_tract_final.tt,0.15357048316491714
+ad,Retikulospinal_tract_links,0.09350079533573771
+ad,Retikulospinal_tract_rechts,0.2666065850081366
+ad,Rubrospinal_tract_links_,0.5275625605934643
+ad,Rubrospinal_tract_rechts,0.18102884450366674
+ad,Thalamocorticale_links_SSp_and_SSs_End,0.13273969787230816
+ad,Thalamocorticale_links_SSp_ll_and_ul_ROI.tt,0.6214119553676037
+ad,"Thalamocorticale_links_SSp_ul_and_ll_End_0,2.tt",0.2227943712698145
+ad,Thalamocorticale_rechts_SSp_and_SSs_End,0.20919857127395924
+ad,Thalamocorticale_rechts_SSp_ll_and_ul_ROI.tt,0.006129745843015448
+ad,"Thalamocorticale_rechts_SSp_ul_and_ll_End_0,2.tt",0.2659453241494443
+rd,CC_Mos_Mos.tt,0.43028894141816243
+rd,CC_MOp(dilated)_cut.tt,1.8828789256859385e-07
+rd,CC_MOp(dilated),0.12688037918726555
+rd,CC_MOp_MOp.tt,0.9360362623835977
+rd,CC_MOp_MOp_cut.tt,0.008638453120041833
+rd,CC_MOs_MOs_cut.tt,0.3596454991496335
+rd,CC_SSp_ll.tt,0.12026853328701606
+rd,CC_SSp_ll_cut.tt,5.772600128200736e-05
+rd,CC_SSp_ul.tt,0.3564597857861963
+rd,CC_SSp_ul_cut.tt,0.024456117731944508
+rd,CST_links_CC_cut,0.20369740194516162
+rd,CST_links_CCasROA,0.2590466685931252
+rd,CST_links_ROA_CC_fibers_cut,0.2039481723355736
+rd,CST_rechts_CC_cut,0.887718084055412
+rd,CST_rechts_CCasROA,0.9775747501130498
+rd,CST_rechts_ROA_CC_fibers_cut,0.9338473316873352
+rd,Optic_tract_final.tt,0.6462650645924786
+rd,Retikulospinal_tract_links,0.9300433108948905
+rd,Retikulospinal_tract_rechts,0.24863835876139606
+rd,Rubrospinal_tract_links_,0.5281986210387642
+rd,Rubrospinal_tract_rechts,0.042574882423566135
+rd,Thalamocorticale_links_SSp_and_SSs_End,0.5908976947872635
+rd,Thalamocorticale_links_SSp_ll_and_ul_ROI.tt,0.35794293484629536
+rd,"Thalamocorticale_links_SSp_ul_and_ll_End_0,2.tt",0.7926037825352199
+rd,Thalamocorticale_rechts_SSp_and_SSs_End,0.42179043912052894
+rd,Thalamocorticale_rechts_SSp_ll_and_ul_ROI.tt,0.016694769203714408
+rd,"Thalamocorticale_rechts_SSp_ul_and_ll_End_0,2.tt",0.3574074714357256

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2530 - 0
output/Final_Quantitative_output/terminalOutput.txt