MrLithium’s blog: Synergy and Serial Number Activation Key for SSL security – Reverse Engineering the source code (easy)

Synergy and Serial Number Activation Key for SSL security – Reverse Engineering the source code (easy)

Intro:

Synergy is a great program, marketed and sold by a company called Symless. It’s like a network KVM w/ drag&drop files and clipboard support so you can use multiple computers at once. Point being, it also supports SSL encryption – but not for free.
Theres a Basic license for $19 (which from what I can tell does exactly nothing extra from what you already get without paying)
And a Pro license for $29. Pro gives full SSL (TLS through OpenSSL) AES-256 bit security for your connections. AES256-GCM-SHA384 TLSv1.2You can’t even download the free version from their website anymore. But it is Open Source @ https://github.com/symless/synergy-core
EDIT: They have since moved to calling it “Synergy-Core” as Open Source to distinguish from the paid.It doesnt matter whether you download binaries somewhere (current version is 1.88 stable as of this writing), or compile it yourself (pretty difficult) – because it ends up installing essentially an unregistered, not activated version without SSL.But we can fix that…. (without even tampering with the program file)!

Reading the Code:

Since the source code is public, we can reverse engineer their pointless activation scheme. To reverse engineer it, start by heading to the source: https://github.com/symless/synergy-core/
You can look through the source code and you will find this;https://github.com/symless/synergy-core/blob/master/src/lib/shared/SerialKey.cpp#L126 = The SerialKey::toString() definition neatly shows us the basic format of the key.https://github.com/symless/synergy-core/blob/master/src/lib/shared/SerialKey.cpp#L226 =  The SerialKey::parse() function actually has an example key in the comments, and is showing the validation routine.This is what we can gather: a string needs to begin and end with a {  } and has 8 semi-colon ; seperated fields (or 9 but we dont want that one – thats for starting a trial of pro). For the last two fields we put 0 for unlimited.Such as :
{v1;pro;YOURNAME;#userLimit#;EMAIL;BUSINESSNAME;0;0}However you cant just paste that in, it needs to be encoded into hex….

Cracking the Code:

I’ve made it easy, automatic, non-intrusive, anonymous, and not sketchy at all. Visit this online C++ compiler and hit the “RUN” button to run the code (in the cloud) that I’ve created, (based on the source code). The code runs in the cloud not your machine and is totally safe.  Feed it any values you want for name/email – they dont even have to be real!:
Activation Key Number Generator Script Serial  for Synergy http://cpp.sh/3mjw3NOW you can paste that Hex code in. Voila, its activated.

Afterword:

You should still donate the company some money when you get the chance so they can continue to provide this great software AND keep it open source.Note= both machines need to have the license key for SSL handshaking to work, and they both need to be on the same version (or close). The OpenSSL accept fingerprint window will pop up, thats how you know its working.Proof of Concept Picture:
https://puu.sh/w9y0h/b67ecae2fb.png

Theres no way they can know, I checked. Unless they read this 🙂 If they do, PM me.

点击数:0

6、无重复差异基因分析(edgeR包的使用)

6、无重复差异基因分析(edgeR包的使用)

莫讠

12020.03.03 16:20:50字数 1,446阅读 1,648

1)简介

edgeR作用对象是count文件,rows 代表基因,行代表文库,count代表的是比对到每个基因的reads数目。它主要关注的是差异表达分析,而不是定量基因表达水平。

edgeR works on a table of integer read counts, with rows corresponding to genes and columns to independent libraries. The counts represent the total number of reads aligning to each gene (or other genomic locus).edgeR is concerned with differential expression analysis rather than with the quantification of expression levels. It is concerned with relative changes in expression levels between conditions,but not directly with estimating absolute expression levels.

edgeR作用的是真实的比对统计,因此不建议用预测的转录本

Note that edgeR is designed to work with actual read counts. We not recommend that predicted transcript abundances are input the edgeR in place of actual counts.

归一化原因:

技术原因影响差异表达分析:
1)Sequencing depth:统计测序深度(即代表的是library size);
2)RNA composition:个别异常高表达基因导致其它基因采样不足
3)GC content: sample-specific effects for GC-content can be detected
4)sample-specific effects for gene length have been detected

注意:edgeR必须是原始表达量,而不能是rpkm等矫正过的。
Note that normalization in edgeR is model-based, and the original read counts are not themselves transformed. This means that users should not transform the read counts in any way before inputing them to edgeR. For example, users should not enter RPKM or FPKM values to edgeR in place of read counts. Such quantities will prevent edgeR from correctly estimating the mean-variance relationship in the data, which is a crucial to the statistical strategies underlying edgeR.Similarly, users should not add artificial values to the counts before inputing them to edgeR.
个人是不太推荐没有重复的差异表达分析,因为毕竟统计学上的p值是为了证明两个样本的差异是真实存在而不是抽样误差导致的,
因此每当别人提问的时候, 我个人的建议就是定性看看倍数变化吧. 但是如果真的强行要算p值, 其实也不是不行, edgeR就是一种选择.

2)、首先安装edgeR 包

#如果没有安装BiocMaRnager则先安装BiocManager,之后通过BiocManager安装edgeR包

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("edgeR")

1234567

安装结束之后开始处理文件

3)矩阵构建及差异分析

需要构建2个矩阵:1、表达矩阵;2、分组矩阵( 实验设计);

3.1 表达矩阵

3.11 读取文件

# 首先读取counts文件之后查看count文件前6行
> rawdata <- read.csv(file = "C://Users/My/Desktop/diff_name",header = T,stringsAsFactors = F)
# 查看读取的diff_name文件
> head(rawdata)
  X    ensembl_gene_id               gene_id control_W55 test_K54 external_gene_name
1 1 ENSMUSG00000000001  ENSMUSG00000000001.4           7       11              Gnai3
2 2 ENSMUSG00000000003 ENSMUSG00000000003.15           0        0               Pbsn
3 3 ENSMUSG00000000028 ENSMUSG00000000028.15           1        0              Cdc45
4 4 ENSMUSG00000000031 ENSMUSG00000000031.16           0        2                H19
5 5 ENSMUSG00000000037 ENSMUSG00000000037.17           0        0              Scml2
6 6 ENSMUSG00000000049 ENSMUSG00000000049.11          54       33               Apoh
1234567891011

读取完数据之后我们先预处理一下数据,比如我只想要ensembl_gene_id、control_w55、tese_k54、external_gene_name这几列,并调整一下顺序。

> swap_rawdata <- cbind(rawdata$ensembl_gene_id,rawdata$external_gene_name,rawdata$control_W55,rawdata$test_K54)
> head(swap_rawdata)
     [,1]                 [,2]    [,3] [,4]
[1,] "ENSMUSG00000000001" "Gnai3" "7"  "11"
[2,] "ENSMUSG00000000003" "Pbsn"  "0"  "0" 
[3,] "ENSMUSG00000000028" "Cdc45" "1"  "0" 
[4,] "ENSMUSG00000000031" "H19"   "0"  "2" 
[5,] "ENSMUSG00000000037" "Scml2" "0"  "0" 
[6,] "ENSMUSG00000000049" "Apoh"  "54" "33"
# 得到的这个swap_rawdata是一个matrix,如果想要让其变为data frame
> swap_rawdata <- data.frame(swap_rawdata)
# 查看一下是否转化成功
> head(swap_rawdata)
     ensembl_gene_id external_gene_name control_W55 test_K54
1 ENSMUSG00000000001              Gnai3           7       11
2 ENSMUSG00000000003               Pbsn           0        0
3 ENSMUSG00000000028              Cdc45           1        0
4 ENSMUSG00000000031                H19           0        2
5 ENSMUSG00000000037              Scml2           0        0
6 ENSMUSG00000000049               Apoh          54       33
# 转化完转化先存一份csv文件在电脑里,便于之后用电脑查看
> write.csv(x = swap_rawdata,file = "C://Users/My/Desktop/swap_rawdata.csv")
# 存完之后直接从电脑导入你刚存的文件,这样做可以避免出现numeric数据框变成factor形式
> swap_rawdata <- read.table("swap_rawdata.csv",header = T,sep = ",")
# 查看
> head(swap_rawdata)
  X    ensembl_gene_id external_gene_name control_W55 test_K54
1 1 ENSMUSG00000000001              Gnai3           7       11
2 2 ENSMUSG00000000003               Pbsn           0        0
3 3 ENSMUSG00000000028              Cdc45           1        0
4 4 ENSMUSG00000000031                H19           0        2
5 5 ENSMUSG00000000037              Scml2           0        0
6 6 ENSMUSG00000000049               Apoh          54       33
> data.class(swap_rawdata[1,1])
12345678910111213141516171819202122232425262728293031323334

3.2 接着构建DGEList对象

这里因为已经有rawdata的count文件,因此直接用DGEList()函数就行了,否则要用readDGE()函数

# 首先载入edgeR 包
> library(edgeR)
# 构建DGEList
> group <- 1:2
> y <- DGEList(counts = swap_rawdata[,4:5],genes = swap_rawdata[,2:3],group = group)
# 查看构建完y的信息
> y
1234567

查看构建DGElist的运行结果:

DGEList对象主要有三部分:

1、counts矩阵:包含的是整数counts;

2、samples数据框:包含的是文库(sample)信息。包含 lib.size列 :for the library size (sequencing depth) for each sample,如果不自定义, the library sizes will be computed from the column sums of the counts。其中还有一个group列,用于指定每个sample组信息

3、一个可选的数据框genes:gene的注释信息

第二步: 过滤 low counts数据。与DESeq2的预过滤不同,DESeq2的预过滤只是为了改善后续运算性能,在运行过程中依旧会自动处理low count数据,edgeR需要在分析前就要排除那些low count数据,而且非常严格。从生物学角度,有生物学意义的基因的表达量必须高于某一个阈值。从统计学角度上, low count的数据不太可能有显著性差异,而且在多重试验矫正阶段还会拖后腿。

数据过滤

由于原来的表达量矩阵基因数太大, 可能存在某些基因根本没有表达, 因此需要预先过滤

> keep <- rowSums(cpm(y)>1) >= 1
> y <- y[keep, , keep.lib.sizes=FALSE]
> y
123

这部分代码的意思指的是保留在至少在一个样本里有表达的基因(CPM > 1)。 基因数就从原来的55318变为15868

标准化

考虑到测序深度不同, 我们需要对其进行标准化, 避免文库大小不同导致的分析误差.

edgeR里默认采用TMM(trimmed mean of M-values) 对配对样本进行标准化,用到的函数是calcNormFactors

> y <- calcNormFactors(y)
1

执行结果:

差异表达分析

不同差异表达分析工具的目标就是预测出dispersion(离散值), 有了离散值就能够计算p值. 那么dispersion怎么计算呢? edgeR给了几个方法

根据经验给定一个值(BCV, square-root-dispersion). edgeR给的建议是, 如果你是人类数据, 且实验做的很好(无过多的其他因素影响), 设置为0.4, 如果是遗传上相似的模式物种(这里为小鼠), 设置为0.1 (查询edgeR的bioconductor包所得)
Simply pick a reasonable dispersion value, based on your experience with similar data,and use that for exactTest or glmFit. Typical values for the common BCV (square-root dispersion) for datasets arising from well-controlled experiments are 0.4 for human data,0.1 for data on genetically identical model organisms or 0.01 for technical replicates.

> y_bcv <- y
# 因为本次的数据使用的是小鼠的数据,所以使用0.1
> bcv <- 0.1
> et <- exactTest(y_bcv, dispersion = bcv ^ 2)
> gene1 <- decideTestsDGE(et, p.value = 0.05, lfc = 0)
> head(gene1)
> summary(gene1)
1234567

执行结果:

由统计结果可知,下调的基因为816个,上调的基因为572个

如果觉得觉得基因较多的话,可以上调bcv的值

> y_bcv <- y
> bcv <- 0.2
> et2 <- exactTest(y_bcv, dispersion = bcv ^ 2)
> gene2 <- decideTestsDGE(et2, p.value = 0.05, lfc = 0)
> summary(gene2)
12345

执行结果:

由统计结果可知,下调的基因为377个,上调的基因为221个
与之前的结果相比,的确已经减少很多

将结果整理成excel表

# 改一下gene1的名称
> colnames(gene1) <- "Signifi"
# 组合将所需要的数据组成一个新的data.frame
> results <- cbind(y$genes,y$counts,et$table,gene1)
> head(results)
# 将新生成的results数据框写成一个excel数据表
> write.csv(x = results,file = "C://Users/My/Desktop/DEresult.csv",row.names = F)

12345678

执行结果:

组合成的新的data.frame表

生成的excel表可以将down expressed 和 up expressed基因分开

生成的excel

参考文献:https://blog.csdn.net/u012110870/article/details/102804557
https://www.bioconductor.org/packages/release/bioc/vignettes/edgeR/inst/doc/edgeRUsersGuide.pdf

16人点赞

生信学习

更多精彩内容下载简书APP

“随意”

还没有人赞赏,支持一下

莫讠科学院小硕一枚
细胞生物学专业
爱好摄影
个人blog:
www.wenju.tech

总资产80 (约4.27元)共写了3.2W字获得463个赞共531个粉丝

点击数:0

使用edgeR进行无重复差异表达分析_xuzhougeng blog-CSDN博客

使用edgeR进行无重复差异表达分析

写这篇文章一部分原因是填2年前的一个坑 转录组入门(7):差异表达分析. 另一部分原因是GQ最近又在搞一波无重复的差异表达分析, 所以专门去学了edgeR

我个人是不太推荐没有重复的差异表达分析,毕竟统计学上的p值是为了证明两个样本的差异是真实存在而不是抽样误差导致, 但是你单个样本如何计算变异呢?

因此每当别人提问的时候, 我个人的建议就是定性看看倍数变化吧. 但是如果真的强行要算p值, 其实也不是不行, edgeR就是一种选择.

环境准备

我们需要安装两个R包,一个是edgeR, 一个是airway. 其中airway是一个数据集包, 功能就是提供一个用于分析的数据

1if (!requireNamespace("BiocManager", quietly = TRUE))2    install.packages("BiocManager")3 4if (!requireNamespace("edgeR", quietly = TRUE))5    BiocManager::install("edgeR")6 7if (!requireNamespace("airway", quietly = TRUE))8    BiocManager::install("airway")9 

加载R包

1library(edgeR)2library(airway)

构建DGEList

DGEList是edgeR分析流程中必须的对象. 构建该对象需要提供两类信息: 表达量矩阵和分组信息.

为了方便大家重复,我们这里的数据来自于airway. 对于你自己的数据, 可以用read.table等函数进行导入.

1data("airway")2expr_matrix <- assay(airway)3meta_info <- colData(airway)

expr_matrix 是一个 64102 个基因和8个样本的矩阵.meta_info 里存放的是样本的元信息, 记录样本的处理, 来源等信息. 我们这里就用一部分数据, 也就是前两列构建DGEList对象

1counts <- expr_matrix[,1:2]2group <- 1:23y <- DGEList(counts=counts, group = group)

数据过滤

由于原来的表达量矩阵基因数太大, 可能存在某些基因根本没有表达, 因此需要预先过滤

1keep <- rowSums(cpm(y)>1) >= 12y <- y[keep, , keep.lib.sizes=FALSE]3

这部分代码的意思指的是保留在至少在一个样本里有表达的基因(CPM > 1)。 基因数就从原来的64102降到14756

标准化

考虑到测序深度不同, 我们需要对其进行标准化, 避免文库大小不同导致的分析误差.

edgeR里默认采用TMM(trimmed mean of M-values) 对配对样本进行标准化,用到的函数是calcNormFactors

y <- calcNormFactors(y)

差异表达分析

不同差异表达分析工具的目标就是预测出dispersion(离散值), 有了离散值就能够计算p值. 那么dispersion怎么计算呢? edgeR给了几个方法

方法一: 根据经验给定一个值(BCV, square-root-dispersion). edgeR给的建议是, 如果你是人类数据, 且实验做的很好(无过多的其他因素影响), 设置为0.4, 如果是遗传上相似的模式物种, 设置为0.1, 如果是技术重复, 那么设置为0.01

这里用的数据是人类, 此处设置为 0.4

1y_bcv <- y2bcv <- 0.43et <- exactTest(y_bcv, dispersion = bcv ^ 2)

我们用decideTestsDGE看下有多少基因上调, 多少基因下调. 设置p.value=0.05

1gene1 <- decideTestsDGE(et, p.value = 0.05, lfc = 0)2summary(gene1)3 4         2-15Down       46NotSig 147337Up        19

差异基因少的可怜, 只有4+19个。我们可以尝试调整下BCV

1y_bcv <- y2bcv <- 0.23et2 <- exactTest(y_bcv, dispersion = bcv ^ 2)4gene2 <- decideTestsDGE(et2, p.value = 0.05, lfc = 0)5summary(gene2)6 7         2-18Down     1599NotSig 1438010Up       217

这个时候的差异基因上升到了159 + 217个.

方法2: 根据已知一些不会发生改变的基因推测dispersion. 假设你已经知道了一些基因是不会发生变化,例如管家基因,那么我们就可以通过它们来预测dispersion.

先复制原来对象的一份拷贝.

1y1 <- y2y1$samples$group <- 1

然后你需要提供一个变量,housekeeping存放着已知不改变的基因名,例如管家基因中,然后进行dispersion估计

这里需要一个housekeeping的向量, 来自教程的最后部分

y0 <- estimateDisp(y1[housekeeping,], trend="none", tagwise=FALSE)

最后加入到原来的数据集中进行分析。

1y$common.dispersion <- y0$common.dispersion2design <-  model.matrix(~group)3fit <- glmFit(y, design)4lrt <- glmLRT(fit)

这个时候我们再看下差异基因, 是341 + 388

1gene3 <- decideTestsDGE(lrt, p.value = 0.05, lfc = 0)2summary(gene3)3 4       group5Down     3416NotSig 140277Up       388

说实话, 好像和预先设置的没啥区别. 但是我们用韦恩图比较下

1library(gplots)2venn(list(gene1=names(gene1@.Data[gene1@.Data == 1,]),3          gene2=names(gene1@.Data[gene2@.Data == 1,]),4          gene3=names(gene1@.Data[gene3@.Data == 1,])5          ))

上调基因

1venn(list(gene1=names(gene1@.Data[gene1@.Data == -1,]),2          gene2=names(gene2@.Data[gene2@.Data == -1,]),3          gene3=names(gene3@.Data[gene3@.Data == -1,])4          ))

下调基因

从中可以发现根据已知不变基因预测dispersion得到的差异基因最多。 还可以画个火山图看下

1library(ggplot2)2df <- lrt$table3ggplot(df, aes(x=logFC, y=-log10(df$PValue)) ) +4  geom_point() +5  ylab("-log10(p value)") +6  theme_bw()7

火山图

和有重复表达进行比较

由于我们的数据集原来是有重复的,那么我们就可以比较下无重复和有重复之间会相差多少基因

1group <- meta_info$dex2y_rep <- DGEList(counts=expr_matrix, group = group)3keep <- rowSums(cpm(y_rep)>1) >= 54y_rep <- y_rep[keep, , keep.lib.sizes=FALSE]5y_rep <- calcNormFactors(y_rep)6design <- model.matrix(~group)7y_rep <- estimateDisp(y_rep, design = design)8fit <- glmQLFit(y_rep, design)9qlf.2vs1 <- glmQLFTest(fit, coef=2)

我们看下差异基因的数目, 是1050 + 869, 明显多于之前.

1res <- decideTestsDGE(qlf.2vs1, p.value = 0.05, lfc = 0)2summary(res)

将我们有重复的前100差异基因和无重复的前100差异基因进行比较

1c1 <- row.names(topTags(et2,n = 100 ))2c2 <- row.names(topTags(qlf.2vs1, n = 100 ))3intersect_gene <- intersect(c1,c2)

我们将这些交集基因标记在有重复的火山图上

1library(ggplot2)2library(ggrepel)3data <- qlf.2vs1$table4data$significant <- as.factor(data$PValue<0.05 & abs(data$logFC) > 1)5 6data2 <- data[intersect_gene,]7data2$geneID <- rownames(data2)8 9 10p <- ggplot(data=data, aes(x=logFC, y =-log10(PValue),color=significant)) +11 geom_point(alpha=0.8, size=1.2)+12 scale_color_manual(values =c("black","red"))+13 labs(title="Volcanoplot", x="log2 (fold change)",y="-log10 (q-value)")+14 theme(plot.title = element_text(hjust = 0.4))+15 geom_hline(yintercept = -log10(0.05),lty=4,lwd=0.6,alpha=0.8)+16 geom_vline(xintercept = c(1,-1),lty=4,lwd=0.6,alpha=0.8)+17 #theme(legend.position='none')18 theme_bw()+19 theme(panel.border = element_blank(),20 panel.grid.major = element_blank(),21 panel.grid.minor = element_blank(),22 axis.line = element_line(colour = "black")) +23 geom_text(data=data2, aes(label=geneID),col="red",alpha = 1) + 24 geom_text_repel(data=data2, aes(label=geneID),col="black",alpha = 0.8)25 26print(p)

火山图2

好消息是无重复情况下的确能找到一些明显差异表达的基因,但是坏消息是改变不怎么明显的重要基因可能就会因为你设置一个阈值被筛选掉。因此无重复的分析还是能做的,就是阈值需要放宽些。

下面的代码是用来提取一些没有显著变化的基因作为之前说的housekeeping

1nosig <- names(res@.Data[res@.Data == 0,])2gene_name <- sample(nosig,500)3# y1来自上面无重复差异表达代码4y1_gene <- rownames(y1)5housekeeping <- which(y1_gene %in% gene_name)

本文还可在http://xuzhougeng.top/阅读

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

扫码即刻交流

点击数:0

不放过任何实验数据!教你如何充分利用单一样本:无重复RNAseq样本差异分析_Gfold

不放过任何实验数据!教你如何充分利用单一样本:无重复RNAseq样本差异分析

2019-04-19 11:00

各位医学方的朋友,大家好。

今天的推文主要是针对RNAseq数据处理这块,现在转录组的分析非常非常普遍,在大家的课题中,都会先去做一波RNAseq,而该分析最关键的步骤就是寻找不同的组别的差异表达基因。

大家都知道,生物学实验要求至少3个生物学重复,对于有生物学重复的数据(并且一般的转录组数据都会要求生物学重复,理论上我们做转录组测序,需要的样本量每组至少为3个生物学重复),这个处理起来就很合适,可是不知道大家有没有遇到这种问题,你恰巧拿到的数据是无重复样本,真是屋漏偏遇连夜雨,就是你的数据每个类别只有一个样本,这个时候怎么办呢?是把这个样本丢掉,装作没看见?

然而,你的boss不同意怎么办呢?真的丢掉这个数据吗?当然,还是有解决办法的。这个时候,不要慌,稳住,那我们就掏出一把利剑—Gfold软件,这个软件目前认为是做没有生物学重复样本首选的软件。

链接地址:

https://zhanglab.tongji.edu.cn/softwares/GFOLD/index.html

目前的版本是1.1.4,可以看到红色框内部指出gfold软件特别适合当没有生物学重复的情况下的RNAseq的数据分析。该软件称尤其适合做无重复样本的差异分析,它对foldchange 的计算考虑到posterior distribution,即克服了pvalue评估显著性的缺点,同时也克服了 fold change 在评估低counts 数的gene时的缺点。

软件功能

主要是5大功能如下:

分别是:

① read count计数和基因排序

② read count计数

③ 无重复样本的差异表达基因的识别

④ 两组样本均含有重复样本的差异表达基因的识别

⑤ 只有一组样本含有重复的差异表达基因识别。

那我们今天主要是针对无重复样本的差异表达基因的识别,使用的便是该软件的第三个功能,也是该软件用的相对较多的功能。

软件安装

下面我们看一下这个软件,怎么安装呢?

首先需要说明一点,这个软件不支持Windows 版本,是基于linux的一个安装软件,这个时候需要你开启你的linux服务器来安装这个软件了。

STEP1:

安装gsl软件 (安装gfold之前,要保证gsl软件先安装上,否则会报错)

下载gsl,用wget:

解压该软件:

解压之后,会出现gsl -2.2文件夹

接着进入该文件夹 ,命令如下:

红色框内为gsl-2.2的路径,你需要替换成自己的就可以了,接着用make install 安装

STEP2:

安装gfold软件

解压之后如下:生成一个文件名为feeldead-gfold-1921fd6dc668的文件夹

进入该文件夹:

接着就是比较关键的步骤,需要键入这样的命令:

这个时候,虽然会出现warning ,但是没关系,就像R里面的warning一样,我们选择忽略就行了,因为已经安装好了,有可执行文件gfold了。

STEP3:

判断该软件是否安装成功 ./gfold –h

在feeldead-gfold-1921fd6dc668文件夹下,我们输入./gfold –h 查看文件时都安装成功。

出现下面这个界面,那就说明我们成功的安装了该软件。

差异比较

下面我们介绍我们的重头戏,有了软件,怎么做单个样本的差异比较呢?

首先需要做一个说明,就是输入文件需要是5列信息,分别是列依次为GeneSymbol、GeneName、Read Count、Gene exon length、RPKM。分别表示需要输入的基因的Symbol名,基因名,基因在该样本的Count数,基因的外显子长度以及RPKM值。如果我们只是计算差异分析,我们只需要保证Read Count数据的准确性,其他的两列信息可以自己随便填充数值,但是不可以省略,否则软件会报错。

准备文件:

我们需要准备两个文件,一个是control组,一个是case组别,即我们需要比较这两个组别的差异。

首先,我们新建一个文件夹test,用于存储我们的测试数据。

便会出现新的文件夹,键入ls –l的命令,如下:

接着我们进入该文件夹,便会看到我们存放的两个需要用于比对的文件,一个代表case组,一个代表control组别:

接着我们查看了每个文件的前十行,命令和结果如下:

(我们这里加了一个|column –t的参数,保证显示的效果为列对其)

求差异:

磨刀霍霍向猪羊。既然我们的万事俱备了,那就掏出命令求差异,毕竟,我等软件只为了做这件事。

这个时候,我们先找到核武器在哪?还记得不?就是那个一连串难记的文件夹(红色框框):

接着,就是启动它,如何启动呢?

当这些出现的时候,说明gfold软件可以被使用。

学习官网资料,告诉我们,求两个样本的差异可以这样的一条命令计算:

gfold diff -s1 sample1-s2 sample2-o sample1VSsample2.diff

diff 参数代表该软件用于计算差异, -s1 代表需要输入的第一个样本, -s2代表需要输入的第二个样本, -o即output代表结果的输出文件

此刻我们替换成我们的样本,如下:

红色框框就是我们的命令行,箭头所指代表软件开始运行工作了。

运行完毕,就会提示你 Job diff is DONE:

ok,那我们查看一下test文件夹下的文件:

我们看到就出现了caseVScontrol.diff的文件。

接着我们查看一下该文件的前100行信息

主要一共7列信息,前两列没什么可说,就是gene symbol和gene name,第三列是GFOLD值,相当于log2(Fold Change),该值等于0的基因则记为非差异基因,非0的值才是差异基因,E-FDR是基于重复的Empirical FDR,因此无重复样本的经验FDR均为1。Log2fdc以及后面的RPKM列可以忽略考虑,因为最开始的exon的长度,我们是给定的是一个虚拟的数据。

所以真正的确定差异是否显著,主要是看GFOLD值,GFOLD>0,代表case组中高表达,GFOLD<0,代表case组中低表达。

筛选差异:

导入excel 筛选差异,完美收官。

你会发现,在18163个基因中,你找到了5017个差异基因,差异太多怎么办?设定一个cutoff, 比如我们设定<-0.3或者大于0.3,结果就是:

就会看到差异数目变为1273个,这个数目还是可以接受的。

Ok,今天的推文,我们分享了如何在就在liunx环境下gfold软件的安装,如何用该软件实现单个样本的差异比较,下次碰到孤独的样本,不要轻易放弃,还是可以前处理一下的。

最后,欢迎大家留言,有不正确的地方,也请大家留言指正。

END

征 稿 启 事

「医学方」现正式向粉丝们公开征稿!内容须原创首发,与科研相关,一经采用,会奉上丰厚稿酬(300-2000元),详情请戳。

“医学方”始终致力于服务“医学人”,将最前沿、最有价值的临床、科研原创文章推送给各位临床医师、科研人员。返回搜狐,查看更多

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。

阅读 (3838)

.

点击数:0

用TCGA数据库分析癌症和癌旁组织的表达差异 – 吴增丁 – 博客园

用TCGA数据库分析癌症和癌旁组织的表达差异

上周收到一条求助信息:“如何用TCGA数据库分析LINC00152在卵巢癌与正常组织的的表达差异?”

所以以这个题目为记录分析过程如下:

一、下载数据

  a)进入网站https://cancergenome.nih.gov/   网页截图如下:

  b)进入数据下载 Launch Data Portal   ,截图如下:

  进入数据下载接口后,有Projects Exploration Analysis Repository 四个栏目,我们数据下载可进入Repository菜单栏,截图如下:

  网页分成左右两边,左边主要是提供用户数据选择和过滤的窗口,右边是根据用户的选择后显示及其统计结果。左边选择分为 Cases  和 Files两大类。

  根据我们的研究,目的是要看LINC RNA在卵巢癌和正常组织的表达差异,所以我们在左边的栏目的Cases下选择Ovary,在Files 下选择 RNA-seq ,这些选项选择完毕,会出现上面的那张截图

 c)下载路径文件

 选好文件后,如上图将文件加入购物车,截图如下:

然后点击右上角的Cart,出现如下截图:

点击Sample sheet之后,包含所需文件目录的.tsv文件gdc_sample_sheet.2018-05-22.tsv就可以下载了,放到对应的目录下。

用NotePad打开文件如下:

 

d) 在linux下批量下载文件

  将该文件放在linux的   /home/zdwu/rnaseq/11_source_data  目录下,并在该目录下批量下载数据,代码如下:

cat gdc_sample_sheet.20180522.tsv | while read line

do

echo https://portal.gdc.cancer.gov/files/${line:0:(36-0)}

wget -c https://gdc-api.nci.nih.gov/data/${line:0:(36-0)} -O ${line:167:(184-167)}'.htseq.counts.gz'

done

下载完毕后查看文件如下:

 

用如下命令,确认文件个数是否完整,完整后数据备用。

ls A-* | wc -l

 

二、数据分析

   a)数据解压

     用命令行 解压,解压后得到可读的数据。

zdwu@ubuntu://home/zdwu/rnaseq/11_source_data/ovary$ gunzip *counts

     b)找出Linc00152的表达量

     由于从TCGA下载的数据里的基因明都是ensemble ID,所以需要 从NCBI 查找Linc00152对应的 ensemble ID,找出的结果是Ensembl:ENSG00000222041

  

  注意:此处只有一个基因,所用手动从NCBI 找出ensemble ID是简单的,但是如果看的是大量的基因,那这将会非常通过,这时就需要通过ID转换文件来编程转换。

  基因ID 转换文件的下载地址 :ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/   ,里面有gene2ensemble.gz   gene2accession.gz    gene2go.gz 等文件可以下载,根据这些文件,写个小脚本就可以批量转换了。

  c)整合多样本的LINC00152基因表达counts

zdwu@ubuntu://home/zdwu/rnaseq/11_source_data/ovary$ for file in *counts

> do

> echo ${file:0:12} >> ovary_linc00152.txt

> echo ${file:13🙁1613)} >> ovary_linc00152.csv

> cat ${file} | grep "ENSG00000222041" >> ovary_linc00152.csv

> done

最后将得到的ovary_linc00152.csv 文件拷贝至于windows电脑,截图如下:

这是没有normalized的数据,如果需要不同样本之间比较的话进行normalized,再简单的统计不同组之间样本的 t-test。分析完毕。

 

点击数:0

往复式运动镍钛器械的研究进展及临床应用_KQ88口腔材料网

往复式运动镍钛器械的研究进展及临床应用

2018-9-12 14:09
 来源:现代口腔医学杂志

作者:代鑫鹏 李春年 朱亚慧
阅读量:19248

    根管预备是根管治疗中的重要步骤,其目的是彻底地去除根管内的感染物,制备出有利于冲洗、封药和充填的连续形态。传统的不锈钢器械弹性模量大,柔韧性差,对于过度弯曲和细小钙化根管,有一定的局限性,当器械在弯曲根管内运动时,易将根管拉直或使根管形态改变,可能出现台阶、根管偏移甚至侧壁穿孔。

    镍钛合金由于其高弹性和抗折性首先应用于口腔正畸治疗,自1988年Johnsen发明Profile后,机用镍钛器械不断发展,在材料、设计、运动形式、加工工艺等方面不断创新,逐步取代手用不锈钢器械,成为根管预备器械的主流。1985年,Roane等提出“平衡力”的概念,采取顺时针与逆时针交替运动的方式使用不锈钢K锉进行弯曲根管的预备,大量国内外文献表明,使用平衡力法预备根管,可有效减少根管偏移的发生,取得较好的根管成形效果。

    2008年,Yared首次使用ProTaperF2单支锉通过平衡力法,顺时针144度,逆时针72度进行根管预备,形成了往复式镍钛器械的雏形。2011年Reciproc(VDW,德国)和WaveOne(登士柏,瑞士)两款往复式运动镍钛器械面世,与连续旋转器械对牙本质进行切割、释放器械所受应力的方式均不相同,提高了器械的安全性能。

    1.往复式运动镍钛器械的研究进展

    1)根管成形能力

    根管原始形态的保持是根管治疗成功的基础。临床上引起根管偏移的原因可以分为两类:①根管的解剖形态,越弯曲的的根管,器械引起根管偏移的可能性越大;②根管预备器械以及方法的选择。MaiaFilhoEM等分别使用Reciproc,WaveOne和ProTaperNext镍钛系统对弯曲度约为40°的树脂模拟根管进行预备,比较预备前后弯曲度的变化,结果显示所有仪器均有改变根管原始弯曲的趋势,但各组仪器间无明显差异。

    Burklein S等报道,80个弯曲度在25~39°之间的离体磨牙根管,随机分为4组,分别使用Reciproc,WaveOne,Mtwo,ProTaper通过改良的冠向下法预备根尖至35#。计算机图像分析根管预备前后的X光片,比较预备前后的根管弯曲度变化,结果显示四组镍钛系统均能较好的保持根管原始弯曲度,且各组间无显著差异。

    近年来,经过特殊热处理的CM合金开始在镍钛器械上应用,CM合金制成的镍钛器械具有极佳的韧性,室温下无记忆能力,预弯后不回弹,最大程度的适应根管形态。Marceliano-AlvesMF等应用micro-CT比较了Reciproc、WaveOne和HyflexCM系统在离体磨牙近中根管的中心定位能力,结果显示三组镍钛器械均能较好的保持根管原始形态,各组间无显著差异。研究表明,无论是在树脂模块还是离体牙上,往复式运动镍钛器械均展示出了良好的根管成形能力。

    2)牙本质微裂的产生

    镍钛器械在根管预备过程中,在牙根的不同水平可能出现肉眼以及X线片不易观察到的牙本质微裂。牙本质微裂一旦产生,可能会导致细菌定植在此处,产生微渗漏,甚至引起牙根纵折。Ashwinkumar V等,选择150颗下颌第一磨牙,30颗作为对照组,不做任何处理,剩余120颗随机分为四组,分别使用镍钛手用K锉,手用ProTaper,机用ProTaper和WaveOne对近中根管进行预备,然后距根尖3,6,9mm水平切盘,利用扫描电镜观察牙本质微裂情况。结果显示镍钛手用K锉在根管任何部位均无微裂纹产生,ProTaper组产生最多的微裂纹,与其余组有统计学差异,手用ProTaper和WaveOne同样有微裂纹产生,两组间无统计学差异。

    镍钛器械的大锥度设计有利于对根管内的牙髓、细菌及玷污层彻底清除,形成利于冲洗、消毒和充填的连续形态。但随着锥度的增大,根管壁切削也会增多,发生牙本质微裂的概率也相应增大。Kansal R等选择120颗下颌前磨牙,30颗作为对照组,其余90颗随机分为3组,组1使用Wave One预备,组2使用ProTaperF2单支锉往复运动模式预备,组3ProTaper全序列连续旋转预备。对照组和WaveOne组,ProTaperF2组,ProTaper组分别产生0%、15%、26%和53%的裂纹。两个往复运动组与连续旋转组之间有统计学差异,两个往复运动组之间无显著差异。

    同样是往复运动,ProTaperF2比WaveOne产生了更多的微裂纹,这可能与器械的材质也有关系。WaveOne选用了经过特殊热处理的M-wire合金制作,器械柔韧性更好,可以更好的适应不同根管的形态。

    3)器械分离

    前文中已经提到,镍钛器械相较于不锈钢器械具有更好的柔韧性以及根管适应性,但是根管内的器械分离仍有发生,大量国内外研究分析了镍钛器械折断的原因,发现扭转应力和疲劳应力是主要原因。往复式镍钛器械以逆时针和顺时针交替的形式进行根管预备,切割牙本质和缓解器械在根管内的扭转应力的方式与旋转镍钛器械的运动方式完全不同。KaratasE等比较了Oneshape和WaveOne在连续旋转以及往复式运动两种不同运动模式下,器械的抗疲劳性能。研究者将内径为1.5mm、曲率60°、曲率半径为3mm的不锈钢模拟根管用于实验,记录两种器械在不同运动模式下器械折断所用的时间。结果显示往复运动组的折断时间明显高于连续旋转组,差异具有统计学意义。

    此外,往复式镍钛器械是由经过特殊热处理的M-Wire合金制作而成,大量文献表明,M-Wire合金可有效提高器械的抗扭转性能和抗疲劳性能。PedullaE,等比较了Wave One、Reciproc、Twisted File和Mtwo四种镍钛器械,在不锈钢模拟弯曲根管连续旋转至器械折断,并记录折断前器械循环次数,结果表明Wave One和Reciproc的循环次数明显大于另外两组,显示了往复式镍钛器械良好的抗扭转和抗疲劳性能。此外,在临床中应用中,器械分离与使用次数也有很大的关系。因此镍钛器械的最佳使用次数也是很多研究者关注的问题,不过到目前为止关于镍钛器械的推荐次数仍没有统一的标准。

    以Reciproc和Wave One为代表的往复式单支镍钛器械,厂家为降低器械折断风险和避免交叉污染,将其设计为一次性使用,在锉的手柄上有一塑料圆环,高温高压灭菌处理后发生膨胀而无法再次插入马达,防止重复使用。

    4)根尖推出物

    根管预备过程中,不同的预备方式,不同的预备器械均有可能将根管内的碎屑推出根尖孔,连续旋转镍钛器械相较于不锈钢器械,由于其独特的表面设计和运动方式,可以在根管预备过程中将切削的牙本质碎屑压入器械表面的凹槽,并通过连续旋转方式将碎屑带出根管,从而减少根尖区碎屑的堆积,降低碎屑推出根尖孔的可能。那么,往复运动的镍钛器械是否也能有效的避免将碎屑推出根尖孔呢?Benten S等使用往复式单支锉Reciproc、连续旋转式单支锉F360和Oneshape以及全序列连续旋转锉Mtwo对80颗离体下颌中切牙进行根管预备,并通过装置收集挤压出根尖孔外的碎屑,然后称重。结果显示Reciproc产生的碎屑最多。两个连续旋转式单支锉和全序列连续旋转锉之间没有显著差异。研究者认为这可能与往复式单支锉系统需要通过反复上下提拉才能预备至工作长度有关,上下提拉会在根管内产生活塞效应,加大了碎屑推出根尖孔的可能。

    2.往复式运动镍钛器械的临床应用

    与全序列旋转镍钛器械不同,以Wave One和Reciproc为代表的往复式运动镍钛器械,仅一根锉完成根管预备。虽然厂家为适应不同的根管直径,设计了不同的型号,但是根管系统千变万化,在临床工作中,医师应该合理选择镍钛预备器械,规范操作。

    1)术前评估

    根管治疗前应仔细阅读X线片,观察根管的形态、弯曲度、有无钙化不通或形态异常等。Wave One和Reciproc均有三种不同的型号,Wave One分别为21号0.06锥度、25号0.08锥度、40号0.08锥度,Reciproc分别为25号0.08锥度、40号0.06锥度和50号0.05锥度.临床中,对于10号或15号不锈钢器械难以顺利到达工作长度的细小根管,可选择WaveOne21号锉;根尖孔未闭合的粗大根管或者年轻恒牙,当25号或者30号不锈钢器械无阻力到达工作长度时,可选择40号锉或50号锉。大多数病例,25号锉即可完成根管预备。

    2)建立可重复的顺滑通路

    正确开髓,揭全髓室顶,确保根管器械尽可能以直线路径进出根管。彭彬等建议在使用机用镍钛器械之前,最好使用不锈钢器械疏通至20号锉,并且严重弯曲根管、S型根管以及再治疗病例均慎用。也可以在10号K锉或C锉疏通根管后,使用机用Pathfile锉进行根管初预备。Pathfile系统有三支锉,锥度都是0.02,器械尖端直径分别是0.13、0.16和0.19mm。与不锈钢器械相比,Pathfile具有非切割的尖端设计,方形的横截面使其在钙化和细小根管中也有较强的切割效力,镍钛合金材质增加了器械的弹性和抗扭转抗疲劳性能。Pathfile和往复式运动镍钛器械联合使用,可以更好的维持根管原始形态,提高临床效率。

    3)根管荡洗

    有效的根管荡洗,可以带走根管预备过程中产生的牙本质碎屑,同时溶解残余牙髓组织,去除细菌并润滑根管壁。根管预备过程中,每更换一支器械,均应回锉并伴随大量冲洗。单支锉由于根管预备时间短且无器械更换,根管壁暴露在冲洗液的时间也随之缩短,所以建议适当增加根管荡洗的时间,推荐使用超声荡洗根管。研究表明超声荡洗可有效地清洁根管,减少诊间疼痛发生率。

    3.总结

    综上所述,相较于连续旋转镍钛器械,往复式单支镍钛器械具有良好的根管成形能力,并可以较好的维持根管原始形态;其独特的运动方式和加工工艺,在根管内产生较少的牙本质微裂;同时具有良好的抗扭转和抗疲劳性能且预备效率高。然而,在根管预备过程中,采用往复式运动的镍钛器械会将更多的碎屑推出根尖孔这一情况尤其值得注意。

编辑: 陆美凤

网友评论

.

156Rrzw1 2018.09.14

谢谢分享!谢谢分享

点击数:0