问题标签 [fasta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python shell 在读取(fasta)文件时冻结
我将首先展示我目前拥有的代码:
出于某种原因,每当我尝试通过键入以下内容读取文件时,python shell(我使用的是 3.2.2)都会冻结:
rF 函数中的条件是防止读取以“>”标记开头的每一行。这些行不是 DNA/RNA 代码(这是我试图从这些文件中读取的),应该被忽略。
我希望任何人都可以帮助我解决这个问题,我没有看到我的错误。
像往常一样,提前非常感谢!
编辑: *问题仍然存在!* 这是我现在使用的代码,我删除了无论如何都是一个花哨的添加的错误处理,当尝试读取文件时,shell 仍然冻结。这是我现在的代码:
perl - 使用 .fasta 文件计算序列的相对内容
所以我是我的“菜鸟”,最近才通过 Perl 介绍编程,我仍然习惯这一切。我有一个必须使用的 .fasta 文件,尽管我不确定我是否能够打开它,或者我是否必须“盲目地”使用它,可以这么说。
无论如何,我拥有的文件包含三个基因的 DNA 序列,以 .fasta 格式编写。
显然是这样的:
我的目标是编写一个脚本来打开和读取文件,我现在已经掌握了窍门,但是我必须读取每个序列,计算每个序列中“G”和“C”的相对数量,然后我m 将基因的名称以及它们各自的“G”和“C”内容写入制表符分隔的文件。
有人可以提供一些指导吗?我不确定制表符分隔的文件是什么,我仍在尝试弄清楚如何打开 .fasta 文件以实际查看内容。到目前为止,我使用的是可以轻松打开的 .txt 文件,但不是 .fasta。
我为听起来完全困惑而道歉。我会很感激你的耐心。我不像你那里的专业人士!
perl - 读取 .fasta 序列以提取核苷酸数据,然后写入 TabDelimited 文件
在我继续之前,我想我应该向读者推荐我以前使用 Perl 遇到的问题,因为我是所有这些的初学者。
这些是我过去几天的帖子,按时间顺序排列:
现在正如我上面所说的,多亏了你们中的一些人的帮助,我已经设法弄清楚了前两个查询,并且我真的从中学到了东西。我真的很感激。对于一个对此一无所知,还觉得自己不知道的人来说,这种帮助简直是天赐之物。
最后一个查询仍未解决,这是一个延续。我确实看过一些推荐的文本,但由于我试图在周一之前完成,我不确定我是否完全忽略了任何内容。无论哪种方式,我都尝试过这项任务。
正如你所知,任务是打开并读取一个 .fasta 文件(我想我终于搞定了一些非常好的事情,哈利路亚!),读取每个序列,计算相对 G+C 核苷酸含量,然后写入TABDelimited 文件和基因名称及其各自的 G+C 内容。
尽管我已经尝试过这样做,但我知道我还没有准备好执行该程序以提供我所追求的结果,这就是为什么我再次与你们联系以获得一些指导,或如何进行此操作的示例。与我之前解决的查询一样,我希望它与我已经完成的查询具有相似的风格——即使它可能不是最方便/有效的方式。它只是让我知道我在每一步都在做什么,即使看起来我正在向它发送垃圾邮件!
无论如何,.fasta 文件的内容如下:
我不确定如何打开 .fasta 文件,所以我不确定哪些标签适用于哪个,但我知道基因应该标记为gag
、pol
或env
。我是否需要打开 .fasta 文件才能知道我在做什么,或者我可以通过上述格式“盲目”地做吗?
这可能是非常明显的,但我仍在努力解决所有这些问题。我觉得我现在应该赶上!
无论如何,我目前的代码如下:
我不确定这里是否有任何问题,但是执行它给我留下了第 35 行的语法错误(在最后一行之外,因此那里什么都没有!)。它在'EOF'上说。这就是我能指出的所有内容。否则,我试图弄清楚如何计算每个序列中核苷酸 G + C 的数量,然后在输出 .txt 文件中正确地制表。我相信这就是 TABDelimited 文件的含义?
无论如何,如果此查询似乎太长、“愚蠢”或重复,我深表歉意,但话说回来,我找不到与此直接相关的任何信息,因此非常感谢您的帮助和解释如果可能的话,也为每个步骤!
最亲切的。
perl - Perl 程序将完整的 .fasta 文件序列打印到文件中,但试图实现与基因相关的特定核苷酸计数
到目前为止,我已经设法对 Perl 有了更多的了解,这是一种解脱,我要感谢你们。我目前仍在研究另一个方面,我需要读取 .fasta 文件并找到所有 G 和 C 核苷酸,然后创建一个制表符分隔的文件。
这些是我过去几天的帖子,按时间顺序排列:
- 如何从制表符分隔的数据中平均列值... (已解决)
- 为什么我在输出文件中看不到计算结果? (解决了)
- 使用 .fasta 文件计算序列的相对内容
- 读取 .fasta 序列以提取核苷酸数据,然后... (在此之前发布)
最后一个查询仍在处理中,但我已经取得了一些进展。
在某些背景下,.fasta 文件的内容如下:
我不确定如何打开 .fasta 文件,所以我不确定哪些标签适用于哪个,但我知道基因应该标记为gag
、pol
或env
。我是否需要打开 .fasta 文件才能知道我在做什么,或者我可以通过上述格式“盲目”地做吗?
无论如何,我目前的代码如下:
该代码现在将整个序列打印到文本文件中,没有空格。唯一的问题是,我不知道序列从哪里开始或结束,所以我不确定哪些序列适用于每个基因。虽然停止/起始密码子应该给我一个指示。考虑到这一点,我将如何修改/添加到代码中以计算序列中 G+C 的数量,然后将它们打印到一个制表符分隔的文件中,其中包含与它们各自的 G/C 内容相关的基因名称?
我期待听到有人可以提供一些指导,与上面发布的代码类似,关于如何找到 G/C,然后将各自的计数制成表格。
python - 代码中的 Python 条件错误
我之前曾问过这个问题,试图开始使用这段代码:命令行参数需要采用 2 或 3 个参数
-s:这是一个可选参数或开关,表示用户想要剪接的基因序列(去除内含子)。用户不必提供这个(意味着他想要整个基因序列),但他确实提供了它,那么它必须是第一个参数
输入文件(带有基因)
输出文件(程序将在其中创建以存储 fasta 文件
该文件包含这样的行:
NM_001003443 chr11 + 5925152 592608098 2 5925152,5925652, 5925404,5926898,
然后我需要创建多个条件以确保输入的所有内容都是正确的,否则程序将退出:
- 用户指定不以 .genes 结尾的输入文件名
- 用户指定不以 .fa 或 .fasta 结尾的输出名称
- 用户提供少于两个或多于三个参数
- 用户的第一个参数以破折号开头,但不是'-s'
输入文件违反以下任何一项:
- 第一行应以“#”符号开头
- 每行应该正好有十列(由一个或多个空格分隔的列)
- 第 2 列(从 0 开始计数)应为 + 或 - 符号
- 第 8 列应该是一个制表符分隔的整数列表
- 第 9 列应该是一个制表符分隔的整数列表,其整数与第 8 列完全相同。
我已经为此编写了代码,但其中某处存在错误。但是,我最近无法找到错误。有人可以帮我看看我的代码,看看某处是否存在错误吗?我真的很感激!!
在我的实际代码中,所有 if 语句都被标记了,但是我在这里导入它时遇到了麻烦......
python - 匹配文件中的部分行(python)
我目前在一个文件中有一个基因列表。每条线都有一条带有它的信息的染色体。这样的条目显示为:
NM_198212 chr7 + 115926679 115935830 115927071 11593344 2 115926679 ,'115933260', 115927221 ,'115935830',
染色体的序列从碱基115926679开始,一直到(但不包括)碱基115935830
如果我们想要拼接序列,我们使用外显子。第一个从 115926679延伸到155927221,第二个从 '115933260' 到 '115935830'
但是,我在互补序列上遇到了一个问题,例如:
NM_001005286 chr1 - 245941755 245942680 245941755 245942680 1 245941755,'245942680'
由于第 3 列是“-”,因此这些坐标是指反义链(链的补码)。第一个碱基(粗体)与有义链上的最后一个碱基(斜体)匹配。由于文件只有有义支架,我需要尝试将反义链上的坐标转换为有义链,挑选出正确的序列,然后对其进行反向补码。
也就是说,我只编程了大约半年,并且不知道如何开始这样做。
我写了一个正则表达式:
但现在我不确定如何启动这个功能......如果有人可以帮助我开始这方面的工作,也许让我知道如何做到这一点,我将非常感激。
好的:假设这是 25 号染色体:
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!
(每个字符有 10 个)。
现在:如果我正在寻找未剪接的基因:chr25 + 10 20
然后基因从位置 10(从 0 开始)开始,向上但不包括位置 20。所以它:
中交中交中交
这很简单。它非常适合 python 字符串切片。
如果我给你,它会更令人困惑:
chr25 - 10 20
你所拥有的是积极的一面。但是这个基因在负(互补)链上。记住染色体看起来像双链:
啊啊
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!
我们正在寻找底部链上的基因。这意味着我们从右边开始从 0 开始计数。上链从左开始编号,下链从右开始。所以我在这里想要的是 AAAAAAAAAA。
问题是我只给你最上面的部分。我不会给你底线。(你可以从顶层生成自己——但考虑到它有多大,我建议不要这样做。)
所以你需要转换坐标。在底链上,碱基 0(最右边的 C)与顶链上的碱基 39 相对。以 1 为底数与 38 为底数。以 2 为底数以 37 为底数。(重要一点:注意每次将这两个数字相加时会发生什么。)因此,以 10 为底数以 29 为底数,以 19 为底数以 20 为底数。
所以:如果我想在底部链上找到基数 10-20,我可以查看顶部的基数 20-29(然后反向补码)。
我需要弄清楚如何将底部链上的坐标转换为底部链上的等效坐标。是的:这很混乱
我试过weronika的原始答案:
这是在正确的轨道上,但这还不够。这将把 10 和 20 变成 20 和 10。
而且我知道我可以通过这样做来反向补充字符串:
已编辑!这看起来对吗?!
perl - Perl:匹配一个数组元素,然后将一个 PREVIOUS(5 个索引返回)数组元素复制到一个新数组
本质上,我要做的是搜索一个大文本文件以识别每个显示“未找到匹配项",并将匹配的标识符复制到一个新列表中。我对第一部分很好,但我似乎无法弄清楚如何将数组的元素精确地复制回 5 个索引(这是一个标识符)并将其复制到不同的数组。
我尝试过这样的事情,
有大量的 [-5] 变体,但没有一个起作用.. 我似乎找不到任何关于如何回溯引用并在满足匹配时获得前一个元素的文档。有人知道如何为此编码吗?
非常感谢您的宝贵时间。
安德鲁
perl - 有选择地将数组的元素连接到新数组的较少元素中
我在处理 .fasta 格式的 DNA 序列数据数组时遇到了一些麻烦。我特别想做的是获取一个包含几千个序列的文件,并将文件中每个序列的序列数据连接到文件中的一行。[Fasta 格式是这样的:序列 ID 以 > 开头,之后该行的所有内容都是描述。在下一行中,存在与此 ID 对应的序列。这可以无限期地持续到以 > 开头的下一行,这是文件中下一个序列的 id] 所以,在我的特定文件中,我的大部分序列都在多行上,所以我想做的基本上是删除换行符,但仅删除序列数据之间的新行,而不是序列数据和序列 ID 行(以 > 开头)之间的新行。
我这样做是因为我希望能够获得每个序列的序列长度(通过长度,我相信是最简单的方法),然后获得整个文件中所有序列的平均序列长度。
到目前为止,这是我的脚本,似乎不想工作:
程序部分的第二行foreach有问题,我似乎无法弄清楚它是什么。请注意,我什至还没有尝试过 END 行之后的代码,因为我似乎无法在过程步骤中获取代码来执行我想要的操作。知道如何获得一个包含完整序列元素的漂亮数组(我选择只从新数组中删除序列 ID 行..)吗?当我可以得到一个长度数组,然后我可以平均?
最后我很遗憾地承认我无法让 Bio::Perl 在我的计算机上工作,我已经尝试了几个小时,但这些错误超出了我的修复能力。我将与希望能帮助我解决 Bio::perl 问题的人交谈。但现在我只需要在没有它的情况下继续前进。
谢谢!抱歉这篇文章的长度,我很感激帮助。
安德鲁
python - 将大fasta拆分成多个文件,不能用GI号命名
我应该首先说我对 Python 和 Biopython 都是新手。我正在尝试将一个大的 .fasta 文件(包含多个条目)拆分为单个文件,每个文件都有一个条目。我在 Biopython wiki/Cookbook 网站上找到了以下大部分代码,并对其进行了一些调整。我的问题是这个生成器将它们命名为“1.fasta”、“2.fasta”等,我需要用一些标识符来命名它们,例如 GI 编号。
如果我尝试更换:
和:
所以它会在 SeqIO 中命名类似于 seq_record.id 的东西,它会给出以下错误:
虽然生成器函数没有属性“id”,但我能以某种方式解决这个问题吗?这个脚本对于我想要做的事情来说太复杂了吗?!?谢谢,查尔斯
scala - 使用惰性集合处理大型 Scala 数据的 Scala 函数式方法
我正在尝试找出使用 scala 中的字符串来处理大量数据的高效内存和功能方法。我读过很多关于惰性集合的东西,也看过很多代码示例。但是,我一次又一次地遇到“超出 GC 开销”或“Java 堆空间”问题。
通常问题是我尝试构建一个惰性集合,但是当我将每个新元素附加到不断增长的集合时评估它(我现在没有任何其他方式来增量这样做)。当然,我可以尝试先初始化一个初始惰性集合,然后通过使用 map 左右应用资源关键计算来生成包含所需值的集合,但通常我只是不知道最终集合的确切大小先验地初始化该惰性集合。
也许您可以通过给我提示或解释如何改进以下代码作为示例来帮助我,该代码根据奇数序列对属于一个文件和偶数序列对属于一个文件的规则将 FASTA(以下定义)格式的文件拆分为两个单独的文件到另一个(“股线分离”)。“最”直接的方法是通过循环遍历行并通过打开的文件流打印到相应的文件中的命令方式(这当然效果很好)。但是,我只是不喜欢重新分配给包含标题和序列的变量的风格,因此下面的示例代码使用(尾)递归,我希望找到一种方法来维护类似的设计而不会遇到资源问题!
该示例非常适用于小文件,但是对于大约 500mb 左右的文件,代码将在标准 JVM 设置中失败。我确实想处理“任意”大小的文件,比如 10-20gb 左右。
我提出了三个问题:
A)假设需要维护一个大型数据结构,该结构是通过处理您getLines
在我的getFullSeqs
方法中获得的初始迭代器获得的(注意 的不同大小in
和输出getFullSeqs
),因为需要重复对整个(!)数据进行转换,因为人们不知道在任何步骤中都需要哪一部分数据。我的例子可能不是最好的,但是怎么做呢?有可能吗?
B)当所需的数据结构不是天生懒惰的时候,比如说想要将这些(header -> sequence)
对存储到 a 中Map()
怎么办?你会把它包装在一个惰性集合中吗?
C)我构建流的实现可能会颠倒输入行的顺序。调用 reverse 时,将评估所有元素(在我的代码中,它们已经是,所以这是实际问题)。有没有办法以懒惰的方式“从后面”进行后期处理?我知道reverseIterator
,但这已经是解决方案了吗,或者这实际上也不会首先评估所有元素(因为我需要在列表中调用它)?可以用 构造流newVal #:: rec(...)
,但那样我会失去尾递归,不是吗?
所以我基本上需要的是将元素添加到集合中,而不是通过添加过程来评估。所以lazy val elem = "test"; elem :: lazyCollection
不是我要找的。
编辑:我也尝试在rec
.
非常感谢您的关注和时间,我非常感谢您的帮助(再次:))。
///////////////////////////////////////// ///////////////////////////////////////// ///////////////////////////////////////// ///////////////
FASTA 被定义为由单个标题行分隔的一组顺序序列。标题定义为以“>”开头的行。标题下方的每一行都称为与标题相关的序列的一部分。当出现新标头时,序列结束。每个标题都是唯一的。例子:
>HEADER1
abcdefg
>HEADER2
hijklmn
opqrstu
>HEADER3
vwxyz
>HEADER4
zyxwv
因此,序列 2 是 seq 1 的两倍。我的程序会将该文件拆分为一个文件 A,其中包含
>HEADER1
abcdefg
>HEADER3
vwxyz
和第二个文件 B 包含
>HEADER2
hijklmn
opqrstu
>HEADER4
zyxwv
假设输入文件由偶数个头序列对组成。