搜索
查看: 48|回复: 0

机器学习&深度学习项目实战(二)

[复制链接]

3

主题

3

帖子

33

积分

新手上路

Rank: 1

积分
33
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 Yuan.Sh 于 2020-7-31 18:46 编辑

2.3染色体突变信息处理
        提取满足条件的染色体突变类型

        生存mutation 矩阵

        计算各个样本的肿瘤突变负荷

# mutation_df.query("Variant_Classification in @mutations") 这里的 query 类似于 R 语言里的 grep
# pivot_table 类似于 excel 中的数据透视表

### 染色体突变信息处理
  # 只提取满足条件的突变类型
    mutations = {
        'Frame_Shift_Del',
        'Frame_Shift_Ins',
        'In_Frame_Del',
        'In_Frame_Ins',
        'Missense_Mutation',
        'Nonsense_Mutation',
        'Nonstop_Mutation',
        'RNA',
        'Splice_Site',
        'Translation_Start_Site',
    }
   
    # query 提取满足条件的染色体变异
    # query 使用描述语句代替代码
    # 没什么屁用,就是让代码看的简洁一点
    mut_pivot = (mutation_df.query("Variant_Classification in @mutations")
                            .groupby(['SAMPLE_BARCODE', 'Chromosome',
                                      'Hugo_Symbol'])
                            .apply(len).reset_index()
                            .rename(columns={0: 'mutation'}))
    # 转换突变(0-1)矩阵
    mut_pivot = (mut_pivot.pivot_table(index='SAMPLE_BARCODE',
                                       columns='Hugo_Symbol', values='mutation',
                                       fill_value=0)
                          .astype(bool).astype(int))
    # 删除没有突变信息的样本
    freeze_barcodes = freeze_barcodes.intersection(set(mut_pivot.index))
    mut_pivot = mut_pivot.loc[freeze_barcodes, :]
    mut_pivot = mut_pivot.astype(int)
    mut_pivot.to_csv(mut_out_file, sep='\t', compression='gzip')
    # 计算基因突变负荷
    burden_df = mutation_df[mutation_df['Variant_Classification'].isin(mutations)]
    burden_df = burden_df.groupby('SAMPLE_BARCODE').apply(len)
    burden_df = np.log10(burden_df)
    burden_df = burden_df.loc[freeze_barcodes]
    burden_df = burden_df.fillna(0)
    burden_df = pd.DataFrame(burden_df, columns=['log10_mut'])
    burden_df.to_csv(burden_out_file, sep='\t')
    # Write out finalized and subset sample freeze file
    sample_freeze_df = sample_freeze_df[sample_freeze_df.SAMPLE_BARCODE
                                                        .isin(freeze_barcodes)]
    sample_freeze_df.to_csv(freeze_out_file, sep='\t')
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-8-4 19:18 , Processed in 0.050069 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.