1. 程式人生 > >QIIME 2使用者文件. 10元資料Metadata(2018.11)

QIIME 2使用者文件. 10元資料Metadata(2018.11)

文章目錄

前情提要

QIIME 2使用者文件. 9元資料

Metadata in QIIME 2

https://docs.qiime2.org/2018.11/tutorials/metadata/

注:此例項需要一些基礎知識,要求完成本系列文章前兩篇內容:《1簡介和安裝》《4人體各部位微生物組分析》

詳者注:什麼是元資料?是描述資料的資料,樣本資訊是樣本元資料,物種註釋是特徵元資料。

元資料提供了從資料中獲得生物學發現的關鍵。在QIIME 2中,樣本元資料可以包括更多技術細節,例如在多次測序批次中用於每個樣本的DNA條形碼,或者樣本的描述,例如每個樣本來自人類微生物組對應時間序列研究中的分組、時間點和身體部位。特徵元資料通常是特徵註釋,例如分配給序列變數或OTU的物種註釋。QIIME 2中的許多外掛都使用樣本和功能元資料,本教程(以及其他QIIME 2教程)中提供了示例,說明如何在自己的微生物組分析中使用元資料。

元資料通常用於特定的微生物組研究而編寫,收集樣本元資料通常是在開始QIIME 2分析之前要進行的第一步。由研究人員決定哪些資訊是作為元資料收集和跟蹤的。QIIME 2不限制期望存在的元資料型別;沒有強制執行的“元資料標準”。這是你跟蹤任何你認為對你的分析很重要的資訊的機會,不幸的是,QIIME 2不能為你收集這些資訊。如果有疑問,儘可能多的收集元資料,因為您可能無法追溯收集某些型別的資訊。

提示:雖然QIIME 2沒有對要收集的元資料型別執行標準,但MIMARKS標準(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3367316/)為微生物組研究提供了建議,並可能有助於確定研究中要收集的資訊。如果計劃將資料儲存在資料存檔(例如ENA或QIITA)中,那麼確定存檔所期望的元資料型別也很重要,因為每個存檔可能都有其自己特定的要求。

元資料格式要求

Metadata Formatting Requirements

QIIME 2元資料通常儲存在TSV(即選項卡分隔值)檔案中。這些檔案通常具有.tsv.txt副檔名,但qiime2使用什麼副檔名並不重要。TSV檔案是用於儲存表格資料的簡單文字檔案,其格式受多種軟體支援,如從電子表格程式和資料庫中編輯、匯入和匯出。因此,使用您選擇的軟體操作QIIME 2元資料通常很簡單。如果有疑問,我們建議使用電子表格程式(如Microsoft Excel或Google工作表)編輯和匯出元資料檔案。

注: 除了TSV檔案之外,QIIME 2物件(即qza檔案)也可以用作元資料。有關詳細資訊,請參閱下面使用QIIME 2物件作為元資料的部分。QIIME 2將來還可能支援其他檔案格式。

QIIME 1使用者: 在QIIME 1中,TSV元資料檔案被稱為對映檔案(mapping files)。在QIIME 2中,我們將這些檔案稱為元資料檔案,但它們在概念上是相同的。QIIME 2元資料檔案與qiime 1對映檔案向後相容,這意味著您可以在QIIME 2中使用現有的QIIME 1對映檔案,而無需對該檔案進行修改。
以下各節介紹了QIIME 2元資料檔案的格式要求,以及如何驗證元資料檔案。由於TSV檔案沒有通用標準,因此必須遵守如下要求,並瞭解QIIME 2如何解釋檔案內容,以充分利用元資料!

元資料驗證

Metadata Validation

儲存在谷歌工作表中的樣品和功能元資料檔案可以使用keemi外掛進行驗證。選擇載入項>Keemi>驗證QIIME 2元資料檔案以驗證儲存在谷歌工作表中的元資料。

QIIME 2還將在軟體使用元資料檔案時自動驗證該檔案。但是,建議使用keemi驗證元資料,因為每次執行keemi時都會顯示所有驗證錯誤和警告資訊的報告。在QIIME 2中載入元資料通常一次只會出現一個錯誤,這會使識別和解決驗證問題變得很麻煩,特別是在元資料有很多問題的情況下。

注:將來,將有一個QIIME元資料驗證命令來在QIIME 2中執行keemi類似的驗證(例如,如果使用Google工作表對您來說不是一個可選項,中國大陸使用者就用不了Google工作表)。

前導和尾隨空格字元

Leading and trailing whitespace characters

如果元資料中的任何單元格包含前導或尾隨空格字元(例如空格、製表符),則載入檔案時將忽略這些字元。因此,前導和尾隨空格字元不重要,因此包含值“gut”和“ gut ”的單元格是等效的。此規則在下面描述的任何其他規則之前應用。

註釋和空行

Comments and Empty Rows

第一個單元格以井號(#)開頭的行被解釋為註釋,並可能出現在檔案中的任何位置。註釋行被QIIME 2忽略,僅供參考。不支援行內註釋(類似程式碼中使用的行末註釋)。

空行(例如空行或僅由空單元格組成的行)可能出現在檔案中的任何位置,並被忽略。

識別符號列

Identifier Column

元資料檔案中的第一列是識別符號(ID)列。此列定義與您的研究關聯的樣本或功能ID。不建議在單個元資料檔案中混合樣本和功能ID;將樣本和功能元資料儲存在單獨的檔案中。

ID列名(即ID行開頭)必須是以下值之一。下面列出的值不能用於命名檔案中的其他ID或列。

不區分大小寫:

  • id
  • sampleid
  • sample id
  • sample-id
  • featureid
  • feature id
  • feature-id

大小寫敏感的以下樣品列名,相容QIIME 1、Biom格式和QITTA

  • #SampleID
  • #Sample ID
  • #OTUID
  • #OTU ID
  • sample_name

ID(樣品名)命名的規則:

  • ID可以由任何Unicode字元組成,但不能以井號(#)開頭,因為這些行將被解釋為註釋並被忽略。有關在研究中選擇識別符號的建議,請參閱下方識別符號建議一節。
  • ID不能為空(即,它們必須至少包含一個字元)。
  • ID必須唯一(執行精確的字串匹配以檢測重複項)。
  • 檔案中必須至少存在一個ID。
  • ID不能使用上面列出現過的任何保留ID列名稱。

識別符號的建議

Recommendations for Identifiers

QIIME 2的目標是在元資料檔案的所有單元格中支援任意Unicode字元。但是,考慮到任何人都可以開發QIIME 2外掛和介面,我們不能保證任意Unicode字元可以與所有外掛和介面一起使用。因此,我們可以向用戶推薦在識別符號中應該安全使用的字元,並且我們正在為外掛和介面開發人員準備資源,以幫助他們使他們的軟體儘可能相容性更好(robust, 穩定)。當開發人員資源可用時,我們將在QIIME 2論壇的開發人員討論欄目中宣佈。

帶有問題字元的樣本和功能識別符號往往會給我們的使用者帶來最常見碰到的問題。根據我們對QIIME 1、QIIME 2以及其他生物資訊學和命令列工具的經驗,我們可以為識別符號推薦以下屬性:

  • 識別符號的長度應不超過36個字元;
  • 識別符號只能包含ASCII字母數字字元(即[A-Z]、[A-Z]或[0-9]範圍內)、句點(.)字元或短劃線(-)字元;(儘可能僅使用字母數字組合,且僅以字母開頭,可相容更多分析工具)
  • 要記住的一個重要點是,有時示例元資料中的值可以成為識別符號。例如,分類法註釋可以在qiime taxa摺疊後成為特徵識別符號,而示例或特徵元資料值可以在應用QIIME特徵表後成為識別符號。如果您計劃在元資料值可以成為識別符號的地方應用這些或類似的方法,那麼如果這些值也符合這些識別符號建議,您將不太可能遇到問題。
  • 為了幫助使用者瞭解這些建議,Keemi元資料驗證器將警告使用者不符合上述建議的識別符號。
  • 使用者可能對cual-id(https://msystems.asm.org/content/1/1/e00010-15 原作者開發的一款樣本命名軟體)軟體感興趣,以幫助建立樣本識別符號cual-id檔案還提供了一些關於如何設計識別符號的討論。

注: 一些生物資訊學工具對識別符號的要求可能比這裡概述的建議更嚴格。例如,Illumina示例表識別符號不能具有點.字元,而我們在推薦的字符集中包含這些字元,尤其是使用USEARCH軟體時樣本名不能有點,因為點是樣本名與序列ID的分割符。同樣,phylip要求識別符號最多為10個字元,而我們建議長度不超過36個字元。如果計劃匯出資料,在對識別符號有更嚴格要求的其他工具在分析,我們建議您在QIIME 2分析中也遵循這些要求,以簡化後續處理步驟。

注: 這裡建議的長度(36個字元或更少)設計為儘可能短,同時仍然支援用破折號格式化的UUID版本4。

元資料列

Metadata Columns

ID列是元資料檔案中的第一列,可以選擇後面跟隨定義與每個樣本或功能ID關聯元資料的附加列。元資料檔案不需要具有附加的元資料列,因此僅包含ID列的檔案是有效的QIIME 2元資料檔案。

以下規則適用於列名:

  • 可以由任何Unicode字元組成。
  • 不能為空(即列名必須至少包含一個字元)。
  • 必須唯一(執行精確的字串匹配以檢測重複項)。
  • 列名不能使用上面列識別符號列中描述的任何保留ID列名。

以下規則適用於列值:

  • 可以由任何Unicode字元組成。
  • 空單元格表示缺失資料。其它值(如NA)不會被解釋為缺失資料;只有空單元格才被識別為“缺失”。請注意,僅由空白字元組成的單元格也被解釋為缺失資料,因為前導和尾隨的空白字元總是被忽略,從而有效地使單元格為空。

注意: 空單元格只表示缺失資料,但不表示可能缺失哪種型別的資料。您可以使用您選擇的其他值來表示不同型別的缺失資料(例如,“不適用not applicable”與“未收集not collected”)。這些自定義值不會被解釋為QIIME 2中的缺失資料,但在進一步分析之前,您仍然可以記錄並使用這些“缺失”的元資料值對資料執行篩選(例如,使用QIIME功能表篩選樣本可根據自定義“缺失”值篩選樣本)。

列型別

Column Types

QIIME 2目前支援分類和數字元資料列。預設情況下,QIIME 2將嘗試推斷每個元資料列的型別:如果該列僅包含數字或缺少的資料,則該列將被推斷為數字。否則,如果列包含任何非數字值,則該列將被推斷為分類列。分類列和數字列都支援缺失資料(即空單元格)。

QIIME 2支援可選的comment指令,允許使用者顯式地宣告列的型別,避免了上面描述的列型別推斷。如果有一列看起來是數字的,但實際上應被視為分類元資料(例如樣品分組列,其中分組型別被標記為1、2、3會被當時數值列),則這一點很有用。顯式宣告列的型別也會使元資料檔案更具描述性,因為預期的列型別包含在元資料中,而不是依賴軟體來推斷型別(這並不總是透明的)。

可以使用可選的comment指令在元資料檔案中宣告列型別。comment指令必須出現在頭的正下方。該行的第一個單元格必須是#q2:types,以指示該行是註釋指令。後續單元格可以包含類別值categorical或數字值numeric(大小寫均可)。如果不希望將型別賦給列(在這種情況下將推斷該型別),也支援空單元格。因此,在不必為元資料中的每一列宣告型別的情況下,很容易包含此comment指令。

小提示:使用QIIME元資料表檢視QIIME 2元資料的列型別。無論您使用的是comment指令、型別推斷還是這兩種方法的組合,這都是有效的。

注意: 在QIIME 2和QIIME 1的早期版本中,元資料列通常被稱為元資料類別。既然我們支援元資料列型別化,這允許您判斷一個列是否包含數字或分類資料,那麼我們最終將使用諸如分類元資料類別或數字元資料類別之類的術語,這可能會令人困惑。我們現在避免使用術語category,除非它在分類元資料的上下文中使用。我們已經盡了最大努力更新了我們的軟體和文件,以使用元資料列(metadata column)的叫法而不是元資料類別(metadata category),但是仍然可能會有以前的研究中使用此類名稱。

注意
#q2:types comment指令是唯一支援的comment指令;其他指令可能會在將來新增(例如q2:units)。因此,不允許以#q2:開頭的行,因為我們將保留該名稱空間以供將來的註釋指令使用。

數字格式化

Number Formatting

如果要將列解釋為數字元資料列(通過列型別推理或使用#q2:types 註釋指令指定),則必須按照以下規則格式化列中的數字:

  • 使用十進位制數字系統:ASCII字元[0-9],.對於可選的小數點,和+和-分別表示正負號。
    • 示例:123、123.45、0123.40、-0.000123、+1.23
  • 科學記數法可與數字記數法一起使用;支援e和E
    • 示例:1E9,1.23E-4,-1.2E-08,+4.5E+6
  • 總共只支援15位數字(包括小數點前後),以保持在64位浮點規範內。總數超過15位的數字不受支援,將導致未定義的行為
  • 不支援非數字(例如 NaN、nan)或無窮大(例如 Inf、-Infinity)的常用表示。對丟失的資料使用空單元格(而不是NaN)。此時在QIIME 2元資料檔案中不支援無窮大。

高階檔案格式詳細資訊

Advanced File Format Details

注:如果使用電子表格程式(如Microsoft Excel、Google Sheets)建立和匯出QIIME 2元資料檔案,則通常不需要本節中的詳細資訊。如果您手工建立TSV檔案(例如在文字編輯器中),或者編寫自己的軟體來使用或生成QIIME 2元資料檔案,那麼本節中的詳細資訊可能很重要,請繼續閱讀!

TSV方言和語法分析器

TSV Dialect and Parser

QIIME 2嘗試與從Microsoft Excel匯出的TSV檔案進行互操作,因為這是我們在使用中看到的最常見的TSV“方言”。QIIME 2元資料解析器(即讀取器)使用python csv模組excel tab方言來解析TSV元資料檔案。此方言支援雙引號字元(“)包裝欄位,以允許欄位中包含製表符、換行符和回車符。要在欄位中包含文字雙引號字元,雙引號字元必須緊跟在另一個雙引號字元之前。有關Excel選項卡方言的完整文件,請參閱python csv模組。

編碼和行尾

Encoding and Line Endings

元資料檔案必須編碼為UTF-8,這與ASCII編碼向後相容。
為了實現互操作性,元資料分析器都支援Unix行尾(\n)、Windows/DOS行尾(\r\n)和“經典Mac OS”行尾(\r)。在QIIME 2中將元資料檔案寫入磁碟時,行尾將始終為\r\n(Windows/DOS行尾)

尾隨的空單元格和交錯資料

Trailing Empty Cells and Jagged Data

元資料分析器忽略出現在由頭宣告的欄位之後的任何尾隨的空單元格。這主要是為了與從一些電子表格程式匯出的檔案進行互操作。這些尾隨的單元格/列可能參差不齊(或整齊);在讀取檔案時,它們將被忽略。

如果一行不包含標題宣告的欄位,則將填充空單元格以匹配標題長度(同樣,這主要是為了與匯出的電子表格進行互操作)。

譯者注:元資料編寫注意要求:

為了方便分析,對樣品的描述必須包括一些基本資訊和格式規範,QIIME2中實驗設計mapping file基本要求如下:

  • 檔案必須是製表符分隔的純文字檔案,建議使用Excel編輯並複製到純文字編輯器(如editplus, ultraedit等)中儲存為UTF-8編碼的txt格式;
  • 註釋行以#開頭,可以出現在文中任意位置,程式會自己忽略;
  • 空行也會被忽略;
  • 第一行為表頭,與QIIME1相比不再以#開頭,更合理;
  • 表頭每列名稱必須唯一,不能包括標點符號;(建議實驗設計只使用字母和數字,任何符號在後續分析都可能會有問題)
  • 檔案至少包括除表頭外的一行資料;
  • 第一列為樣品名,用於標識每個樣品,必須名字唯一。

使用元資料

Using Metadata Files

mkdir qiime2-metadata-tutorial
cd qiime2-metadata-tutorial

# 下載示例樣本資訊
wget \
  -O "sample-metadata.tsv" \
  "https://data.qiime2.org/2018.11/tutorials/moving-pictures/sample_metadata.tsv"

由於這是一個TSV檔案,它可以在各種應用程式中開啟和編輯,包括文字編輯器、Microsoft Excel和Google工作表(例如,如果您計劃使用Keemi驗證元資料)。
QIIME 2還提供了一個視覺化工具,用於檢視互動表中的元資料:

qiime metadata tabulate \
  --m-input-file sample-metadata.tsv \
  --o-visualization tabulated-sample-metadata.qzv

輸出結果:tabulated-sample-metadata.qzv

image

此檔案網頁中支援排序,篩選。

問題
根據表tabulated-sample-metadata.qzv中的表格,有多少樣本與subject-1相關?有多少樣本與gut腸道部位有關?提示:使用搜索框和/或列排序選項來幫助執行此查詢。

使用QIIME2物件元資料

Using QIIME 2 Artifacts as Metadata

除了TSV元資料檔案之外,QIIME 2還支援將某些型別的物件作為元資料。這方面的一個例子是SampleData[AlphaDiversity]型別的物件。

要開始將物件理解為元資料,首先下載一個示例物件:

詳者注:微生物組分析的Alpha、Beta多樣性值,在本質上,也是樣本的一種屬性,可加入元資料表中,方便後續分析。

# 下載Alpha多樣性PD演算法的結果
wget \
  -O "faith_pd_vector.qza" \
  "https://data.qiime2.org/2018.11/tutorials/metadata/faith_pd_vector.qza"

要將此物件視為元資料,只需將其傳遞給希望看到元資料的任何方法或視覺化工具(例如,metadata tabulateemperor plot):

qiime metadata tabulate \
  --m-input-file faith_pd_vector.qza \
  --o-visualization tabulated-faith-pd-metadata.qzv

輸出結果:tabulated-faith-pd-metadata.qzv

image
圖中的樣本新增了對應pd多樣性值

問題:Faith’s PD的最大值是多少?最小值是多少?提示:使用列排序功能。

問題:qzv檔案包括結果生成的過程,請檢視該結果的追溯圖,研究分析過程。

合併原資料

Merging metadata

由於元資料可以來自許多不同的源,因此在執行命令時,QIIME 2支援元資料合併。基於上面的示例,只需多次傳遞--m-input-file就可以將元資料列組合到指定的檔案中:

qiime metadata tabulate \
  --m-input-file sample-metadata.tsv \
  --m-input-file faith_pd_vector.qza \
  --o-visualization tabulated-combined-metadata.qzv

合併後生成的元資料將包含所有指定檔案中識別符號的交集。換句話說,合併的元資料將只包含在所有提供的元資料檔案中共享的識別符號。這是一個使用資料庫術語的內部聯接。

問題: 修改上面的命令,將SampleData[AlphaDiversity]的均勻度向量合併到Faith’s PD向量之後。合併三個物件時會發生什麼?結果元資料視覺化中有多少列?這些列中有多少列表示樣本ID?這些列中有多少列表示SampleData[AlphaDiversity]度量?如果元資料檔案的順序顛倒了,視覺化會發生什麼?提示,仔細檢視列順序。

在QIIME 2中接受元資料的任何地方都支援元資料合併。例如,根據研究元資料或樣本alpha多樣性為Emperor plot著色可能很有意思。這可以通過提供樣本元資料檔案和SampleData[AlphaDiversity]物件來實現:

# 組合Alpha和Beta多樣性
wget \
  -O "unweighted_unifrac_pcoa_results.qza" \
  "https://data.qiime2.org/2018.11/tutorials/metadata/unweighted_unifrac_pcoa_results.qza"
  
qiime emperor plot \
  --i-pcoa unweighted_unifrac_pcoa_results.qza \
  --m-metadata-file sample-metadata.tsv \
  --m-metadata-file faith_pd_vector.qza \
  --o-visualization unweighted-unifrac-emperor-with-alpha.qzv

image

可以按Alpha多樣性進行PCoA的著色了,這樣探索更有意思

問題:那一類取樣位置有最高的Faith’s進化多樣性值?檢視中使用按body site上色,再按Faith's PD連續著色;

探索特徵元資料

Exploring feature metadata

wget \
  -O "rep-seqs.qza" \
  "https://data.qiime2.org/2018.11/tutorials/metadata/rep-seqs.qza"
wget \
  -O "taxonomy.qza" \
  "https://data.qiime2.org/2018.11/tutorials/metadata/taxonomy.qza"
qiime metadata tabulate \
  --m-input-file rep-seqs.qza \
  --m-input-file taxonomy.qza \
  --o-visualization tabulated-feature-metadata.qzv

image

現在將序列ID、序列物種註釋和置信度合併一起展示了。

問題:所有.qza都是可檢視的元資料嗎?使用qiime metadata tabulate自己試試吧。

最後,在元資料表生成的視覺化中有可用的匯出選項。使用tabulated-feature-metadata.qzv的結果,將資料匯出為新的tsv。在TSV檢視器或文字編輯器中開啟該檔案,並注意內容與視覺化中的互動式元資料表相同。

問題:是否可以將上述步驟中匯出的TSV用作元資料?能夠匯出元資料有哪些好處(提示:請參閱上面關於元資料合併的討論)?關於一些潛在的缺點(提示:當資料從QIIME 2匯出時,資料來源會發生什麼情況)?

譯者注:網頁中檢視可以匯出任意格式的結果,並可追溯實驗的分析過程。匯出後分析過程將不可追溯。

Reference

Bolyen E, Rideout JR, Dillon MR, Bokulich NA, Abnet C, Al-Ghalith GA, Alexander H, Alm EJ, Arumugam M, Asnicar F, Bai Y, Bisanz JE, Bittinger K, Brejnrod A, Brislawn CJ, Brown CT, Callahan BJ, Caraballo-Rodríguez AM, Chase J, Cope E, Da Silva R, Dorrestein PC, Douglas GM, Durall DM, Duvallet C, Edwardson CF, Ernst M, Estaki M, Fouquier J, Gauglitz JM, Gibson DL, Gonzalez A, Gorlick K, Guo J, Hillmann B, Holmes S, Holste H, Huttenhower C, Huttley G, Janssen S, Jarmusch AK, Jiang L, Kaehler B, Kang KB, Keefe CR, Keim P, Kelley ST, Knights D, Koester I, Kosciolek T, Kreps J, Langille MG, Lee J, Ley R, Liu Y, Loftfield E, Lozupone C, Maher M, Marotz C, Martin BD, McDonald D, McIver LJ, Melnik AV, Metcalf JL, Morgan SC, Morton J, Naimey AT, Navas-Molina JA, Nothias LF, Orchanian SB, Pearson T, Peoples SL, Petras D, Preuss ML, Pruesse E, Rasmussen LB, Rivers A, Robeson, II MS, Rosenthal P, Segata N, Shaffer M, Shiffer A, Sinha R, Song SJ, Spear JR, Swafford AD, Thompson LR, Torres PJ, Trinh P, Tripathi A, Turnbaugh PJ, Ul-Hasan S, van der Hooft JJ, Vargas F, Vázquez-Baeza Y, Vogtmann E, von Hippel M, Walters W, Wan Y, Wang M, Warren J, Weber KC, Williamson CH, Willis AD, Xu ZZ, Zaneveld JR, Zhang Y, Zhu Q, Knight R, Caporaso JG. 2018. QIIME 2: Reproducible, interactive, scalable, and extensible microbiome data science. PeerJ Preprints 6:e27295v2 https://doi.org/10.7287/peerj.preprints.27295v2

譯者簡介

劉永鑫,博士。2008年畢業於東北農大微生物學專業。2014年中科院遺傳發育所獲生物資訊學博士學位,2016年博士後出站留所工作,任巨集基因組學實驗室工程師,目前主要研究方向為巨集基因組學、資料分析與可重複計算和植物微生物組、QIIME 2專案參與人。發於論文12篇,SCI收錄9篇。2017年7月創辦“巨集基因組”公眾號,目前分享巨集基因組、擴增子原創文章400+篇,代表博文有《擴增子圖表解讀、分析流程和統計繪圖三部曲》,關注人數3.2萬+,累計閱讀500萬+。

猜你喜歡

寫在後面

為鼓勵讀者交流、快速解決科研困難,我們建立了“巨集基因組”專業討論群,目前己有國內外3000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註“姓名-單位-研究方向-職稱/年級”。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍末解決群內討論,問題不私聊,幫助同行。
image

學習擴增子、巨集基因組科研思路和分析實戰,關注“巨集基因組”
image

image

點選閱讀原文,跳轉最新文章目錄閱讀
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA