【10X空間轉錄組Visium】(三)跑通Visium全流程記錄

舊號無故被封,小號再發一次

更多空間轉錄組文章:

1. 新版10X Visium
2. 舊版Sptial

下載數據集

https://support.10xgenomics.com/spatial-gene-expression/datasets
我選擇的是:Mouse Brain Section (Coronal)

$ tar -xvf V1_Adult_Mouse_Brain_fastqs.tar
$ ls
V1_Adult_Mouse_Brain_S5_L001_I1_001.fastq.gz  V1_Adult_Mouse_Brain_S5_L001_R2_001.fastq.gz  V1_Adult_Mouse_Brain_S5_L002_R1_001.fastq.gz
V1_Adult_Mouse_Brain_S5_L001_I2_001.fastq.gz  V1_Adult_Mouse_Brain_S5_L002_I1_001.fastq.gz  V1_Adult_Mouse_Brain_S5_L002_R2_001.fastq.gz
V1_Adult_Mouse_Brain_S5_L001_R1_001.fastq.gz  V1_Adult_Mouse_Brain_S5_L002_I2_001.fastq.gz
  • 同一個樣本的測序數據,這里總共有2條lane
  • 每條lane因為是雙索引的緣故,所以存在I1 I2 R1 R2共4個fastq文件、
  • 所以總共有8條fastq
    與之對應的情況是:


    image.png

運行spaceranger count

此處選擇自動對齊的方案
由于服務器沒有連接外網:所以手動下載slide文件
https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/using/count

$ spaceranger count --id=V1_Adult_Mouse_Brain \
                      --transcriptome=/share/nas1/Data/luohb/Visium/reference/refdata-cellranger-mm10-3.0.0/  \
                      --fastqs=/share/nas1/Data/luohb/Visium/test2/V1_Adult_Mouse_Brain_fastqs \
                      --sample=V1_Adult_Mouse_Brain \
                      --image=/share/nas1/Data/luohb/Visium/test2/V1_Adult_Mouse_Brain_image.tif \
                      --slide=V19L01-041 \
                      --area=C1 \
                      --slidefile=/share/nas1/Data/luohb/Visium/test2/V19L01-041.gpr \
                      --localcores=32   \
                      --localmem=128

順利地跑完了,因為服務器同時還跑著幾個比較大的任務,然后居然跑了接近13個小時。。。


image.png

查看結果文件

$ ls
_cmdline   _finalstate  _jobmode  _mrosource  _perf              _sitecheck              _tags       _uuid                         _vdrkill
_filelist  _invocation  _log      outs        _perf._truncated_  SPATIAL_RNA_COUNTER_CS  _timestamp  V1_Adult_Mouse_Brain.mri.tgz  _versions

$ cd outs/
$ ls
analysis       filtered_feature_bc_matrix     metrics_summary.csv  possorted_genome_bam.bam      raw_feature_bc_matrix     spatial
cloupe.cloupe  filtered_feature_bc_matrix.h5  molecule_info.h5     possorted_genome_bam.bam.bai  raw_feature_bc_matrix.h5  web_summary.html

  • 查看web_summary.html


    image.png

    image.png
  • 查看count管道輸出幾個包含自動二級分析結果的CSV文件
$cd analysis/
$ls
clustering  diffexp  pca  tsne  umap

1. PCA降維結果:

$cd /pca/10_components
$ls
components.csv  dispersion.csv  features_selected.csv  projection.csv  variance.csv

投影

$head -3 projection.csv 
Barcode,PC-1,PC-2,PC-3,PC-4,PC-5,PC-6,PC-7,PC-8,PC-9,PC-10
AAACAAGTATCTCCCA-1,-10.281241313083257,-24.67223115562252,-0.19850052930601336,-2.1734929997144388,6.630976878797487,-0.12128746693282366,6.040708059434257,4.657495740394594,16.344239212184327,6.523601903899456
AAACAATCTACTAGCA-1,17.830458684877186,-27.53526668134934,15.877302377060623,9.74572143694312,-0.7208195934715782,-4.339470398396214,2.5444608437485288,-5.084679351848514,2.9247276185469495,-1.0731021612191327

components matrix

$less -S components.csv
PC,ENSMUSG00000051951,ENSMUSG00000089699,ENSMUSG00000025900,ENSMUSG00000025902,ENSMUSG00000033845,ENSMUSG00000025903,ENSMUSG00000104217,ENSMUSG00000033813,(略……)
1,9.807402710059275e-05,-0.0007359419037463138,0.0018506647696503106,0.0019216677830155664,-0.009477278899046813,-0.005003056852125207,0.0,-0.008498306263180
2,-0.0013017257339919546,0.0015759310908915448,0.0013809836795030965,0.0009513422156874659,0.007418499981929492,0.003222355732773671,0.0,0.00887178686827463,
3,-0.001920230193482586,0.003378841598139873,-0.00012165106820253075,-0.00024897415838216264,-0.0031447165300072175,-0.007787586978438225,0.0,-0.003148852394
(略……)

總方差的比例

$head -3 variance.csv
PC,Proportion.Variance.Explained
1,0.030645967432188836
2,0.015067575203691749

歸一化的離散度

$head -3 dispersion.csv
Feature,Normalized.Dispersion
ENSMUSG00000051951,0.261762717719762
ENSMUSG00000089699,-1.5988672040435437

2. t-SNE結果文件:

$cd ../../tsne/2_components/
$ls
projection.csv

$head -5 projection.csv 
Barcode,TSNE-1,TSNE-2
AAACAAGTATCTCCCA-1,-18.47081216664088,7.240054873818881
AAACAATCTACTAGCA-1,-4.219964329936257,-9.182632464702484
AAACACCAATAACTGC-1,14.744060324279337,13.360913482080413
AAACAGAGCGACTCCT-1,-11.72411901642397,-7.924228663324808

3. 聚類結果:

$cd ../../clustering/
$ls
graphclust          kmeans_2_clusters  kmeans_4_clusters  kmeans_6_clusters  kmeans_8_clusters
kmeans_10_clusters  kmeans_3_clusters  kmeans_5_clusters  kmeans_7_clusters  kmeans_9_clusters

對于每個聚類, spaceranger為每個點生成聚類分配cluster assignments

打開聚類3看看:

$cd kmeans_3_clusters
$ls
clusters.csv
$head -5 clusters.csv 
Barcode,Cluster
AAACAAGTATCTCCCA-1,1
AAACAATCTACTAGCA-1,3
AAACACCAATAACTGC-1,2
AAACAGAGCGACTCCT-1,1

4. 差異表達分析:

$cd ../../diffexp/
$ls
graphclust          kmeans_2_clusters  kmeans_4_clusters  kmeans_6_clusters  kmeans_8_clusters
kmeans_10_clusters  kmeans_3_clusters  kmeans_5_clusters  kmeans_7_clusters  kmeans_9_clusters

這次看個總表:

$cd /graphclust
$ls
differential_expression.csv
$head -3 differential_expression.csv 
Feature ID,Feature Name,Cluster 1 Mean Counts,Cluster 1 Log2 fold change,Cluster 1 Adjusted p value,Cluster 2 Mean Counts,Cluster 2 Log2 fold change,Cluster 2 Adjusted p value,Cluster 3 Mean Counts,Cluster 3 Log2 fold change,Cluster 3 Adjusted p value,Cluster 4 Mean Counts,Cluster 4 Log2 fold change,Cluster 4 Adjusted p value,Cluster 5 Mean Counts,Cluster 5 Log2 fold change,Cluster 5 Adjusted p value,Cluster 6 Mean Counts,Cluster 6 Log2 fold change,Cluster 6 Adjusted p value,Cluster 7 Mean Counts,Cluster 7 Log2 fold change,Cluster 7 Adjusted p value,Cluster 8 Mean Counts,Cluster 8 Log2 fold change,Cluster 8 Adjusted p value,Cluster 9 Mean Counts,Cluster 9 Log2 fold change,Cluster 9 Adjusted p value
ENSMUSG00000051951,Xkr4,0.09115907843838432,0.15688013442205495,0.9130108472807676,0.08789156406190936,0.094226986457139,1.0,0.059424476860418934,-0.5579910544947899,0.4792687534164091,0.09747791035014447,0.270272692975412,0.7950049780312995,0.08717356987748102,0.14776402072440886,1.0,0.05406634025868632,-0.6310298603360582,0.7980928917515894,0.15030400022885756,0.9570457266970553,0.22931236900985477,0.0606581027791399,-0.4319057525382224,1.0,0.10761817731957228,0.4400508833584902,1.0
ENSMUSG00000089699,Gm1992,0.0016574377897888059,1.3866145310996707,0.8220253607506287,0.0,0.423008752385563,1.0,0.0,0.22991150489664136,1.0,0.0033613072534532575,2.5793194965660433,0.5338242296758853,0.0,2.3542148981918345,1.0,0.003180372956393313,2.490599584065473,0.8676482778053517,0.0,1.5959470345290159,1.0,0.0,1.4568374963600368,1.0,0.0,2.146642828481177,1.0

5 .矩陣:Feature-Barcode Matrices
矩陣的每個元素是與特征(行)和條形碼(列)關聯的UMI的數量。

$cd /share/nas1/Data/luohb/Visium/test2/V1_Adult_Mouse_Brain/outs
$ls
analysis       filtered_feature_bc_matrix     metrics_summary.csv  possorted_genome_bam.bam      raw_feature_bc_matrix     spatial
cloupe.cloupe  filtered_feature_bc_matrix.h5  molecule_info.h5     possorted_genome_bam.bam.bai  raw_feature_bc_matrix.h5  web_summary.html
$tree filtered_feature_bc_matrix
filtered_feature_bc_matrix
├── barcodes.tsv.gz
├── features.tsv.gz
└── matrix.mtx.gz
0 directories, 3 files

$tree raw_feature_bc_matrix
raw_feature_bc_matrix
├── barcodes.tsv.gz
├── features.tsv.gz
└── matrix.mtx.gz
0 directories, 3 files
$gzip -cd filtered_feature_bc_matrix/features.tsv.gz |head -3
ENSMUSG00000051951  Xkr4    Gene Expression
ENSMUSG00000089699  Gm1992  Gene Expression
ENSMUSG00000102343  Gm37381 Gene Expression

其中:

第一列 第二列 第三列
功能ID 基因名 標識特征的類型

嘗試將矩陣加載到R

library(Matrix)
matrix_dir = "/share/nas1/Data/luohb/Visium/test2/V1_Adult_Mouse_Brain/outs/filtered_feature_bc_matrix/"
barcode.path <- paste0(matrix_dir, "barcodes.tsv.gz")
features.path <- paste0(matrix_dir, "features.tsv.gz")
matrix.path <- paste0(matrix_dir, "matrix.mtx.gz")
mat <- readMM(file = matrix.path)
feature.names = read.delim(features.path, 
                           header = FALSE,
                           stringsAsFactors = FALSE)
barcode.names = read.delim(barcode.path, 
                           header = FALSE,
                           stringsAsFactors = FALSE)
colnames(mat) = barcode.names$V1
rownames(mat) = feature.names$V1
dim(mat)
[1] 31053  2698

嘗試將矩陣加載到Python

import csv
import gzip
import os
import scipy.io
 
matrix_dir = "/share/nas1/Data/luohb/Visium/test2/V1_Adult_Mouse_Brain/outs/filtered_feature_bc_matrix"
mat = scipy.io.mmread(os.path.join(matrix_dir, "matrix.mtx.gz"))


features_path = os.path.join(matrix_dir, "features.tsv.gz")
feature_ids = [row[0] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
gene_names = [row[1] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
feature_types = [row[2] for row in csv.reader(gzip.open(features_path), delimiter="\t")]
barcodes_path = os.path.join(matrix_dir, "barcodes.tsv.gz")
barcodes = [row[0] for row in csv.reader(gzip.open(barcodes_path), delimiter="\t")]

6. 看圖片

$cd spatial/
$ls
aligned_fiducials.jpg  detected_tissue_image.jpg  scalefactors_json.json  tissue_hires_image.png  tissue_lowres_image.png  tissue_positions_list.csv

tissue_hires_image.png:較高像素的明場圖片


image.png

tissue_lowres_image.png:較低像素的明場圖片


image.png

aligned_fiducials.jpg(尺寸與 tissue_hires_image.png相同):用于驗證基準對齊是否成功
image.png

相應的像素坐標轉換文件:scalefactors_json.json

$cat scalefactors_json.json
{"spot_diameter_fullres": 89.44476048022638, "tissue_hires_scalef": 0.17011142, "fiducial_diameter_fullres": 144.48769000651953, "tissue_lowres_scalef": 0.05

PS:這部有點像舊流程的ST_spot_detector的步驟了

其中:

  • issue_hires_scalef:將原始全分辨率圖像中的像素位置轉換為tissue_hires_image.png中的像素位置的比例因子。
  • tissue_lowres_scalef:將原始全分辨率圖像中的像素位置轉換為tissue_lowres_image.png中的像素位置的比例因子。
  • fiducial_diameter_fullres:跨越原始全分辨率圖像中基準點直徑的像素數。
  • spot_diameter_fullres:跨越原始全分辨率圖像中組織點直徑的像素數。

detected_tissue_image.jpg:


image.png

tissue_positions_list.txt:

$head -2 tissue_positions_list.csv
ACGCCTGACACGCGCT-1,0,0,0,1252,1211
TACCGATCCAACACTT-1,0,1,1,1372,1280

其中列對應著:

  • barcode:與該點相關的條形碼的順序。
  • in_tissue:二進制,指示該斑點位于組織的內部(1)還是外部(0)。
  • array_row:點在陣列中的行坐標從0到77。該陣列有78行。
  • array_col:陣列中點的列坐標。為了表示 the orange crate arrangement of the spots,此列索引對偶數行使用0到126的偶數,對奇數行使用1到127的奇數。注意,每行(偶數或奇數)有64個斑點。
  • pxl_col_in_fullres:全分辨率圖像中斑點中心的列像素坐標。
  • pxl_row_in_fullres:全分辨率圖像中斑點中心的行像素坐標。

7. BAM:Barcoded BAM

$cd outs/
$samtools view possorted_genome_bam.bam |head -5
A00984:21:HMKLFDMXX:2:2117:10357:1235   16  1   3000100 255 25M199730N72M23S    *   0   0   TTTTTTTTTTTTTTTTTTTTTTTTGCAAGAAAAAAAATCAGATAACCGAGGAAAATTATTCATTATGAAGTACTACTTTCCACTTCATTTCATCCCATGTACTCTGCGTTGATACCACTG    F:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFF    NH:i:1  HI:i:1  AS:i:83 nM:i:1  RE:A:I  xf:i:0  ts:i:21 li:i:0  BC:Z:ACCAGACAAC QT:Z:FFFFFFFFFF CR:Z:GACGACGATCCGCGTT   CY:Z:FFFFFFFFFFFFFFFF   CB:Z:GACGACGATCCGCGTT-1 UR:Z:CCTGTTTGTTGT   UY:Z:FFFFFFFFFFFF   UB:Z:CCTGTTTGTTGT   RG:Z:V1_Adult_Mouse_Brain:0:1:HMKLFDMXX:2
A00984:21:HMKLFDMXX:1:1306:5041:10034   16  1   3000100 255 25M199611N95M   *   0   0   TTTTTTTTTTTTTTTTTTTTTTTTGAAATGACCACAGTGTACTTTATTTAATGATTTTTGTACTTTGTGTTGCAATAAAATAAAAAAAAAATCTACAAAATTCAAATATATAAAATTTCA    FFFF:FFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF    NH:i:1  HI:i:1  AS:i:108    nM:i:0  RE:A:I  xf:i:0  li:i:0  BC:Z:ACCAGACAAC QT:Z:FFFFFFFFFF CR:Z:TGGTCTGTTGGGCGTA   CY:Z:FFFFFFFFFFFFFFFF   CB:Z:TGGTCTGTTGGGCGTA-1 UR:Z:GTTACCCTATGT   UY:Z:FFFFFFFFFFFF   UB:Z:GTTACCCTATGT   RG:Z:V1_Adult_Mouse_Brain:0:1:HMKLFDMXX:1
A00984:21:HMKLFDMXX:2:2345:21206:5087   16  1   3010019 255 98M22S  *   0   0   ATAGTGTCCCAGATTTCCTGGCTGTTTCTTGTTAGGATTTTTTTAGATTTAACATTTCTGTCATAGATTAATCTATTTTGCAGATGTAATCCCATGTACTCTGCGTTGATACCACTGCTT    F:FFFFFFFFFFF::FFF:FFFFFFFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFF:FFFFFF    NH:i:1  HI:i:1  AS:i:90 nM:i:3  RE:A:I  xf:i:0  ts:i:30 li:i:0  BC:Z:ACCAGACAAC QT:Z:FFFFFFFFFF CR:Z:ACGGTCACCGAGACCCY:Z:FFFFFFFFFFFFF,F:   CB:Z:ACGGTCACCGAGAACA-1 UR:Z:TCGATCTCGTAA   UY:Z:FFFFFFFFFFFF   UB:Z:TCGATCTCGTAA   RG:Z:V1_Adult_Mouse_Brain:0:1:HMKLFDMXX:2
A00984:21:HMKLFDMXX:1:1164:15980:17738  16  1   3013014 255 17M186702N103M  *   0   0   TTTTTTTTTTTTTTTGTTTAAAATGACCACAGTGTACTTTATTTAATGATTTTTGTACTTTGTGTTGCAATAAAATAAAAAAAAAATCTACAAAATTCAAATATATAAAATTTCAAGTTT    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF    NH:i:1  HI:i:1  AS:i:108    nM:i:0  RE:A:I  xf:i:0  li:i:0  BC:Z:ACCAGACAAC QT:Z:FFF,FFFFFF CR:Z:TCAAGGTTACTACACC   CY:Z:FFFFFFFFFFF:FFFF   CB:Z:TCAAGGTTACTACACC-1 UR:Z:CCGGGCAGTTAT   UY:Z:FFFFFFFFFFFF   UB:Z:CCGGGCAGTTAT   RG:Z:V1_Adult_Mouse_Brain:0:1:HMKLFDMXX:1
A00984:21:HMKLFDMXX:1:1451:3477:33912   16  1   3013014 255 17M186702N103M  *   0   0   TTTTTTTTTTTTTTTGTTTAAAATGACCACAGTGTACTTTATTTAATGATTTTTGTACTTTGTGTTGCAATAAAATAAAAAAAAAATCTACAAAATTCAAATATATAAAATTTCAAGTTT    FFFFFFFFFFFFFFFF:FF:FFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFF    NH:i:1  HI:i:1  AS:i:108    nM:i:0  RE:A:I  xf:i:0  li:i:0  BC:Z:ACCAGACAAC QT:Z:FFFFFFFFFF CR:Z:TCAAGGTTACTACACC   CY:Z:FFFFFFFFFFF:F,FF   CB:Z:TCAAGGTTACTACACC-1 UR:Z:CCGGGCAGTTAT   UY:Z:FFFFFFFFFFFF   UB:Z:CCGGGCAGTTAT   RG:Z:V1_Adult_Mouse_Brain:0:1:HMKLFDMXX:1

貌似沒看到官網講的AGAATGGTCTGCAT-1這種spot barcodeCB標簽包含帶短劃線分隔符的后綴,后跟數字的結構啊。。。

進行R的下游分析

由于現在還沒有現成的用于10X Visium空間轉錄組的R包,只好參考官網的R代碼

官網地址:https://support.10xgenomics.com/spatial-gene-expression/software/pipelines/latest/rkit

通過Loupe Browser 4.0.0進行下游分析

  • 打開Xftp,打開 cloupe.cloupe
    image.png
  • 查看tSNE


    image.png
  • UMAP


    image.png
  • Feacture Plot


    image.png

    Feature Plot視圖可讓您可視化每個點的一個或兩個基因的表達水平。此視圖使得根據一個或兩個基因的表達水平對點組進行閾值化變得容易。特征(在這種情況下為基因)可以在Y軸頂部或X軸右側的文本框中輸入。這些選擇器還包含一個控件,用于在線性和對數刻度之間切換軸的刻度。


    image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容