correction for sfs transform plot
parent
a8b5c1aa6f
commit
a92dba2d25
|
|
@ -202,10 +202,13 @@ def scatter(x, y, ylab=None, xlab=None, title=None):
|
||||||
|
|
||||||
def barplot(x=None, y=None, ylab=None, xlab=None, title=None):
|
def barplot(x=None, y=None, ylab=None, xlab=None, title=None):
|
||||||
if x:
|
if x:
|
||||||
|
x = list(x)
|
||||||
|
plt.xticks(x)
|
||||||
plt.bar(x, y)
|
plt.bar(x, y)
|
||||||
else:
|
else:
|
||||||
x = list(range(len(y)))
|
x = list(range(len(y)))
|
||||||
plt.bar(x, y)
|
plt.bar(x, y)
|
||||||
|
plt.xticks(x)
|
||||||
if ylab:
|
if ylab:
|
||||||
plt.ylabel(ylab)
|
plt.ylabel(ylab)
|
||||||
if xlab:
|
if xlab:
|
||||||
|
|
|
||||||
23
sfs_tools.py
23
sfs_tools.py
|
|
@ -20,6 +20,7 @@ Rectify SFS comp in parsed funct.
|
||||||
import gzip
|
import gzip
|
||||||
import sys
|
import sys
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
from frst import customgraphics
|
||||||
|
|
||||||
def sfs_from_vcf(n, vcf_file, folded = True, diploid = True, phased = False, verbose = False,
|
def sfs_from_vcf(n, vcf_file, folded = True, diploid = True, phased = False, verbose = False,
|
||||||
strip = False, count_ext = False):
|
strip = False, count_ext = False):
|
||||||
|
|
@ -194,8 +195,9 @@ def sfs_from_parsed_vcf(n, vcf_dict, folded = True, diploid = True, phased = Fal
|
||||||
def barplot_sfs(sfs, xlab, ylab, folded=True, title = "Barplot", transformed = False):
|
def barplot_sfs(sfs, xlab, ylab, folded=True, title = "Barplot", transformed = False):
|
||||||
sfs_val = []
|
sfs_val = []
|
||||||
n = len(sfs.values())
|
n = len(sfs.values())
|
||||||
for k in range(1, n):
|
print("n =", n)
|
||||||
ksi = list(sfs.values())[k-1]
|
for k, ksi in sfs.items():
|
||||||
|
#ksi = list(sfs.values())[k-1]
|
||||||
# k+1 because k starts from 0
|
# k+1 because k starts from 0
|
||||||
# if folded:
|
# if folded:
|
||||||
# # ?check if 2*n or not?
|
# # ?check if 2*n or not?
|
||||||
|
|
@ -207,7 +209,8 @@ def barplot_sfs(sfs, xlab, ylab, folded=True, title = "Barplot", transformed =
|
||||||
# sfs_val.append(ksi)
|
# sfs_val.append(ksi)
|
||||||
if transformed:
|
if transformed:
|
||||||
if folded:
|
if folded:
|
||||||
sfs_val.append(ksi * k * (2*n - k))
|
#sfs_val.append(ksi * k * (2*n - k))
|
||||||
|
sfs_val.append(((k*(2*n - k)) / (2*n))*ksi)
|
||||||
else:
|
else:
|
||||||
sfs_val.append(ksi * k)
|
sfs_val.append(ksi * k)
|
||||||
else:
|
else:
|
||||||
|
|
@ -215,17 +218,15 @@ def barplot_sfs(sfs, xlab, ylab, folded=True, title = "Barplot", transformed =
|
||||||
|
|
||||||
#terminal case, same for folded or unfolded
|
#terminal case, same for folded or unfolded
|
||||||
if transformed:
|
if transformed:
|
||||||
sfs_val.append(list(sfs.values())[n-1] * n)
|
sfs_val[-1] = list(sfs.values())[n-1] * n
|
||||||
else:
|
else:
|
||||||
sfs_val.append(list(sfs.values())[n-1])
|
sfs_val[-1] = list(sfs.values())[n-1]
|
||||||
#build the plot
|
#build the plot
|
||||||
title = title+" [folded="+str(folded)+"]"+" [transformed="+str(transformed)+"]"
|
title = title+" [folded="+str(folded)+"]"+" [transformed="+str(transformed)+"]"
|
||||||
if ylab:
|
print("SFS =", sfs)
|
||||||
plt.ylabel(ylab)
|
if transformed:
|
||||||
if xlab:
|
print("Transformed SFS ( n =",len(sfs_val), ") :", sfs_val)
|
||||||
plt.xlabel(xlab)
|
customgraphics.barplot(x = sfs.keys(), y= sfs_val, xlab = xlab, ylab = ylab, title = title)
|
||||||
plt.title(title)
|
|
||||||
plt.bar([i+1 for i in sfs.keys()], sfs_val)
|
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue