Google Docs + PaperPile = 提高生产力

Google Docs的优点:

1,便于协作,多个人可以同时(注意是同时)编辑一个文件,当然有道云笔记,腾讯文档、office 365也可以。
2,可以追踪修订,版本控制
3,虽然office的功能很强大,但平常用的功能,Google Docs都有
4,不用考虑文件同步的问题,有网就有文件,直接编辑即可,实在不行,拿个PAD连个键盘都行
5,可以用插件,比如PaperPile

PaperPile:

我是来到HK之后才接触PaperPile的,和Google Docs配合,插入文件,简直太爽了。我也用百度搜了下看是否有人介绍 PaperPile,很少有介绍的。

可能的原因是大陆用Google Docs不方便,进而不经常用PaperPile。PaperPile有个编辑公司提到 “科研写作在云端:协同写作工具”。这个形容真的是太贴切了,有了PaperPile,感觉文献管理无敌了。

1,插入文献:随便提供文献的网址、题目等,插入即可,简单的不要不要的

2,文献管理:有PaperPile的Chrome插件,随时搜集你喜欢的文献,如果能下载到PDF,PaperPile一并帮你下载好,当然这个需要占用你的Google Drive的空间。你可以设置文件夹,管理不同的文献

3,文献阅读:有时候文献阅读,需要高亮、备注什么的,要用到PDF阅读器,还要考虑电脑间的文件的同步问题,PaperPile最近开发了自己的PDF阅读器,在PaperPile中设置成它自己的阅读器打开文献即可。这样的好处是,只要有网和浏览器,你就可以随时的阅读和标记。这比Endnote什么的方便多了。

不截图了,就是想推荐这个组合,祝大家科研愉快。

PS:还可以加个Grammarly,检查下英文语法什么的,总之用工具提高自己的生产力呗。

#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
#####################################################################

Matlab error when running GISTIC

If you instal MCR (MATLAB Compiler Runtime) provided by GISTIC package, may have the following error. This error could disrupt GISTIC.
libGL error: failed to load driver: swrast

If this situation occurs, rename the file found at $MATLAB_ROOT/sys/os/glnxa64/libstdc++.so.6″ to “libstdc++.so.6.old”, This forces MATLAB to use the OS library.

Works for me.

Ref:
https://ww2.mathworks.cn/matlabcentral/answers/296999-libgl-error-unable-to-load-driver-in-ubuntu-16-04-while-running-matlab-r2013b

GISTIC2.0 facilitates sensitive and confident localization of the targets of focal somatic copy-number alteration in human cancers

Prepare a data frame for sample CNV data

If we want to cluster samples based on CNV data, a dataframe is needed. However, CNV segments in each sample are not the same. Maybe overlap or distinct. I think CNTools package migh solve this challenge. An example is shown as below. The result is a reduced segment data frame.

BiocManager::install("CNTools")
data("sampleData")
seg <- CNSeg(sampleData)
rdseg <- getRS(seg, by = "region", imput = FALSE, XY = FALSE, what = "mean") 
View(rdseg@rs)

Input dataframe has six columns (“ID”,”chrom”,”loc.start”,”loc.end”,”num.mark”,”seg.mean”) including 277 samples and 54825 segments.

The result can be got from rdseg@rs, like this

Cheers

Also, we can use CNRegions from iClusterPlus package.
CNregions(sampleData)

Ref: https://www.rdocumentation.org/packages/CNTools

https://rdrr.io/bioc/iClusterPlus/man/CNregions.html

#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责
#Author: Jason
#####################################################################

对Autoencoder(自编码器)的理解

通常数据的维度太大,可视化很难,也不利用模型的学习。有时候拿到数据做个PCA或者tSNE,就是把维度缩小到2维(当然也可以3维),便于看数据之间的关系。在机器学习中,Autoencoder也是一种降维的方式, Autoencoder输入层的神经元的数目和输出层的神经元的数目必须,而且要保证输出的结果尽最大可能和输入的结果一致。

图片来自网络

如上图所示,维度由大到小是decode过程,输出的结果可以从中间层经过encode得到,那么中间层保留了输入层的信息(因为输出层的结果从中间层得到),那么中间层的数据结果,就是降维后的结果,可以拿来做其他事情。 网络的复杂程度根据样本数设计。

无监督的聚类,便可以从中间层开始;数据的学习也可以从中间层开始。当输入层是多组学数据时,中间层便是融合后的结果。

FPKM转TPM

R code

fpkm2tpm = function(fpkm){
  exp(log(fpkm) - log(sum(fpkm)) + log(1e6))
}
tpm = apply(expMatrix, 2, fpkm2tpm)

If the expression matrix has NA value

fpkm2tpm <- function(fpkm){
  tpm <- exp(log(fpkm) - log(sum(fpkm,na.rm=T)) + log(1e6))
  tpm[which(is.na(tpm))] <- 0
  return(tpm)
}

TPMi=( FPKMi / sum(FPKMj ) * 10^6