Skip to content
Snippets Groups Projects
Commit 2768d367 authored by fadwael.khaddar_ird.fr's avatar fadwael.khaddar_ird.fr
Browse files

This script generates box plot for methylation frequency 25% 50% et 75%

parent 176442be
No related branches found
No related tags found
No related merge requests found
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Reading files:
bed1 = pd.read_csv("C:\\Users\\SCD UM\\Desktop\\methylation_frequency\\MET1_DSP.bed", sep='\t', names=['chro', 'start', 'end', 'freq'])
bed2 = pd.read_csv("C:\\Users\\SCD UM\\Desktop\\methylation_frequency\\MET1_Tombo.bed", sep='\t', names=['chro', 'start', 'end', 'freq'])
bed3 = pd.read_csv("C:\\Users\\SCD UM\\Desktop\\methylation_frequency\\MET1_Megalodon_freq_modified.bed", sep='\t', names=['chro', 'start', 'freq'])
# Obtaining frequency data from bed1, bed2, and bed3
freq1 = bed1["freq"]
freq2 = bed2["freq"]
freq3 = bed3["freq"]
# Sorting frequency data
freq1_sorted = np.sort(freq1)
freq2_sorted = np.sort(freq2)
freq3_sorted = np.sort(freq3)
# Calculating quantiles for bed1
quantile_25_1 = np.percentile(freq1_sorted, 25)
quantile_50_1 = np.percentile(freq1_sorted, 50)
quantile_75_1 = np.percentile(freq1_sorted, 75)
# Calculating quantiles for bed2
quantile_25_2 = np.percentile(freq2_sorted, 25)
quantile_50_2 = np.percentile(freq2_sorted, 50)
quantile_75_2 = np.percentile(freq2_sorted, 75)
# Calculating quantiles for bed3
quantile_25_3 = np.percentile(freq3_sorted, 25)
quantile_50_3 = np.percentile(freq3_sorted, 50)
quantile_75_3 = np.percentile(freq3_sorted, 75)
# Slicing data for bed1
donnees_25_1 = freq1_sorted[:int(len(freq1_sorted) * 0.25)]
donnees_50_1 = freq1_sorted[int(len(freq1_sorted) * 0.25):int(len(freq1_sorted) * 0.50)]
donnees_75_1 = freq1_sorted[int(len(freq1_sorted) * 0.50):int(len(freq1_sorted) * 0.75)]
# Slicing data for bed2
donnees_25_2 = freq2_sorted[:int(len(freq2_sorted) * 0.25)]
donnees_50_2 = freq2_sorted[int(len(freq2_sorted) * 0.25):int(len(freq2_sorted) * 0.50)]
donnees_75_2 = freq2_sorted[int(len(freq2_sorted) * 0.50):int(len(freq2_sorted) * 0.75)]
# Slicing data for bed3
donnees_25_3 = freq3_sorted[:int(len(freq3_sorted) * 0.25)]
donnees_50_3 = freq3_sorted[int(len(freq3_sorted) * 0.25):int(len(freq3_sorted) * 0.50)]
donnees_75_3 = freq3_sorted[int(len(freq3_sorted) * 0.50):int(len(freq3_sorted) * 0.75)]
# Creating subplots
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
# Color definitions
color_bed1 = 'lightblue'
color_bed2 = 'lightgreen'
color_bed3 = 'red'
# Plotting boxplots for 25%
boxes_25 = axes[0].boxplot([donnees_25_1, donnees_25_2, donnees_25_3], patch_artist=True, labels=["DeepSignalPlant", "Tombo", "Megalodon"])
for i, box in enumerate(boxes_25['boxes']):
if i == 0:
box.set(facecolor=color_bed1)
elif i == 1:
box.set(facecolor=color_bed2)
elif i == 2:
box.set(facecolor=color_bed3)
axes[0].set_title("Faible fréquence de méthylation")
axes[0].set_ylabel("Fréquence de méthylation ")
# Plotting boxplots for 50%
boxes_50 = axes[1].boxplot([donnees_50_1, donnees_50_2, donnees_50_3], patch_artist=True, labels=["DeepSignalPlant", "Tombo", "Megalodon"])
for i, box in enumerate(boxes_50['boxes']):
if i == 0:
box.set(facecolor=color_bed1)
elif i == 1:
box.set(facecolor=color_bed2)
elif i == 2:
box.set(facecolor=color_bed3)
axes[1].set_title("Moyenne fréquence de méthylation")
axes[1].set_ylabel("Fréquence de méthylation ")
# Plotting boxplots for 75%
boxes_75 = axes[2].boxplot([donnees_75_1, donnees_75_2, donnees_75_3], patch_artist=True, labels=["DeepSignalPlant", "Tombo", "Megalodon"])
for i, box in enumerate(boxes_75['boxes']):
if i == 0:
box.set(facecolor=color_bed1)
elif i == 1:
box.set(facecolor=color_bed2)
elif i == 2:
box.set(facecolor=color_bed3)
axes[2].set_title("Forte fréquence de méthylation")
axes[2].set_ylabel("Fréquence de méthylation ")
# Adjusting the layout
plt.tight_layout()
# Display the plot
plt.show()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment