使用機器學習和Python揭開DNA測序神秘面紗

2021-01-11 CDA數據分析師

「脫氧核糖核酸(DNA)是一種分子,其中包含每個物種獨特的生物學指令。DNA及其包含的說明在繁殖過程中從成年生物傳給其後代。「

簡介

基因組是生物體中DNA的完整集合。所有生物物種都有一個基因組,但是它們的差異很大。例如,人類基因組被排列成23條染色體,這有點像百科全書被編輯成23卷。如果算上所有字符(單個DNA「鹼基對」),每個人類基因組中將有超過60億個字符。所以這是一個巨大的工程。

人類基因組大約有60億個字符。如果您認為基因組(完整的DNA序列)就像一本書,那就是一本由大約60億個「 A」,「 C」,「 G」和「 T」字母組成的書。每個人都有獨特的基因組。儘管如此,科學家發現人類基因組的大部分彼此相似。

作為數據驅動的科學,基因組學廣泛地利用機器學習來捕獲數據中的關係並推斷出新的生物學假設。但是,要想擁有從不斷增長的基因組學數據中提取新發現的能力,就需要更強大的機器學習模型。通過有效利用大型數據集,深度學習已給了計算機視覺和自然語言處理等領域帶來了很大進步。它已成為許多基因組建模任務的首選方法,包括預測遺傳變異對基因調控機制(如DNA接受性和DNA剪接)的影響。

在本文中,我們將了解如何解釋DNA結構以及如何使用機器學習算法來建立DNA序列數據的預測模型。

DNA序列如何表示?

該圖顯示了DNA雙螺旋結構的一小部分。

DNA的雙螺旋結構

雙螺旋是DNA的化學表示。但是DNA很特別。它是由四種類型的鹼基組成的核苷酸:腺嘌呤(A),胸腺嘧啶(T),鳥嘌呤(G)和胞嘧啶(C)。我們總是稱它們為A,C,G和T。

這四種化學物質通過氫鍵以任何可能的順序連接在一起,形成一條鏈,這形成了DNA雙螺旋的一條線。雙螺旋的第二條線平衡了第一根。因此,如果第一條線上有A,則第二條線上對應位置必須為T。此外,C和G始終保持平衡。因此,一旦您確定了螺旋的一個螺紋,就可以隨時拼寫另一個螺紋。

單個DNA線(螺旋)的序列

這些鹼基的順序決定了DNA鏈中包含哪些生物學指令。例如,序列ATCGTT可能指示藍眼睛,而ATCGCT可能指示棕色眼睛。

使用Python處理DNA序列數據

熟悉諸如Biopython和squiggle之類的Python包將在處理Python中的生物序列數據時為您提供幫助。

Biopython是python模塊的集合,這些模塊提供處理DNA,RNA和蛋白質序列操作的功能,例如DNA字符串的反向互補,尋找蛋白質序列中的基序列等。它提供了很多解析器,可以讀取所有主要的遺傳資料庫,例如 GenBank,SwissPort,FASTA等,

安裝Biopython

pip install biopython

**Squiggle:**這是一個工具,可以自動生成交互式網頁下的原始DNA序列的二維圖形表示。考慮到易用性,Squiggle實現了幾種序列可視化算法,並引入了「為方便人類使用而做」的新穎可視化方法。

安裝Squiggle

pip install Squiggle

DNA序列數據通常以「 fasta」格式的文件格式儲存。Fasta格式通過包含注釋的大於號和包含序列的另一行作為組成自己的單行數據:

「AAGGTGAGTGAAATCTCAACACGAGTATGGTTCTGAGAGTAGCTCTGTAACTCTGAGG」*

文件可以包含一個或多個DNA序列。還有許多其他格式,但是fasta是最常見的格式。

這是使用Biopython處理Fasta格式的DNA序列的簡要示例。序列對象將包含諸如序列ID和sequence等屬性以及可以直接使用的序列長度。

我們將使用Biopython的Bio.SeqIO來解析DNA序列數據(fasta)。它提供了一個簡單的統一界面來輸入和輸出各種文件格式。

from Bio import SeqIOfor for sequence in SeqIO.parse('./drive/My Drive/example.fa', "fasta"): print(sequence.id) print(sequence.seq)print(len(sequence))

這樣就產生了序列ID,序列本身和序列長度。

ENST00000435737.5ATGTTTCGCATCACCAACATTGAGTTTCTTCCCGAATACCGACAAAAGGAGTCCAGGGAATTTCTTTCAGTGTCACGGACTGTGCAGCAAGTGATAAACCTGGTTTATACAACATCTGCCTTCTCCAAATTTTATGAGCAGTCTGTTGTTGCAGATGTCAGCAACAACAAAGGCGGCCTCCTTGTCCACTTTTGGATTGTTTTTGTCATGCCACGTGCCAAAGGCCACATCTTCTGTGAAGACTGTGTTGCCGCCATCTTGAAGGACTCCATCCAGACAAGCATCATAAACCGGACCTCTGTGGGGAGCTTGCAGGGACTGGCTGTGGACATGGACTCTGTGGTACTAAATGAAGTCCTGGGGCTGACTCTCATTGTCTGGATTGACTGA390

我們可以可視化這些DNA序列嗎?

是的,我們可以使用Squiggle python庫將這些DNA序列可視化,進行操作並運行:

Squiggle example.fa --method=gates

DNA序列被轉換為2D圖像,其中T,A,C和G分別在上,下,左和右方位。這給每個序列一個「形狀」。

現在,我們來可視化另一個包含6個DNA序列的fasta數據。

Squiggle example.fasta

在此,首先使用2位編碼方案將DNA序列轉換為二進位序列,該方案將T映射為00,C映射為01,A映射為10,G映射為11。

現在我們可以輕鬆加載和操作生物序列數據,那麼怎麼將數據用於機器學習或深度學習?

由於機器學習或深度學習模型要求輸入必須是特徵矩陣或數字值,但目前我們仍然以字符或字符串格式存儲數據。因此,下一步是將這些字符編碼為矩陣。

編碼序列數據有3種通用方法:

順序編碼DNA序列獨熱(one-hot)編碼DNA序列DNA序列作為獨立「語言」,稱為k-mer計數讓我們分別進行實現,看看哪一個為我們提供了完美的輸入。

順序編碼DNA序列

在這種方法中,我們需要將每個鹼基編碼為序數值。例如,「 ATGC」變為[0.25、0.5、0.75、1.0]。任何其他字符(例如「 N」)都可以為0。

因此,讓我們創建一些函數,例如從序列字符串創建NumPy數組對象,以及帶有DNA序列字母「 a」,「 c」,「 g」和「 t」的標籤編碼器,以及其他任何字符比如「n」的編碼器。

import numpy as npimport redef string_to_array(seq_string): seq_string = seq_string.lower seq_string = re.sub('[^acgt]', 'n', seq_string) seq_string = np.array(list(seq_string)) return seq_string# create a label encoder with 'acgtn' alphabetfrom sklearn.preprocessing import LabelEncoderlabel_encoder = LabelEncoderlabel_encoder.fit(np.array(['a','c','g','t','z']))

這是一種將DNA序列字符串編碼為有序載體的功能。它返回一個NumPy數組,其中A = 0.25,C = 0.50,G = 0.75,T = 1.00,n = 0.00。

def ordinal_encoder(my_array): integer_encoded = label_encoder.transform(my_array) float_encoded = integer_encoded.astype(float)float_encoded[float_encoded == 0] = 0.25 # A float_encoded[float_encoded == 1] = 0.50 # C float_encoded[float_encoded == 2] = 0.75 # G float_encoded[float_encoded == 3] = 1.00 # T float_encoded[float_encoded == 4] = 0.00 # anything else, lets say n return float_encoded

讓我們嘗試一個簡單的序列:

seq_test = 'TTCAGCCAGTG'ordinal_encoder(string_to_array(seq_test))

獨熱編碼DNA序列

另一種方法是使用獨熱編碼來表示DNA序列。這在深度學習方法中得到了廣泛使用,非常適合卷積神經網絡之類的算法。在此示例中,「 ATGC」將變為[0,0,0,1],[0,0,1,0],[0,1,0,0],[1,0,0,0]。這些編碼的矢量可以連接起來,也可以變成二維數組。

from sklearn.preprocessing import OneHotEncoderdef one_hot_encoder(seq_string):int_encoded = label_encoder.transform(seq_string) onehot_encoder = OneHotEncoder(sparse=False, dtype=int) int_encoded = int_encoded.reshape(len(int_encoded), 1) onehot_encoded = onehot_encoder.fit_transform(int_encoded) onehot_encoded = np.delete(onehot_encoded, -1, 1) return onehot_encoded

讓我們以一個簡單的序列來嘗試一下:

seq_test = 'GAATTCTCGAA'one_hot_encoder(string_to_array(seq_test))

DNA序列作為獨立「語言」,稱為k-mer計數

仍然存在的問題是,以上所有方法均不能產生長度一致的向量,這是將數據導入分類或回歸算法的必要條件。因此,使用上述方法,您必須輔助諸如截斷序列或用「 n」/「 0」填充的方法,以獲取長度一致的向量。

DNA和蛋白質序列可以看作是生命的語言。該語言對所有生命形式中存在的分子的指令和功能進行編碼。基因組與序列語言和書是相似的,子序列(基因和基因家族)是句子和章節,k-mers和肽是單詞,核苷酸鹼基和胺基酸是字母。自然語言處理(NLP)也應採用和DNA及蛋白質序列相似的處理方式是有理由的。

我們在這裡使用的方法是易於管理的。我們首先採用較長的生物學序列,並將其分解為k-mer長度重疊的「單詞」。例如,如果我們使用長度為6(六進位)的「單詞」,則「 ATGCATGCA」將變為:「 ATGCAT」,「 TGCATG」,「 GCATGC」,「 CATGCA」。因此,我們的示例序列分為4個六聚體字(hexamer words)。

在基因組學中,我們將這種類型的操作稱為「 k-mer計數」,或者對每種可能出現的k-mer序列進行計數,而Python的自然語言處理工具使其變得非常容易。

def Kmers_funct(seq, size): return [seq[x:x+size].lower for x in range(len(seq) - size + 1)]

因此,讓我們以一個簡單的序列嘗試一下:

mySeq = 'GTGCCCAGGTTCAGTGAGTGACACAGGCAG'Kmers_funct(mySeq, size=7)

它返回k-mer「單詞」的列表。然後,您可以將「單詞」加入到「句子」中,然後像往常一樣在「句子」上應用自己喜歡的自然語言處理方法。

words = Kmers_funct(mySeq, size=6)joined_sentence = ' '.join(words)joined_sentence

連接的句子:

'gtgccc tgccca gcccag cccagg ccaggt caggtt aggttc ggttca gttcag ttcagt tcagtg cagtga agtgag gtgagt tgagtg gagtga agtgac gtgaca tgacac gacaca acacag cacagg acaggc caggca aggcag'

您可以調整單詞長度和重疊量。這使您可以確定DNA序列信息和詞彙量在您的應用程式中的重要程度。例如,如果您使用長度為6的單詞,並且有4個字母,則詞彙量為4096個可能的單詞。然後,您可以像在NLP中一樣繼續創建單詞庫(bag-of-words)模型。

讓我們增加一些更有趣的「句子」。

mySeq1 = 'TCTCACACATGTGCCAATCACTGTCACCC'mySeq2 = 'GTGCCCAGGTTCAGTGAGTGACACAGGCAG'sentence1 = ' '.join(Kmers_funct(mySeq1, size=6))sentence2 = ' '.join(Kmers_funct(mySeq2, size=6))

建立單詞袋模型:

from sklearn.feature_extraction.text import CountVectorizercv = CountVectorizerX = cv.fit_transform([joined_sentence, sentence1, sentence2]).toarrayX

單詞袋

下面開始進行機器學習

現在,我們已經學習了如何從DNA序列中提取特徵矩陣,讓我們將我們新獲得的知識應用於機器學習用例。

用例:建立一個在人類DNA序列上受訓的分類模型,並可以根據編碼序列的DNA序列預測基因家族。為了測試該模型,我們將使用人,狗和黑猩猩的DNA序列進行訓練,並測試其準確性。

基因家族是一組具有共同祖先的相關基因。基因家族的成員可以是旁系同源物或直系同源物。基因旁系同源物是來自相同物種的具有相似序列的基因,而基因直系同源物是在不同物種中具有相似序列的基因。

數據集包含人類的DNA序列,狗的DNA序列和黑猩猩的DNA序列。

加載人類DNA序列。

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlinehuman_dna = pd.read_table('./drive/My Drive/human_data.txt')human_dna.head

人類DNA序列和類別標籤

加載黑猩猩和狗的DNA序列。

chimp_dna = pd.read_table('./drive/My Drive/chimp_data.txt')dog_dna = pd.read_table('./drive/My Drive/dog_data.txt')

狗DNA序列和類別標籤

這是7個類別中每個類別的定義,以及人工訓練數據中的類別數:

人類DNA數據集中存在帶有類別標籤的基因家族

現在我們已經加載了所有數據,下一步是將字符序列轉換為k-mer詞,默認大小為6(六進位)。函數Kmers_funct將從序列字符串中收集指定長度的所有可能重疊的k-mers。

def Kmers_funct(seq, size=6): return [seq[x:x+size].lower for x in range(len(seq) - size + 1)]#convert our training data sequences into short overlapping k-mers of length 6. Lets do that for each species of data we have using our Kmers_funct function.human_dna['words'] = human_dna.apply(lambda x: Kmers_funct(x['sequence']), axis=1)human_dna = human_dna.drop('sequence', axis=1)chimp_dna['words'] = chimp_dna.apply(lambda x: Kmers_funct(x['sequence']), axis=1)chimp_dna = chimp_dna.drop('sequence', axis=1)dog_dna['words'] = dog_dna.apply(lambda x: Kmers_funct(x['sequence']), axis=1)dog_dna = dog_dna.drop('sequence', axis=1)

將DNA序列更改為小寫,分為所有可能的長度為6的k-mer字,並準備下一步。

human_dna.head

人類DNA序列中長度為6的k-mer字

現在,我們需要將每個基因的k-mers列錶轉換為可用於創建單詞袋模型的字符串句子。我們將創建一個目標變量y來保存類標籤。

對黑猩猩和狗也進行一樣的操作。

human_texts = list(human_dna['words'])for item in range(len(human_texts)):human_texts[item] = ' '.join(human_texts[item])#separate labelsy_human = human_dna.iloc[:, 0].values # y_human for human_dna#Now let's do the same for chimp and dog.chimp_texts = list(chimp_dna['words'])for item in range(len(chimp_texts)): chimp_texts[item] = ' '.join(chimp_texts[item])#separate labelsy_chim = chimp_dna.iloc[:, 0].values # y_chim for chimp_dnadog_texts = list(dog_dna['words'])for item in range(len(dog_texts)): dog_texts[item] = ' '.join(dog_texts[item])#separate labelsy_dog = dog_dna.iloc[:, 0].values # y_dog for dog_dna

因此,目標變量包含一個保存類別的數組。

array([4, 4, 3, …, 6, 6, 6])

將我們的k-mer單詞轉換為均等長度的數字矢量,這些矢量代表詞彙中每個k-mer的計數:

from sklearn.feature_extraction.text import CountVectorizercv = CountVectorizer(ngram_range=(4,4)) #The n-gram size of 4 is previously determined by testingX = cv.fit_transform(human_texts)X_chimp = cv.transform(chimp_texts)X_dog = cv.transform(dog_texts)

您可能要檢查每個訓練集數據的形狀。

print(X.shape)print(X_chimp.shape)print(X_dog.shape)#shapes(4380, 232414) (1682, 232414) (820, 232414)

因此,對於人類,我們已經將4380個基因轉換為4-gram的k-mer(長度6)計數的均勻長度特徵向量。對於黑猩猩和狗,我們分別具有1682和820個基因的相同形狀的特徵。

既然我們知道如何將我們的DNA序列轉換為k-mer計數和n-gram形式的均勻長度的數字矢量,那麼我們現在就可以繼續構建一個分類模型,該模型可以僅基於序列本身來預測DNA序列功能 。

在這裡,我將使用人類數據來訓練模型,並拿出20%的人類數據來測試模型。然後,通過嘗試預測其他物種(黑猩猩和狗)的序列功能,我們可以測試模型的可推廣性。

接下來,拆分用來訓練/測試的人類數據集並構建簡單的多項樸素貝葉斯分類器。

您可能需要進行一些參數調整,並構建具有不同n-gram大小的模型,在這裡,我將繼續使用n-gram大小為4和alpha為0.1的模型。

# Splitting the human dataset into the training set and test setfrom sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y_human, test_size = 0.20, random_state=42)## Multinomial Naive Bayes Classifier ##from sklearn.naive_bayes import MultinomialNBclassifier = MultinomialNB(alpha=0.1)classifier.fit(X_train, y_train)

現在,讓我們對測試集進行預測,看看它的性能如何。

y_pred = classifier.predict(X_test)

下面讓我們來看一些模型性能指標,例如混淆矩陣,準確性,召回率和f1得分。我們在數據上獲得了非常好的結果,因此看來我們的模型並未過擬合訓練數據。

from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_scoreprint("Confusion matrix for predictions on human test DNA sequence\n")print(pd.crosstab(pd.Series(y_test, name='Actual'), pd.Series(y_pred, name='Predicted')))def get_metrics(y_test, y_predicted): accuracy = accuracy_score(y_test, y_predicted) precision = precision_score(y_test, y_predicted, average='weighted') recall = recall_score(y_test, y_predicted, average='weighted') f1 = f1_score(y_test, y_predicted, average='weighted') return accuracy, precision, recall, f1accuracy, precision, recall, f1 = get_metrics(y_test, y_pred)print("accuracy = %.3f \nprecision = %.3f \nrecall = %.3f \nf1 = %.3f" % (accuracy, precision, recall, f1))

讓我們看看我們的模型如何處理其他物種的DNA序列。首先,我們將嘗試黑猩猩,我們希望它與人類非常相似。然後是狗DNA序列。

# Predicting the chimp, dog and worm sequencesy_pred_chimp = classifier.predict(X_chimp)

檢查精度矩陣:

# performance on chimpanzee genesprint("Confusion matrix for predictions on Chimpanzee test DNA sequence\n")print(pd.crosstab(pd.Series(y_chim, name='Actual'), pd.Series(y_pred_chimp, name='Predicted')))accuracy, precision, recall, f1 = get_metrics(y_chim, y_pred_chimp)print("accuracy = %.3f \nprecision = %.3f \nrecall = %.3f \nf1 = %.3f" % (accuracy, precision, recall, f1))

現在讓我們對狗的測試DNA序列進行預測:

y_pred_dog = classifier.predict(X_dog)

檢查精度矩陣:

# performance on dog genesprint("Confusion matrix for predictions on Dog test DNA sequence\n")print(pd.crosstab(pd.Series(y_dog, name='Actual'), pd.Series(y_pred_dog, name='Predicted')))accuracy, precision, recall, f1 = get_metrics(y_dog, y_pred_dog)print("accuracy = %.3f \nprecision = %.3f \nrecall = %.3f \nf1 = %.3f" % (accuracy, precision, recall, f1))

該模型似乎在人類數據上產生了良好的結果。黑猩猩也是如此,這是因為黑猩猩和人類具有相同的遺傳層次。狗的表現不太好,這是因為狗比黑猩猩與人類的差異更大。

結論

在本文中,我們學習了如何分析DNA序列數據,如何對其進行可視化,以及如何使用不同的編碼技術將這些序列表示為矩陣。最後,我們創建了一個Naive Byes模型,可以在人,狗和黑猩猩的測試數據中檢測基因家族。

相關焦點

  • 3000份綠色超級稻基因組數據首度揭開神秘面紗
    9月15日,中國農業科學院、阿里雲計算有限公司、華智水稻生物技術有限公司、北京聚道科技有限公司四方舉行新聞發布會,宣布共同推動「雲之稻項目「——3000份綠色超級稻基因組原始測序數據將首度揭開神秘面紗,向外界共享和使用。阿里雲表示,這是雲計算技術推動大規模基因組學研究的一次嘗試。
  • 揭開AI、機器學習和深度學習的神秘面紗
    在這篇文章中,我們將通過一些真實世界的案例來解釋什麼是機器學習和深度學習。在這篇文章中,我們將通過一些真實世界的案例來解釋什麼是機器學習和深度學習。在以後的文章中,我們將探索垂直用例。這樣做的目的不是要把你變成一個數據科學家,而是讓你更好地理解你可以用機器學習做什麼。開發人員能越來越容易地使用機器學習,數據科學家時常與領域專家、架構師、開發人員和數據工程師一起工作,因此,詳細了解機器學習的可能性對每個人來說都很重要。你的業務產生的每一條信息都有增加價值的潛力。
  • 幾度風雨春秋《鬥羅神》揭開唐門神秘的面紗
    幾度風雨春秋《鬥羅神》揭開唐門神秘的面紗 編輯:小G2014-04-08 蜀中唐門,掩藏在天羅地網之下的江湖秘境   蜀中唐門,鑄就了孔雀翎的不朽傳奇   蜀中唐門,憑藉著最為狠毒的暗器與毒藥名震天下
  • 揭開紅外相機的神秘面紗
    今天,筆者將帶大家揭開紅外相機的神秘面紗。·不負眾望,紅外單反誕生  在經歷了失敗和波折之後首先感謝大家持續的關注和熱情的留言。為了不辜負朋友們的期盼,筆者進行了大量的測試及對比樣張的拍攝,以便讓大家對紅外相機有一個全面的了解。
  • 紹興古城「星夜議事」,揭開未來神秘面紗!
    紹興古城「星夜議事」,揭開未來神秘面紗!
  • 揭開首飾製作的神秘面紗
    每個人都是獨立的個體首飾的誕生是一種情感的表達小編帶大家來揭開神秘面紗12圖稿繪製珠寶設計團隊繪製手繪圖,並以此為藍本進行不斷地細化和調整。3電繪圖確定① 與手繪設計師定稿,確定標準和尺寸② 3D立體建模③ 與客戶進行確認4
  • 讓U大為你揭開樹莓派3的神秘面紗
    昨天樹莓派3單板電腦首張照片被曝光之後,引起了國內外媒體的廣泛關注,雖然曝光的圖片不是非常清楚,但依舊可以從中分析和預測出樹莓派3相對於樹莓派2
  • 《到香港讀大學》揭開香港八大院校的神秘面紗
    《到香港讀大學》揭開香港八大院校的神秘面紗 2014-07-01 15:04:09來源:中國新聞網作者:責任編輯:王珊珊 日前,世界知識出版社出版了《到香港讀大學——香港八大院校介紹》,為讀者揭開了香港高校的神秘面紗。  迄今為止,香港高校在內地招生已達十幾個年頭,十幾年來,港校報名高潮迭起,呈現出了「港校熱」的狀況。以2012 年內地高考生報考為例,各港校報考比例較上年均有所增加,個別院校還錄得較大的增幅。  目前,香港十七所可頒授學位的高等院校已全部獲準招收內地本科學生。
  • 18億像素照片揭開神秘面紗
    18億像素照片揭開神秘面紗美國航天局近日發布了一張照片,引發了許多討論。原來是火星上的「好奇號」探測器拍攝了18億像素的火星全景,這也是迄今為止拍攝的最清晰的火星照片。這使得網友們看完之後直呼「真美爆了」,引起了熱烈的討論。這是迄今為止最清晰的火星表面全景,在世人的眼前清晰地展現了荒涼的火星表面!
  • 興業證券金工首席集體亮相 揭開量化投資神秘面紗
    原標題:興業證券金工首席集體亮相 揭開量化投資神秘面紗 來源:新浪財經原標題:興·訪談 | 論賣方研究員的自我修養!興證金工首席集體亮相 揭開量化投資神秘面紗來源:興業證券訂閱號在很多投資者眼中,量化投資一直是一個神秘的存在,通過海量的處理數據和高頻次的交易,從股票市場的數據海洋中找到一條通往彼岸的方舟,這看似是一件不可能完成的任務。而在證券分析師中,有這樣一群人,他們通過在計算機上建模編程,對市場進行預測和交易,通過計算機交易來克服人性的弱點。他們就是金融工程分析師。
  • 【讀書感悟】從《訴訟可視化》逐層揭開案件的神秘面紗
    【讀書感悟】從《訴訟可視化》逐層揭開案件的神秘面紗 2020-07-06 16:29 來源:澎湃新聞·澎湃號·政務
  • 金義東市域軌道首列車揭開神秘面紗
    婺劇臉譜車頭彰顯金華元素| 金義東市域軌道首列車揭開神秘面紗 婺劇臉譜車頭彰顯金華元素|
  • 三菱重工海爾即將揭開神秘面紗
    三菱重工海爾即將揭開神秘面紗 來源:財訊網 • 2020-12-24 22:47:52 當下全國都在流行一個新的詞彙——後疫情時代。
  • 洋河股份夢之藍水晶版揭開神秘面紗
    原標題:洋河股份夢之藍水晶版揭開神秘面紗2009年高端白酒業界標杆洋河股份發布夢之藍系列產品。經十一年的時間夢之藍系列以時尚優雅的外形外俘獲千萬粉絲,更是以其晶亮明澈的酒液,獨到醇厚的酒香久久留於消費者的唇齒之間,深深刻畫於消費者的心間上。而今,備受關注的明星產品夢之藍水晶版神秘面紗的揭開更是引起了廣大消費者的注意與傳播,夢之藍水晶版到底有什麼獨特的魅力呢?
  • 羅永浩陳赫相繼推薦:揭開銷量巨頭英菲克的神秘面紗
    首頁 > 傳媒 > 關鍵詞 > 羅永浩最新資訊 > 正文 羅永浩陳赫相繼推薦:揭開銷量巨頭英菲克的神秘面紗
  • 華為突然宣布,即將揭開鴻蒙OS和EMUI11的神秘面紗
    這本來是一場慣例發布會,不過這一次華為宣布了一個重磅消息,那就是關於鴻蒙系統和EMUI11,這是華為除了發布鴻蒙系統,再次宣布關於鴻蒙系統的消息。華為表示:將分享關於HMS Core5.0的最新進展,揭開大家期待已久的HarmonyOS 和 EMUI11 的神秘面紗!
  • ...Core 5.0最新進展,揭開HarmonyOS和EMUI 11的神秘面紗"等信息...
    華為官網上放出了"我們將與您分享HMS Core 5.0最新進展,揭開HarmonyOS和EMUI 11的神秘面紗"等信息,所以今年的重點是講軟體和生態無疑了。截至當前,A股市場華為以及華為HMS概念股共有150隻,市值合計超5萬億,市值超百億公司數量超六成,超千億個股多達14隻。(中國基金報)。[免責聲明] 本文僅代表作者本人觀點,與市商網無關。
  • 綠信資訊:一起揭開智慧數字經營神秘的面紗
    綠信資訊:一起揭開智慧數字經營神秘的面紗雖然智慧數字經營已經開始逐漸覆蓋各個行業,但是還是很多人不知道智慧數字經營具體是什麼?甚至部分從業者也對智慧數字經營的整個模式及其背景不了解。從概念到落地,智慧數字經營是如何展開的?我們僅知道智慧數字經營是2020年支付寶微信推出的最新業務。那麼它是在什麼樣的背景下產生的呢?
  • 科學家發現化石,神秘面紗終於揭開!
    科學家發現化石,神秘面紗終於揭開!自恐龍徹底滅絕之後,地球的中生代也結束了,並開啟全新的新生代,當時的地質時代主要分為三個紀,分別是古近紀、新近紀和第四紀,等到了第4紀的時候,哺乳動物便成為地球上的支配者,其中就包含一種飛行動物,那就是蝙蝠。很多人對蝙蝠的了解都比較局限,認為它是一種黑黝黝的飛行動物,沒有什麼美觀可言。
  • 一起來揭開水泥漆,微水泥的神秘面紗
    一起來揭開水泥漆,微水泥的神秘面紗! 在明星效應和市場大環境的影響下,工業風裝修風格在工裝和家裝中悄然興起,隨之而來的水泥漆的市場需求也水漲船高。那麼我們在購買水泥漆和水泥漆施工時有哪些注意事項呢?一起來了解下! 一:什麼是水泥漆?