BIDS學(xué)習(xí)筆記

Welcome to the BIDS Starter Kit — BIDS starter kit (bids-standard.github.io)

1 BIDS的文件組織

1.1 文件夾

BIDS中將所有數(shù)據(jù)組織為四個層級:

project/
└── subject
    └── session
        └── datatype
  • 工程(project) 最頂層的文件夾濒析,雖然可以為任意名稱绷旗,但是最好能夠體現(xiàn)出數(shù)據(jù)集的內(nèi)容
  • 被試(subject)第二層文件夾珊佣,命名規(guī)則為sub-<participant label>,其中participant label對于每個被試應(yīng)該有所不同
  • 會話(session)第三層文件夾修档,命名規(guī)則為ses-<session label>,一個會話可以理解為一次記錄活動府框,在這個會話期間吱窝,受試者會待在掃描儀或頭盔中。如果在幾次不同的場合收集了同一個受試者的數(shù)據(jù)迫靖,那么就會產(chǎn)生多個會話院峡。如果每個受試者只有一次會話,那么這個層次結(jié)構(gòu)可以省略袜香。
  • 數(shù)據(jù)類型(datatype)最后一層文件夾撕予,表示數(shù)據(jù)的類型,包括:
    • anat: 解剖MRI數(shù)據(jù)蜈首,通常包含腦部結(jié)構(gòu)的詳細信息实抡,如T1加權(quán)欠母、T2加權(quán)、質(zhì)子密度等
    • func: 功能MRI數(shù)據(jù)
    • fmap: 場映射數(shù)據(jù)吆寨,用于校正MRI圖像中的梯度場偏差赏淌。
    • dwi: 擴散MRI數(shù)據(jù),提供有關(guān)大腦白質(zhì)中水分子的擴散方向和距離的信息
    • perf: 動脈自旋標記(ASL)數(shù)據(jù)啄清,用于評估大腦血流量
    • eeg: 腦電圖數(shù)據(jù)六水,記錄大腦皮層電活動
    • meg: 腦磁圖數(shù)據(jù),記錄大腦皮層產(chǎn)生的磁場
    • ieeg: 顱內(nèi)腦電圖數(shù)據(jù)辣卒,記錄大腦內(nèi)部區(qū)域的電活動
    • beh: 行為數(shù)據(jù)掷贾,包括問卷調(diào)查、任務(wù)執(zhí)行結(jié)果等
    • pet: 正電子發(fā)射斷層掃描(PET)數(shù)據(jù)荣茫,用于測量大腦中的代謝活動
    • micr: 顯微鏡數(shù)據(jù)想帅,可能包括組織切片或細胞成像的數(shù)據(jù)
    • nirs: 近紅外光譜學(xué)數(shù)據(jù),用于測量大腦組織中的氧合血紅蛋白和脫氧血紅蛋白的濃度
    • motion: 運動捕捉數(shù)據(jù)啡莉,記錄受試者在掃描過程中的頭部或身體運動

一個典型的BIDS文件目錄為:

ds001
├── dataset_description.json
├── participants.tsv
├── sub-01
│   ├── anat
│   │   ├── sub-01_inplaneT2.nii.gz
│   │   └── sub-01_T1w.nii.gz
│   └── func
│       ├── sub-01_task-balloonanalogrisktask_run-01_bold.nii.gz
│       ├── sub-01_task-balloonanalogrisktask_run-01_events.tsv
│       ├── sub-01_task-balloonanalogrisktask_run-02_bold.nii.gz
│       ├── sub-01_task-balloonanalogrisktask_run-02_events.tsv
│       ├── sub-01_task-balloonanalogrisktask_run-03_bold.nii.gz
│       └── sub-01_task-balloonanalogrisktask_run-03_events.tsv
├── sub-02
│   ├── anat
│   │   ├── sub-02_inplaneT2.nii.gz
│   │   └── sub-02_T1w.nii.gz
│   └── func
│       ├── sub-02_task-balloonanalogrisktask_run-01_bold.nii.gz
│       ├── sub-02_task-balloonanalogrisktask_run-01_events.tsv
│       ├── sub-02_task-balloonanalogrisktask_run-02_bold.nii.gz
│       ├── sub-02_task-balloonanalogrisktask_run-02_events.tsv
│       ├── sub-02_task-balloonanalogrisktask_run-03_bold.nii.gz
│       └── sub-02_task-balloonanalogrisktask_run-03_events.tsv
...
...
└── task-balloonanalogrisktask_bold.json

1.2 文件

BIDS中主要有三類文件港准,分別是:

  • json文件
  • tsv文件
  • 原始數(shù)據(jù)文件

BIDS對于這些文件的明明有一些特定的要求:

  • 不要在文件名中包含空格(很重要!_中馈G掣住)
  • 只使用字母、數(shù)字魄咕、連字符和下劃線
  • 不要依賴于字母大小寫區(qū)分文件名(因為subj.nii.gzSubj.nii.gz在某些操作系統(tǒng)下可能被認為是同一個文件)
  • 在整個項目中使用同一種命名法(駝峰命名法或蛇形命名法)

文件名模板

BIDS中的文件應(yīng)該采用如下模板進行命名:
![[Pasted image 20240620093700.png]]

  • 用下劃線連接suffix進行說明衩椒,suffix表示數(shù)據(jù)類型(如anat、func蚕礼、eeg等)
  • 實體由<鍵>-<值>對組成烟具,鍵值對之間以下劃線進行分割
  • Keys, value和suffix只能包含字母和/或數(shù)字(沒太搞懂什么意思)
  • 鍵值對在文件名中必須以特定的順序出現(xiàn)。
  • 某些實體的鍵值對只能用于派生數(shù)據(jù)奠蹬。

派生數(shù)據(jù)(Derivative Data)是指從原始數(shù)據(jù)(通常是神經(jīng)影像數(shù)據(jù))通過某種算法或處理流程得到的新的數(shù)據(jù)集朝聋。這些數(shù)據(jù)集通常是為了特定的分析目的而創(chuàng)建的,它們不是直接從掃描儀或其他數(shù)據(jù)采集設(shè)備獲得的原始數(shù)據(jù)囤躁。

在這里我只列出來冀痕,我可能需要的模板:

anat: Anatomical MRI

sub-<label>/
    [ses-<label>/]
        anat/
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_<suffix>.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_<suffix>.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_chunk-<index>]_<suffix>.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_chunk-<index>]_<suffix>.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_mod-<label>][_chunk-<index>]_defacemask.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_mod-<label>][_chunk-<index>]_defacemask.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_echo-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MEGRE.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_echo-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MEGRE.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_echo-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MESE.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_echo-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MESE.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_VFA.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_VFA.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_inv-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_IRT1.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_inv-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_IRT1.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>][_flip-<index>]_inv-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MP2RAGE.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>][_flip-<index>]_inv-<index>[_part-<mag|phase|real|imag>][_chunk-<index>]_MP2RAGE.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MPM.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MPM.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MTS.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>][_echo-<index>]_flip-<index>_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MTS.nii[.gz]
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MTR.json
            sub-<label>[_ses-<label>][_task-<label>][_acq-<label>][_ce-<label>][_rec-<label>][_run-<index>]_mt-<on|off>[_part-<mag|phase|real|imag>][_chunk-<index>]_MTR.nii[.gz]

func: Functional MRI

sub-<label>/
    [ses-<label>/]
        func/
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_bold.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_bold.nii[.gz]
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_cbv.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_cbv.nii[.gz]
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_sbref.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_sbref.nii[.gz]
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_mod-<label>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_noRF.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_mod-<label>][_echo-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_noRF.nii[.gz]
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_chunk-<index>]_phase.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_echo-<index>][_chunk-<index>]_phase.nii[.gz]
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>]_events.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>]_events.tsv
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_physio.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_physio.tsv.gz
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_stim.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_stim.tsv.gz

dwi: Diffusion MRI

sub-<label>/
    [ses-<label>/]
        dwi/
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_dwi.bval
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_dwi.bvec
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_dwi.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_dwi.nii[.gz]
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_sbref.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_part-<mag|phase|real|imag>][_chunk-<index>]_sbref.nii[.gz]
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_chunk-<index>]_ADC.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_chunk-<index>]_ADC.nii[.gz]
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_chunk-<index>]_TRACE.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_chunk-<index>]_TRACE.nii[.gz]
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_physio.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_physio.tsv.gz
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_stim.json
            sub-<label>[_ses-<label>][_acq-<label>][_rec-<label>][_dir-<label>][_run-<index>][_recording-<label>]_stim.tsv.gz

eeg

sub-<label>/
    [ses-<label>/]
        eeg/
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_channels.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_channels.tsv
            sub-<label>[_ses-<label>][_acq-<label>][_space-<label>]_coordsystem.json
            sub-<label>[_ses-<label>][_acq-<label>][_run-<index>][_space-<label>]_electrodes.json
            sub-<label>[_ses-<label>][_acq-<label>][_run-<index>][_space-<label>]_electrodes.tsv
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_eeg.<extension>
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_eeg.json
            sub-<label>[_ses-<label>][_acq-<label>]_photo.jpg
            sub-<label>[_ses-<label>][_acq-<label>]_photo.png
            sub-<label>[_ses-<label>][_acq-<label>]_photo.tif
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_events.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>]_events.tsv
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_physio.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_physio.tsv.gz
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_stim.json
            sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_stim.tsv.gz

1.3 派生文件

所有符合規(guī)范的派生數(shù)據(jù)集都包含一個dataset_description.json文件。其中狸演,新增了一些字段包括:

  • DatasetType:用于區(qū)分“派生”數(shù)據(jù)集和“原始”數(shù)據(jù)集言蛇。
  • GeneratedBy:一個過程列表,這些過程生成了數(shù)據(jù)宵距。
  • SourceDatasets:生成派生數(shù)據(jù)時使用的數(shù)據(jù)集列表腊尚。

也許BIDS的使用并沒有那么復(fù)雜,這里有大量的BIDS轉(zhuǎn)換工具满哪,不過我還沒有使用婿斥,等以后有機會再說

Brain Imaging Data Structure (neuroimaging.io)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劝篷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子民宿,更是在濱河造成了極大的恐慌娇妓,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件活鹰,死亡現(xiàn)場離奇詭異哈恰,居然都是意外死亡,警方通過查閱死者的電腦和手機志群,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門着绷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赖舟,你說我怎么就攤上這事蓬戚。” “怎么了宾抓?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長豫喧。 經(jīng)常有香客問我石洗,道長,這世上最難降的妖魔是什么紧显? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任讲衫,我火速辦了婚禮,結(jié)果婚禮上孵班,老公的妹妹穿的比我還像新娘涉兽。我一直安慰自己,他們只是感情好篙程,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布枷畏。 她就那樣靜靜地躺著,像睡著了一般虱饿。 火紅的嫁衣襯著肌膚如雪拥诡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天氮发,我揣著相機與錄音渴肉,去河邊找鬼。 笑死爽冕,一個胖子當著我的面吹牛仇祭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颈畸,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼乌奇,長吁一口氣:“原來是場噩夢啊……” “哼没讲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起华弓,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤食零,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寂屏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贰谣,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年迁霎,在試婚紗的時候發(fā)現(xiàn)自己被綠了吱抚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡考廉,死狀恐怖秘豹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昌粤,我是刑警寧澤既绕,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站涮坐,受9級特大地震影響凄贩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袱讹,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一疲扎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捷雕,春花似錦椒丧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至征绸,卻和暖如春久橙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背管怠。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工淆衷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渤弛。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓祝拯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佳头,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

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