scRNA-Seq | SCENIC 推斷基因調(diào)控網(wǎng)絡(luò)和細(xì)胞類型

轉(zhuǎn)錄因子 (transcription factors, TFs) 是直接作用于基因組魂那,與特定DNA序列結(jié)合 (TFBS/motif) 蛾号,調(diào)控DNA轉(zhuǎn)錄過程的一類蛋白質(zhì)。轉(zhuǎn)錄因子可以調(diào)節(jié)基因組DNA開放性涯雅、募集RNA聚合酶進(jìn)行轉(zhuǎn)錄過程鲜结、募集輔助因子調(diào)節(jié)特定的轉(zhuǎn)錄階段,調(diào)控諸多生命進(jìn)程活逆,諸如免疫反應(yīng)精刷、發(fā)育模式等。因此蔗候,分析轉(zhuǎn)錄因子表達(dá)及其調(diào)控活性對(duì)于解析復(fù)雜生命活動(dòng)具有重要意義怒允。

了解轉(zhuǎn)錄因子對(duì)于了解細(xì)胞的功能及生命活動(dòng)有重要作用。傳統(tǒng)的轉(zhuǎn)錄因子分析大多是對(duì)已知轉(zhuǎn)錄因子的表達(dá)和未知蛋白的轉(zhuǎn)錄因子預(yù)測(cè)分析锈遥,涉及活性分析的極少纫事,而轉(zhuǎn)錄因子活性是其發(fā)揮作用的關(guān)鍵指標(biāo)。

因此所灸,今天想給大家介紹的就是一款可以分析轉(zhuǎn)錄因子活性的軟件SCENIC[2]丽惶,這款軟件是基于單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)開發(fā)的,可以解析單個(gè)細(xì)胞中轉(zhuǎn)錄因子活性爬立。對(duì)于單細(xì)胞轉(zhuǎn)錄組而言蚊夫,轉(zhuǎn)錄因子活性差異不僅為細(xì)胞異質(zhì)性研究帶來了新的思路,同時(shí)還可以從轉(zhuǎn)錄因子入手快速解析關(guān)鍵的分析調(diào)控機(jī)制懦尝。

SCENIC是2017年11月發(fā)表在 Nature Methods 期刊的一種單細(xì)胞轉(zhuǎn)錄因子分析方法,也是目前進(jìn)行單細(xì)胞轉(zhuǎn)錄因子分析的主流軟件壤圃,該軟件在進(jìn)行數(shù)據(jù)分析的同時(shí)也能得到可視化結(jié)果圖陵霉。另外,SCENIC是一款開源軟件伍绳,可以免費(fèi)下載使用踊挠,目前軟件有R和python兩個(gè)版本,每個(gè)版本都配備了詳細(xì)的使用說明(軟件官網(wǎng)https://scenic.aertslab.org/)冲杀。但有一點(diǎn)需要特別注意效床,該軟件是有物種限制的,目前只能分析人权谁、小鼠和果蠅的數(shù)據(jù)剩檀,具體限制原因,我們?cè)诤竺娴姆治鲈碇薪視詞

一旺芽、原理介紹

SCENIC就是一個(gè)常見的沪猴、基于單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析轉(zhuǎn)錄因子活性辐啄、基因調(diào)控網(wǎng)路的工具。SCENIC的分析主要分為三步运嗜,

  • 第一步通過基因之間的共表達(dá)壶辜,找到可能的轉(zhuǎn)錄因子
  • 第二步是進(jìn)行轉(zhuǎn)錄因子-motif的富集分析并找到對(duì)應(yīng)的靶基因(調(diào)控組regulon)担租;
  • 第三步是對(duì)調(diào)控組的活躍程度進(jìn)行評(píng)分砸民;
第一步由 GENIE3 包或 GRNBoost 實(shí)現(xiàn)。

GENIE3 (GEne NetworkInference with Ensemble of trees) 奋救,基于樹的基因網(wǎng)絡(luò)推理岭参,是一種從基因表達(dá)數(shù)據(jù)推斷基因調(diào)控網(wǎng)絡(luò)的方法[3]。軟件以單細(xì)胞基因表達(dá)量矩陣為輸入文件菠镇,以每個(gè)目標(biāo)基因 (gene) 為輸出冗荸,以轉(zhuǎn)錄因子 (TF) 為輸入,構(gòu)建P個(gè)隨機(jī)森林樹(P=矩陣中基因數(shù)量)利耍,并計(jì)算每個(gè)TF與gene之間的重要性評(píng)分 (IM) 蚌本,最終可以獲得TF-genes共表達(dá)模塊。最后刪除IM低于閾值的基因關(guān)系隘梨,過濾基因數(shù)低于50的模塊程癌。

GENIE3網(wǎng)絡(luò)構(gòu)建過程

GENIE3用轉(zhuǎn)錄因子的表達(dá)量,通過訓(xùn)練隨機(jī)森林(random forest)模型來預(yù)測(cè)各基因的表達(dá)量轴猎,從而得到轉(zhuǎn)錄因子在預(yù)測(cè)每個(gè)基因轉(zhuǎn)錄時(shí)的權(quán)重嵌莉。這個(gè)權(quán)重反映了轉(zhuǎn)錄因子對(duì)于預(yù)測(cè)基因轉(zhuǎn)錄水平的相關(guān)性。相關(guān)性越高捻脖,則代表基因更有可能是該轉(zhuǎn)錄因子的靶基因锐峭。

隨機(jī)森林是由多個(gè)決策樹形成的分類器,它通過有放回的抽樣訓(xùn)練出多個(gè)決策樹可婶,再以決策樹結(jié)果中的眾數(shù)為最終的結(jié)果沿癞。更詳細(xì)的解釋,可見:https://zhuanlan.zhihu.com/p/57965634

GENIE3的輸入為基因表達(dá)矩陣矛渴,可以是UMI椎扬、TPM,或者FPKM/RPKM具温。而GENIE3的輸出為基因蚕涤、可能參與該基因的轉(zhuǎn)錄因子,以及它們的該轉(zhuǎn)錄因子的重要性(importance measure, IM)铣猩,即其在預(yù)測(cè)基因轉(zhuǎn)錄水平時(shí)的權(quán)重揖铜。只有當(dāng)權(quán)重高于0.001時(shí),該轉(zhuǎn)錄因子才被認(rèn)為是可能參與該基因調(diào)控的轉(zhuǎn)錄因子剂习。

因?yàn)殡S機(jī)森林需要進(jìn)行多次抽樣蛮位,訓(xùn)練出多個(gè)決策樹较沪,當(dāng)數(shù)據(jù)量很大時(shí),這一步非呈剩花時(shí)間尸曼,因此針對(duì)較大的數(shù)據(jù),第一步可以用GRNBoost萄焦,它使用了梯度提升算法控轿,在訓(xùn)練新的決策樹時(shí),會(huì)提高上一個(gè)決策樹出錯(cuò)的樣本比例拂封,以針對(duì)模型預(yù)測(cè)欠缺的地方進(jìn)行優(yōu)化茬射。

第二步由 RcisTarget 包實(shí)現(xiàn)。

它的主要作用在于通過一個(gè)基因列表冒签,找到富集的轉(zhuǎn)錄因子及轉(zhuǎn)錄因子結(jié)合模序(motif)在抛,即可能的轉(zhuǎn)錄因子結(jié)合位點(diǎn)的模板序列。

它通過兩步進(jìn)行萧恕。

  • 首先刚梭,它找到基因列表里基因的轉(zhuǎn)錄起始位點(diǎn)(transcript ion start site, TSS)。并找出轉(zhuǎn)錄起始位點(diǎn)周圍高頻出現(xiàn)的DNA motif票唆。它會(huì)搜尋一個(gè)包含了跨物種基因組范圍內(nèi)各motif信息的數(shù)據(jù)庫(kù)朴读,篩選出和目標(biāo)轉(zhuǎn)錄因子相關(guān)聯(lián)的、標(biāo)準(zhǔn)化富集指數(shù)(normalised enrichment score, NES)高于3.0的motif走趋。
  • 接著衅金,針對(duì)每一組motif和基因列表,RcisTarget會(huì)預(yù)測(cè)可能的目標(biāo)基因簿煌。目標(biāo)基因?yàn)榛蛄斜碇蓄A(yù)測(cè)結(jié)果排序靠前的基因氮唯。所有motif共有的目標(biāo)基因加上與之對(duì)應(yīng)的轉(zhuǎn)錄因子,即為調(diào)控組regulon姨伟。
RcisTarget Regulons構(gòu)建過程
第三步由AUCell實(shí)現(xiàn)您觉,它能找到每個(gè)細(xì)胞中一組基因的活躍程度。

在這,SCENIC通過AUCell計(jì)算regulon的活躍程度。AUCell計(jì)算曲線下的面積(area under recovery curve, AUC)琳轿,依據(jù)每個(gè)基因的表達(dá)水平篙议,來計(jì)算出regular的活躍程度。各基因根據(jù)基因表達(dá)水平在x軸排序來繪制曲線诚啃。因此AUC反映了在每個(gè)細(xì)胞中給定的一組基因相對(duì)于其它基因的表達(dá)水平淮摔。

通過AUCell,我們能得到一個(gè)矩陣始赎,包含每組regulon在每個(gè)細(xì)胞內(nèi)相對(duì)于其它基因的表達(dá)水平和橙,即它們的活躍程度仔燕。通過這一個(gè)矩陣,我們可以對(duì)細(xì)胞進(jìn)行聚類魔招,也可以看不同細(xì)胞類型中都有什么regulon是活躍的晰搀。

總之,SCENIC在R 中實(shí)現(xiàn)基于三個(gè)R包:
1.GENIE3:推斷基因共表達(dá)網(wǎng)絡(luò)
2.RcisTarget:用于分析轉(zhuǎn)錄因子結(jié)合motif
3.AUCell:用于鑒定scRNA-seq數(shù)據(jù)中具有活性基因集(基因網(wǎng)絡(luò))的細(xì)胞


a 使用GENIE3GRNBoost推斷轉(zhuǎn)錄因子與候選靶基因之間的共表達(dá)模塊办斑。RcisTarget可識(shí)別那些調(diào)節(jié)子的結(jié)合基序在目標(biāo)基因中顯著富集的模塊外恕。并創(chuàng)建僅具有直接target的調(diào)節(jié)單元。AUCell對(duì)每個(gè)細(xì)胞中每個(gè)調(diào)節(jié)單元的活性進(jìn)行評(píng)分乡翅,從而產(chǎn)生活性矩陣鳞疲。細(xì)胞狀態(tài)基于調(diào)節(jié)子網(wǎng)絡(luò)的共有的活性。
b SCENIC在小鼠大腦數(shù)據(jù)上的結(jié)果; 聚類標(biāo)簽的顏色對(duì)應(yīng)主調(diào)節(jié)子蠕蚜。
c 顯示了文獻(xiàn)(A)證實(shí)的轉(zhuǎn)錄因子或具有MGI(B)的腦表型的轉(zhuǎn)錄因子尚洽,以及豐富的DNA基序。
d 活性矩陣上得到的t-SNE靶累。每個(gè)細(xì)胞標(biāo)記了最活躍的基因調(diào)節(jié)網(wǎng)絡(luò)的顏色腺毫。
e 此數(shù)據(jù)集上不同聚類方法的準(zhǔn)確性。
原文:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5937676/

以上是SCENIC的算法概述

二尺铣、pySCENIC python版本分析

適用背景
單細(xì)胞轉(zhuǎn)錄組調(diào)控網(wǎng)絡(luò)分析是單細(xì)胞轉(zhuǎn)錄組分析內(nèi)容的高級(jí)分析之一拴曲。R的SCENIC基于AUCell,RcisTarget和GENIE3三個(gè)包進(jìn)行分析凛忿,所以要先安裝這些依賴包澈灼,而pySCENIC則已經(jīng)封裝好,直接用pip安裝即可店溢。只用SCENIC或pySCENIC也可以單獨(dú)完成分析叁熔,但R語言運(yùn)行起來很慢,pySCENIC可以有效提升分析速度床牧,還用SCENIC是因?yàn)榭梢暬肦語言會(huì)簡(jiǎn)單一些荣回。

1. 軟件安裝

創(chuàng)建一個(gè)環(huán)境,安裝Python和R

conda create -n pyscenic
conda activate pyscenic
conda install r-base=4.2.1
conda install python=3.9.13

### Python安裝pyscenic
pip install pyscenic -i https://mirrors.aliyun.com/pypi/simple/
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
pip install scanpy -i https://mirrors.aliyun.com/pypi/simple/
pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/
pip install loompy -i https://mirrors.aliyun.com/pypi/simple/

R安裝SCENIC

if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("AUCell", "RcisTarget","GENIE3"))
if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("aertslab/SCENIC")

這樣就配置好基本環(huán)境了戈咳,接下來是安裝R包心软,確保以下需要library的包就可以。

library(Seurat)     #
library(SCopeLoomR) #
library(AUCell)     #
library(SCENIC)     # 
library(dplyr)      #
library(KernSmooth)    #
library(RColorBrewer)  #
library(plotly)        #
library(BiocParallel)  # BiocManager
library(optparse)      #

可以先用BiocManager::install() 安裝著蛙,如果安裝不了删铃,谷歌搜一下conda install [package name](百度搜不出來,不推薦)就能找到conda 安裝這個(gè)包的官網(wǎng)踏堡,雖然conda很萬能猎唁,但是慢啊,BiocManager::install會(huì)快很多顷蟆。當(dāng)然還有一些包是裝不了诫隅,需要用devtools安裝腐魂,例如SCopeLoomR,那哪些包要用devtools裝呢逐纬?一般BiocManager::install和conda裝不了的包就極大概率要用devtools裝了蛔屹,所以直接搜這個(gè)包的GitHub或官網(wǎng),例如谷歌搜SCopeLoomR GitHub风题,GitHub里面說明需要這樣安裝:

devtools::install_github("aertslab/SCopeLoomR")

用devtools重裝又各種報(bào)錯(cuò)判导,缺失某個(gè)包,缺失某個(gè)動(dòng)態(tài)庫(kù)……反正各種缺失沛硅,沒辦法眼刃,只能缺什么裝什么了,而且裝devtools的時(shí)候就很容易報(bào)錯(cuò)摇肌,建議先用conda安裝以下包和動(dòng)態(tài)庫(kù)再安裝SCopeLoomR:

conda install -c anaconda git
conda install -c anaconda hdf5
conda install -c conda-forge libgit2
conda install -c conda-forge r-ragg
conda install -c conda-forge r-xml

再在R里運(yùn)行:

devtools::install_github("aertslab/SCopeLoomR")

2.以人為例分析

2.1 從Seurat 對(duì)象生成loom文件

只需要使用build_loom函數(shù)擂红,在get_count_from_seurat.R文件后面添加幾行代碼即可。
get_count_from_seurat.R文件內(nèi)容如下:

library(optparse)
op_list <- list(
make_option(c("-i", "--inrds"), type = "character", default = NULL, action = "store", help = "The input of Seurat RDS",metavar="rds"),
make_option(c("-d", "--ident"), type = "character", default = NULL, action = "store", help = "The sample Ident of Seurat object",metavar="idents"),
make_option(c("-s", "--size"),  type = "integer", default = NULL, action = "store", help = "The sample size of Seurat object",metavar="size"),
make_option(c("-l", "--label"), type = "character", default = "out", action = "store", help = "The label of output file",metavar="label"),
make_option(c("-a", "--assay"), type = "character", default = "Spatial", action = "store", help = "The assay of input file",metavar="assay")
)
parser <- OptionParser(option_list = op_list)
opt = parse_args(parser)

assay <- opt$assay

library(Seurat)
obj <- readRDS(opt$inrds)
if (!is.null(opt$ident)) {
Idents(obj) <-  opt$ident
size=opt$size
if (!is.null(size)) {
obj <- subset(x = obj, downsample = opt$size)
}
saveRDS(obj,"subset.rds")
}
if (is.null(opt$label)) {
label1 <- 'out'
}else{
label1 <- opt$label
}

library(SCopeLoomR)
outloom <- paste0(label1,".loom")
build_loom(file.name = outloom,dgem = obj@assays[[assay]]@counts)
write.table(obj@meta.data,'metadata_subset.xls',sep='\t',quote=F)

使用方法:
-i:輸入Seurat對(duì)象的RDS文件
-d:隨機(jī)取樣分組的列名围小,例如groups昵骤,如果不賦值則表示不隨機(jī)取樣,使用全部細(xì)胞
-s:隨機(jī)取樣的大小肯适,例如20变秦,因?yàn)檫@里用的是pbmc_small,所以設(shè)置小一點(diǎn)框舔,實(shí)際情況可能需要設(shè)置大一點(diǎn)
-l:輸出文件的標(biāo)簽蹦玫,默認(rèn)為out,
-a:使用的Seurat對(duì)象assay,默認(rèn)為Spatial刘绣。

Rscript get_count_from_seurat.R \
  -i test.rds  \
  -d groups  \
  -s 20  \
  -l out  \
  -a Spatial

需要注意的是樱溉,新腳本添加了assay這個(gè)參數(shù),默認(rèn)為Spatial纬凤,因?yàn)樽罱谟门芸臻g組數(shù)據(jù)福贞,如果要應(yīng)用到單細(xì)胞需要改為RNA。

2.2 運(yùn)行SCENIC的python版本停士,pyscenic

pyscenic的配置文件在官方提供的網(wǎng)站可以找到挖帘,需要三個(gè)文件:

以上文件選取僅供參考刁赖,實(shí)際情況可能需要選擇不同文件。SCENIC的標(biāo)準(zhǔn)流程分為3步长搀,
第一步利用GENIE3構(gòu)建轉(zhuǎn)錄因子與基因的調(diào)控網(wǎng)絡(luò)宇弛,
第二步利用RcisTarget驗(yàn)證轉(zhuǎn)錄因子與基因的調(diào)控網(wǎng)絡(luò)的真實(shí)性;
第三步計(jì)算AUC曲線篩選調(diào)控網(wǎng)絡(luò)源请。

pyscenic_from_loom.sh文件代碼如下:

#default value
input_loom=out.loom
n_workers=20
#help function
function usage() {
echo -e "OPTIONS:\n-i|--input_loom:\t input loom file"
echo -e "-n|--n_workers:\t working core number"
echo -e "-h|--help:\t Usage information"
exit 1
}
#get value
while getopts :i:n:h opt
do
    case "$opt" in
        i) input_loom="$OPTARG" ;;
        n) n_workers="$OPTARG" ;;
        h) usage ;;
        :) echo "This option -$OPTARG requires an argument."
           exit 1 ;;
        ?) echo "-$OPTARG is not an option"
           exit 2 ;;
    esac
done
#需要更改路徑
tfs=hs_hgnc_tfs.txt
feather=hg19-tss-centered-10kb-7species.mc9nr.feather
tbl=motifs-v9-nr.hgnc-m0.001-o0.0.tbl
pyscenic=/app/bin/pyscenic

# grn
$pyscenic grn \
--num_workers $n_workers \
--output grn.tsv \
--method grnboost2 \
$input_loom  $tfs

# cistarget
$pyscenic ctx \
grn.tsv $feather \
--annotations_fname $tbl \
--expression_mtx_fname $input_loom \
--mode "dask_multiprocessing" \
--output ctx.csv \
--num_workers $n_workers   \
--mask_dropouts

# AUCell
$pyscenic aucell \
$input_loom \
ctx.csv \
--output aucell.loom \
--num_workers $n_workers

使用方法:
-i枪芒,輸入的loom文件,例如第二步生成的out.loom
-n谁尸,運(yùn)行線程數(shù)舅踪,設(shè)置越大越快,根據(jù)實(shí)際情況設(shè)置

sh pyscenic_from_loom.sh -i out.loom -n 10

2.3 計(jì)算 RSS

此步驟的作用是通過計(jì)算RSS值找到細(xì)胞類型的特異TF良蛮。
calcRSS_by_scenic.R文件代碼如下:

library(optparse)
op_list <- list(
make_option(c("-l", "--input_loom"), type = "character", default = NULL, action = "store", help = "The input of aucell loom file",metavar="rds"),
make_option(c("-m", "--input_meta"), type = "character", default = NULL, action = "store", help = "The metadata of Seurat object",metavar="idents"),
make_option(c("-c", "--celltype"), type = "character", default = NULL, action = "store", help = "The colname of metadata to calculate RSS",metavar="lab
el")
)
parser <- OptionParser(option_list = op_list)
opt = parse_args(parser)

library(Seurat)
library(SCopeLoomR)
library(AUCell)
library(SCENIC)
library(dplyr)
library(KernSmooth)
library(RColorBrewer)
library(plotly)
library(BiocParallel)

loom <- open_loom(opt$input_loom)

regulons_incidMat <- get_regulons(loom, column.attr.name="Regulons")
regulons <- regulonsToGeneLists(regulons_incidMat)
regulonAUC <- get_regulons_AUC(loom,column.attr.name='RegulonsAUC')
regulonAucThresholds <- get_regulon_thresholds(loom)
close_loom(loom)

meta <- read.table(opt$input_meta,sep='\t',header=T,stringsAsFactor=F)

cellinfo <- meta[,c(opt$celltype,"nFeature_RNA","nCount_RNA")]
colnames(cellinfo)=c('celltype', 'nGene' ,'nUMI')
cellTypes <-  as.data.frame(subset(cellinfo,select = 'celltype'))
selectedResolution <- "celltype"

sub_regulonAUC <- regulonAUC
rss <- calcRSS(AUC=getAUC(sub_regulonAUC),
               cellAnnotation=cellTypes[colnames(sub_regulonAUC),
                                        selectedResolution])
rss=na.omit(rss)
try({
rssPlot <- plotRSS(rss)
save(regulonAUC,rssPlot,regulons,file='regulon_RSS.Rdata')
})

saveRDS(rss,paste0(celltype,"_rss.rds"))

使用示例:
-i抽碌,第三步得到aucell.loom文件
-m,第一步得到的metadata_subset.xls文件
-c决瞳,計(jì)算RSS的分組列

Rscript calcRSS_by_scenic.R -l aucell.loom -m metadata_subset.xls -c groups

運(yùn)行后生成regulon_RSS.Rdata和groups_rss.rds文件

export HDF5_USE_FILE_LOCKING=FALSE

在終端輸入[1]:

export HDF5_USE_FILE_LOCKING=FALSE

若想總是生效货徙,將上面這條加入環(huán)境變量文件 ~/.bashrc 中,即可皮胡。

Ref:
https://github.com/aertslab/pySCENIC
Tutorial — pySCENIC latest documentation

https://zhuanlan.zhihu.com/p/434003188
http://www.reibang.com/p/d6feefe70513/
SCENIC | 從單細(xì)胞數(shù)據(jù)推斷基因調(diào)控網(wǎng)絡(luò)和細(xì)胞類型_生信寶典的博客-CSDN博客
SCENIC: 單細(xì)胞RNA-seq數(shù)據(jù)推斷基因調(diào)控網(wǎng)絡(luò)和細(xì)胞功能聚類 - 簡(jiǎn)書 (jianshu.com)
http://www.reibang.com/p/c47332b880aa?v=1671031123892
[scRNA-seq]單細(xì)胞轉(zhuǎn)錄因子分析——SCENIC實(shí)操示例scenic分析小L的生信筆記的博客-CSDN博客
單細(xì)胞轉(zhuǎn)錄因子分析之SCENIC流程 - 知乎 (zhihu.com)
單細(xì)胞SCENIC分析原理和流程介紹 - 簡(jiǎn)書 (jianshu.com)
SCENIC單細(xì)胞轉(zhuǎn)錄因子調(diào)控網(wǎng)絡(luò)分析_基因cell信息 (sohu.com)
單細(xì)胞SCENIC分析——尋找驅(qū)動(dòng)基因 - 騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com)
Seurat_Satija - 簡(jiǎn)書 (jianshu.io)
https://blog.csdn.net/weixin_40594350/article/details/125493430
http://www.reibang.com/p/bd0df23fbd60

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痴颊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子屡贺,更是在濱河造成了極大的恐慌蠢棱,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烹笔,死亡現(xiàn)場(chǎng)離奇詭異裳扯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谤职,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門饰豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人允蜈,你說我怎么就攤上這事冤吨。” “怎么了饶套?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵漩蟆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我妓蛮,道長(zhǎng)怠李,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮捺癞,結(jié)果婚禮上夷蚊,老公的妹妹穿的比我還像新娘。我一直安慰自己髓介,他們只是感情好惕鼓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唐础,像睡著了一般箱歧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上一膨,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天呀邢,我揣著相機(jī)與錄音,去河邊找鬼汞幢。 笑死驼鹅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的森篷。 我是一名探鬼主播输钩,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼仲智!你這毒婦竟也來了买乃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤钓辆,失蹤者是張志新(化名)和其女友劉穎剪验,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前联,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡功戚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了似嗤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啸臀。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烁落,靈堂內(nèi)的尸體忽然破棺而出乘粒,到底是詐尸還是另有隱情,我是刑警寧澤伤塌,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布灯萍,位于F島的核電站,受9級(jí)特大地震影響每聪,放射性物質(zhì)發(fā)生泄漏旦棉。R本人自食惡果不足惜齿风,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绑洛。 院中可真熱鬧聂宾,春花似錦、人聲如沸诊笤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讨跟。三九已至,卻和暖如春鄙煤,著一層夾襖步出監(jiān)牢的瞬間晾匠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工梯刚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凉馆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓亡资,卻偏偏與公主長(zhǎng)得像澜共,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锥腻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容