首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用机器学习和Python揭开DNA测序神秘面纱

使用机器学习和Python揭开DNA测序神秘面纱

作者头像
deephub
发布于 2020-05-09 08:39:53
发布于 2020-05-09 08:39:53
2.2K00
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

“脱氧核糖核酸(DNA)是一种分子,其中包含每个物种独特的生物学指令。DNA及其包含的说明在繁殖过程中从成年生物传给其后代。“ —genome.gov

简介

基因组是生物体中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)。我们总是称它们为ACGT

这四种化学物质通过氢键以任何可能的顺序连接在一起,形成一条链,这形成了DNA双螺旋的一条线。双螺旋的第二条线平衡了第一根。因此,如果第一条线上有A,则第二条线上对应位置必须为T。此外,C和G始终保持平衡。因此,一旦您确定了螺旋的一个螺纹,就可以随时拼写另一个螺纹。

2

单个DNA线(螺旋)的序列

这些碱基的顺序决定了DNA链中包含哪些生物学指令。例如,序列ATCGTT可能指示蓝眼睛,而ATCGCT可能指示棕色眼睛。

使用Python处理DNA序列数据

熟悉诸如Biopythonsquiggle之类的Python包将在处理Python中的生物序列数据时为您提供帮助。

Biopython是python模块的集合,这些模块提供处理DNA,RNA和蛋白质序列操作的功能,例如DNA字符串的反向互补,寻找蛋白质序列中的基序列等。它提供了很多解析器,可以读取所有主要的遗传数据库,例如 GenBank,SwissPort,FASTA等,

4

安装Biopython

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install biopython

**Squiggle:**这是一个工具,可以自动生成交互式网页下的原始DNA序列的二维图形表示。考虑到易用性,Squiggle实现了几种序列可视化算法,并引入了“为方便人类使用而做”的新颖可视化方法。

安装Squiggle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install Squiggle

DNA序列数据通常以“ fasta”格式的文件格式储存。Fasta格式通过包含注释的大于号和包含序列的另一行作为组成自己的单行数据:

“AAGGTGAGTGAAATCTCAACACGAGTATGGTTCTGAGAGTAGCTCTGTAACTCTGAGG”*

文件可以包含一个或多个DNA序列。还有许多其他格式,但是fasta是最常见的格式。

这是使用Biopython处理Fasta格式的DNA序列的简要示例。序列对象将包含诸如序列ID和sequence等属性以及可以直接使用的序列长度。

我们将使用Biopython的Bio.SeqIO来解析DNA序列数据(fasta)。它提供了一个简单的统一界面来输入和输出各种文件格式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,序列本身和序列长度。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ENST00000435737.5
ATGTTTCGCATCACCAACATTGAGTTTCTTCCCGAATACCGACAAAAGGAGTCCAGGGAATTTCTTTCAGTGTCACGGACTGTGCAGCAAGTGATAAACCTGGTTTATACAACATCTGCCTTCTCCAAATTTTATGAGCAGTCTGTTGTTGCAGATGTCAGCAACAACAAAGGCGGCCTCCTTGTCCACTTTTGGATTGTTTTTGTCATGCCACGTGCCAAAGGCCACATCTTCTGTGAAGACTGTGTTGCCGCCATCTTGAAGGACTCCATCCAGACAAGCATCATAAACCGGACCTCTGTGGGGAGCTTGCAGGGACTGGCTGTGGACATGGACTCTGTGGTACTAAATGAAGTCCTGGGGCTGACTCTCATTGTCTGGATTGACTGA
390

我们可以可视化这些DNA序列吗?

是的,我们可以使用Squiggle python库将这些DNA序列可视化,进行操作并运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Squiggle example.fa --method=gates

DNA序列被转换为2D图像,其中T,A,C和G分别在上,下,左和右方位。这给每个序列一个“形状”。

现在,我们来可视化另一个包含6个DNA序列的fasta数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Squiggle example.fasta

在此,首先使用2位编码方案将DNA序列转换为二进制序列,该方案将T映射为00,C映射为01,A映射为10,G映射为11。

现在我们可以轻松加载和操作生物序列数据,那么怎么将数据用于机器学习或深度学习

由于机器学习或深度学习模型要求输入必须是特征矩阵或数字值,但目前我们仍然以字符或字符串格式存储数据。因此,下一步是将这些字符编码为矩阵。

编码序列数据有3种通用方法:

  1. 顺序编码DNA序列
  2. 独热(one-hot)编码DNA序列
  3. DNA序列作为独立“语言”,称为k-mer计数

让我们分别进行实现,看看哪一个为我们提供了完美的输入。

顺序编码DNA序列

在这种方法中,我们需要将每个碱基编码为序数值。例如,“ ATGC”变为[0.25、0.5、0.75、1.0]。任何其他字符(例如“ N”)都可以为0。

因此,让我们创建一些函数,例如从序列字符串创建NumPy数组对象,以及带有DNA序列字母“ a”,“ c”,“ g”和“ t”的标签编码器,以及其他任何字符比如“n”的编码器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import re
def 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' alphabet
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
label_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。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

让我们尝试一个简单的序列:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]。这些编码的矢量可以连接起来,也可以变成二维数组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import OneHotEncoder
def 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

让我们以一个简单的序列来尝试一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的自然语言处理工具使其变得非常容易。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def Kmers_funct(seq, size):
    return [seq[x:x+size].lower() for x in range(len(seq) - size + 1)]

因此,让我们以一个简单的序列尝试一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mySeq = 'GTGCCCAGGTTCAGTGAGTGACACAGGCAG'
Kmers_funct(mySeq, size=7)

它返回k-mer“单词”的列表。然后,您可以将“单词”加入到“句子”中,然后像往常一样在“句子”上应用自己喜欢的自然语言处理方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
words = Kmers_funct(mySeq, size=6)
joined_sentence = ' '.join(words)
joined_sentence

连接的句子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'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)模型。

让我们增加一些更有趣的“句子”。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mySeq1 = 'TCTCACACATGTGCCAATCACTGTCACCC'
mySeq2 = 'GTGCCCAGGTTCAGTGAGTGACACAGGCAG'
sentence1 = ' '.join(Kmers_funct(mySeq1, size=6))
sentence2 = ' '.join(Kmers_funct(mySeq2, size=6))

建立单词袋模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()
X = cv.fit_transform([joined_sentence, sentence1, sentence2]).toarray()
X

单词袋

下面开始进行机器学习

现在,我们已经学习了如何从DNA序列中提取特征矩阵,让我们将我们新获得的知识应用于机器学习用例。

用例:建立一个在人类DNA序列上受训的分类模型,并可以根据编码序列的DNA序列预测基因家族。为了测试该模型,我们将使用人,狗和黑猩猩的DNA序列进行训练,并测试其准确性。

基因家族是一组具有共同祖先的相关基因。基因家族的成员可以是旁系同源物或直系同源物。基因旁系同源物是来自相同物种的具有相似序列的基因,而基因直系同源物是在不同物种中具有相似序列的基因。

数据集包含人类的DNA序列,狗的DNA序列和黑猩猩的DNA序列。

加载人类DNA序列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inlinehuman_dna = pd.read_table('./drive/My Drive/human_data.txt')
human_dna.head()

人类DNA序列和类别标签

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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字,并准备下一步。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
human_dna.head()

人类DNA序列中长度为6的k-mer字

现在,我们需要将每个基因的k-mers列表转换为可用于创建单词袋模型的字符串句子。我们将创建一个目标变量y来保存类标签。

对黑猩猩和狗也进行一样的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
human_texts = list(human_dna['words'])
for item in range(len(human_texts)):
    human_texts[item] = ' '.join(human_texts[item])#separate labels
y_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 labels
y_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 labels
y_dog = dog_dna.iloc[:, 0].values  # y_dog for dog_dna

因此,目标变量包含一个保存类别的数组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([4, 4, 3,, 6, 6, 6])

将我们的k-mer单词转换为均等长度的数字矢量,这些矢量代表词汇中每个k-mer的计数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(ngram_range=(4,4)) #The n-gram size of 4 is previously determined by testing
X = cv.fit_transform(human_texts)
X_chimp = cv.transform(chimp_texts)
X_dog = cv.transform(dog_texts)

您可能要检查每个训练集数据的形状。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Splitting the human dataset into the training set and test set
from sklearn.model_selection import train_test_split
X_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 MultinomialNB
classifier = MultinomialNB(alpha=0.1)
classifier.fit(X_train, y_train)

现在,让我们对测试集进行预测,看看它的性能如何。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
y_pred = classifier.predict(X_test)

下面让我们来看一些模型性能指标,例如混淆矩阵,准确性,召回率和f1得分。我们在数据上获得了非常好的结果,因此看来我们的模型并未过拟合训练数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
print("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, f1
accuracy, precision, recall, f1 = get_metrics(y_test, y_pred)
print("accuracy = %.3f \nprecision = %.3f \nrecall = %.3f \nf1 = %.3f" % (accuracy, precision, recall, f1))

让我们看看我们的模型如何处理其他物种的DNA序列。首先,我们将尝试黑猩猩,我们希望它与人类非常相似。然后是狗DNA序列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Predicting the chimp, dog and worm sequences
y_pred_chimp = classifier.predict(X_chimp)

检查精度矩阵:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# performance on chimpanzee genes
print("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序列进行预测:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
y_pred_dog = classifier.predict(X_dog)

检查精度矩阵:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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模型,可以在人,狗和黑猩猩的测试数据中检测基因家族。

免责声明

本文只是从机器学习的角度探讨DNA的测序辅助,本人也并非医学的专业人士,所以涉及医学的部分还应以医学专业人员为准。

本文github代码地址:https://github.com/nageshsinghc4/DNA-Sequence-Machine-learning

DeepHub

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用 AI 识别基因,从向量化 DNA 序列开始
DNA 序列在分子生物学和医药研究中有着广泛的应用,比如基因溯源、物种鉴定、疾病诊断等。如果结合正在兴起的基因大数据,采取大量的样本,那么通常实验结果更具说服力,也能够更有效地投入现实应用。
Zilliz RDS
2021/08/20
1.4K0
全基因组 - 人类基因组变异分析(PacBio) (3)-- pbmm2
长读段比对算法与一代/二代测序数据的比对算法有很大的不同,因为长读段通常更长、包含更多错误和变异,并且需要更复杂的比对策略。
三代测序说
2023/10/26
1.5K1
全基因组 - 人类基因组变异分析(PacBio) (3)-- pbmm2
测序数据组装的常用工具
Spades(http://cab.spbu.ru/software/spades/)可用于进行单细菌基因组组装,也能用于宏基因组测序数据,可以进行二代与三代测序数据的混合组装,也支持多样品组装。输入数据可以是Illumina、IonTorrent或PacBio、Sanger测序结果,也可以把一些contigs序列作为long reads进行输入。该软件可以同时接受多组paired-end、mate-pairs和unpaired reads数据的输入。spades支持输入文件格式:fq、fastq、bam、fa、fasta、fq.gz、fastq.gz、bam.gz、fa.gz、fasta.gz,其使用方法如下所示:
SYSU星空
2022/05/05
3.1K0
测序数据组装的常用工具
测序知识DAY7-Gaozsi
一种基于文本的,保存生物序列(通常是核酸序列)和其测序质量信息的标准格式,一般都包含有4行。
gaozsi
2024/02/26
2330
Nucleic Acids Res.|华大智造联合复旦大学发布人类基因组轻量级语言模型,整合卷积层以碱基分辨率解释非编码区
Integrating convolution and self-attention improves language model of human genome for interpreting non-coding regions at base-resolution
智能生信
2022/12/29
6710
Nucleic Acids Res.|华大智造联合复旦大学发布人类基因组轻量级语言模型,整合卷积层以碱基分辨率解释非编码区
如何用深度学习研究组学?
如何用深度学习研究组学?一、什么是深度学习?1、主要策略2、数据集的划分3、如何保证深度学习高效?1、合适的训练集2、合理的评估标准3、对应学科的知识4、在大多数基因组学应用中,少于五层就足够了二、常见网络1、全连接层 (DNN)2、卷积神经网络 (CNN)3、循环神经网络 (RNN)4、图卷积神经网络 (GCN)5、自编码器 (AE)三、基因组深度学习案例三、深度资源1、常用的框架2、课程资源参考文献
王诗翔呀
2020/11/20
6330
如何用深度学习研究组学?
lncRNA必知必会的数据库资源大全
让我很无语,我又不是带领本科生搞一个学期的课程,仅仅是不到2小时我能讲解什么背景呢:
生信技能树
2021/02/03
1.7K0
lncRNA必知必会的数据库资源大全
bioinfo08-算法04-复制起点你在哪?
当DNA 的双螺旋结构打开后,其会形成两股复制叉,且这两股复制叉会朝着各自的方向沿着染色体(两条单链)进行复制:
北野茶缸子
2022/05/19
5530
bioinfo08-算法04-复制起点你在哪?
测序数据的解析:Fastq与FastQC
二代测序平台获得的原始数据为fastq(或为压缩文件fq.gz)格式,包含双末端测序所得的正向和反向两个文件(通常用“1”和“2”来区分),如下所示:
SYSU星空
2022/05/05
5.9K0
测序数据的解析:Fastq与FastQC
GATK的人类宿主的微生物检测流程PathSeq
PathSeq 是一个 GATK 管道,用于检测取自宿主生物体(例如人类)的短读长深度测序样本中的微生物。比如人类肿瘤测序数据,就可以使用它看看是否有微生物序列! 下图总结了它的工作原理。该管道先对r
生信技能树
2023/09/19
2.6K0
GATK的人类宿主的微生物检测流程PathSeq
2018 升级版Jaspar数据库
R包ggseqlogo 绘制seq logo图和Seq logo 在线绘制工具—Weblogo介绍了如何用R脚本和在线工具绘制seq logo图,用于展现转录因子或修饰酶等结合序列的偏好性。
生信宝典
2018/08/17
2K0
2018 升级版Jaspar数据库
玩转参考基因组
在研究基因序列层面变化的时候,对基因组序列有一个全面的认知及学会怎么对序列基本操作十分重要。
生信菜鸟团
2025/04/15
2480
玩转参考基因组
新冠疫情下的生信分析 | fastv
新冠疫情席卷全球,我们尚不得知病毒的发源地及特效治疗方案。最有效的防控手段还是在疫情爆发的早期做好隔离工作,切断传播途径。例如前些日子的北京,局部爆发后迅速控制到新增0,而对比美利坚每天新增数万… 这其中,离不开快速平行检测技术加持。
生信菜鸟团
2020/07/14
1.8K0
微生物DNA测序数据找变异位点
我们以这三年疫情的微生物SARS– CoV-2为例,文章:《Genomic Diversity of Severe Acute Respiratory Syndrome– Coronavirus 2 in Patients With Coronavirus Disease 2019》,它就列出来了微生物的DNA测序找变异位点的流程,主要是4个软件,步骤如下所示:
生信技能树
2022/06/08
5770
微生物DNA测序数据找变异位点
基因组重测序的unmapped reads assembly探究 【直播】我的基因组86
在前面的直播基因组系列,我们讲解过那些比对不少我们人类的参考基因组序列的数据,其实可以细致的进行探究。 直播】我的基因组(十五):提取未比对的测序数据 这里主要参考这篇文章的图4:http://ww
生信技能树
2018/03/09
2.1K0
基因组重测序的unmapped reads assembly探究 【直播】我的基因组86
使用Python实现基因组数据分析:探索生命的奥秘
基因组数据分析是现代生物学研究中的重要领域,通过对基因组数据的分析,我们可以了解生物的遗传信息、揭示疾病的遗传机制,甚至可以进行个性化的医疗治疗。Python作为一种高效且易用的编程语言,为基因组数据分析提供了丰富的库和工具。本文将详细介绍如何使用Python实现基因组数据分析,涵盖环境配置、依赖安装、数据处理、序列比对、特征提取与分类和实际应用案例等内容。
Echo_Wish
2025/01/01
2320
生物信息中的Python 01 | 从零开始处理基因序列
在开始了解序列的处理流程时,我们先要知道序列下载网址。其中一个知名的网站就是NCBI (National Center for Biotechnology Information)美国国立生物技术信息中心。
白墨石
2021/01/13
1.7K0
生物信息中的Python 01 | 从零开始处理基因序列
Day7-学习笔记(2023年2月4日)测序
原理介绍视频:https://share.weiyun.com/5qojuBY 密码: 密码:bxsry4
用户10954357
2024/02/04
4860
Nature | 基于四代家系参考的人类新生突变率
◉ 我们使用五种正交的下一代和长读长测序技术对四代系谱CEPH 1463中的28名成员进行了测序:对于G2至G4代,采用HiFi测序、Illumina和Element测序技术对其外周血进行了分析;而对于G1至G3代,则利用可用的永生化淋巴细胞系生成了UL-ONT和Strand-seq数据。该系谱数据集已被扩展,纳入了第四代以及G3代的配偶(编号为200080和200100)。◉ 该研究采用了多种先进的基因组测序平台,确保在不同世代之间获得全面且高精度的遗传信息,从而增强了对遗传变异传递模式的理解。
生信菜鸟团
2025/07/12
1060
Nature | 基于四代家系参考的人类新生突变率
二代测序基因组拼接实战
该文章中对 20 个细菌基因组进行测序,每个样本分别进行了 illumina,pacbio 以及 nanopore测序。比较三种数据的拼接结果。其中两株细菌已包含发表出来的全基因组序列。
生信喵实验柴
2022/05/23
2.9K0
二代测序基因组拼接实战
相关推荐
用 AI 识别基因,从向量化 DNA 序列开始
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验