LD衰减图绘制--PopLDdecay

大家好,我是邓飞。

GWAS中LD衰减图,可以形象的查看群体LD衰减的情况。

LD衰减是由于连锁不平衡所致,LD衰减速度在不同物种或者不同亚种中差异不同,通常用LD衰减到一般的距离来作为群体的衰减距离(还有其它计算方法),如果LD衰减很快,则在进行GWAS分析时需要更多的位点才能达到一定的精度(https://blog.csdn.net/yijiaobani/article/details/122812786)。另外,LD衰减也可以反应群体受选择的情况,一般来说,野生群体比驯化改良群体LD衰减快,异花授粉比自花授粉植物LD衰减快。

LD图分为单个群体和多个群体的图,今天使用软件PopLDdecay来实现一下。这个软件需要Linux系统。

目标图:

1. 数据

基因型数据是vcf数据,plink格式的数据可以转化为vcf数据。

  • plink数据
  • vcf数据
$ ls hebing.ped hebing.map
hebing.map  hebing.ped

上面示例中用的是plink数据,这里转化为vcf格式的数据:

plink --file hebing --recode vcf-iid --allow-extra-chr --chr-set 40 --out file

结果:

$ ls file.vcf
file.vcf

2. PopLDdecay软件安装

官网:https://github.com/BGI-shenzhen/PopLDdecay

安装方法:

        git clone https://github.com/hewm2008/PopLDdecay.git 
        cd PopLDdecay; chmod 755 configure; ./configure;
        make;
        mv PopLDdecay  bin/;    #     [rm *.o]

测试:

$ PopLDdecay

	Usage: PopLDDecay -InVCF  <in.vcf.gz>  -OutStat <out.stat>

		-InVCF         <str>     Input SNP VCF Format
		-InGenotype    <str>     Input SNP Genotype Format
		-OutStat       <str>     OutPut Stat Dist ~ r^2/D' File

		-SubPop        <str>     SubGroup Sample File List[ALLsample]
		-MaxDist       <int>     Max Distance (kb) between two SNP [300]
		-MAF           <float>   Min minor allele frequency filter [0.005]
		-Het           <float>   Max ratio of het allele filter [0.88]
		-Miss          <float>   Max ratio of miss allele filter [0.25]
		-EHH           <str>     To Run EHH Region decay set StartSite [NA]
		-OutFilterSNP            OutPut the final SNP to calculate
		-OutType       <int>     1: R^2 result 2: R^2 & D' result 3:PairWise LD Out[1]
		                         See the Help for more OutType [1-8] details

		-help                    Show more help [hewm2008 v3.40]

显示安装完成

3. 单个品种的绘制LD图

~/bin/PopLDdecay -InVCF file.vcf -OutStat LDdecay
~/bin/Plot_OnePop.pl -inFile LDdecay.stat.gz --output re1 -bin1 10 -bin2 100

这里面,我用的是芯片数据,位点较少,所以曲线不平滑,可以修改bin2=500,在进行绘图:

~/bin/Plot_OnePop.pl -inFile LDdecay.stat.gz --output re2 -bin1 10 -bin2 500

4. 多品种绘制LD图

如果要运行A,B,C三个品种的LD图,先要把ID整理为三个文件:

  • A.txt
  • B.txt
  • C.txt

文件:

$ ls *txt
A.txt  B.txt  C.txt  total_name.txt

分别针对于每个品种,计算:

~/bin/PopLDdecay -InVCF file.vcf -OutStat A.stat.gz -SubPop A.txt
~/bin/PopLDdecay -InVCF file.vcf -OutStat B.stat.gz -SubPop B.txt
~/bin/PopLDdecay -InVCF file.vcf -OutStat C.stat.gz -SubPop C.txt


结果文件:

$ ls *stat.gz
A.stat.gz  B.stat.gz  C.stat.gz

生成multi.list,格式为两列,第一列为文件名称,第二列为品种名称,内容为:

$ cat multi.list
A.stat.gz A
B.stat.gz B
C.stat.gz C


作图:

perl ~/bin/Plot_MultiPop.pl -inList multi.list --output re3 -bin1 10 -bin2 500


### 绘制音频波形图 为了绘制音频波形图,可以采用 Python 中的 `librosa` 和 `matplotlib` 库。这两个库提供了强大的功能用于加载和可视化音频文件。 #### 加载并显示静态音频波形图 当处理单个静止图像时,可以通过下面的方式读取音频文件,并利用 `librosa.display.waveshow()` 函数来展示其波形[^1]: ```python import librosa import librosa.display as ld import matplotlib.pyplot as plt audio_file = 'SA1.WAV' y, sr = librosa.load(audio_file) plt.figure(figsize=(14, 5)) ld.waveshow(y, sr=sr) plt.title('Waveform') plt.xlabel('Time (s)') plt.ylabel('Amplitude') plt.show() ``` 这段代码会生成指定音频文件的一个固定时间段内的波形表示形式。 #### 实现动态音频波形图 对于希望创建随时间变化而更新的动态图形的情况,则需要用到 `matplotlib.animation.FuncAnimation` 来定期刷新图表中的数据[^2][^4]。这里给出一个简化版的例子,该例子假设已经有一个方法可以从音频流中提取当前片段的数据: ```python from matplotlib import animation import numpy as np fig, ax = plt.subplots() def update(frame): # 假设 get_current_audio_chunk 是一个函数, # 它返回当前要显示的那一部分音频信号及其采样率。 chunk_data, sample_rate = get_current_audio_chunk() ax.clear() ld.waveshow(chunk_data, sr=sample_rate, ax=ax) ax.set_title(f'Dynamic Waveform at Frame {frame}') ax.set_xlabel('Time (s)') ax.set_ylabel('Amplitude') ani = animation.FuncAnimation(fig, update, frames=np.arange(0, total_frames), interval=update_interval_ms) plt.show() ``` 上述脚本构建了一个动画对象 (`FuncAnimation`) ,它会在每一帧调用给定的回调函数 `update` 。此函数负责清理旧的内容并重新绘制新的波形片断。 #### 获取MP3格式音频的振幅数据 如果目标是从 MP3 文件而不是 WAV 文件中获取原始振幅数值序列,可借助于其他专门针对不同编码格式的支持包,比如 PyDub 或者 pydub.audio_segment.AudioSegment 类来进行解码操作[^3]。之后再转成 NumPy 数组供后续分析或绘图使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值