问题标签 [bioinformatics]
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.
bash - 将两个列表与列上的连接结合起来
我正在尝试组合两个列表,通过一个公共字段(例如 ENST00000371026)将它们连接起来。我尝试了以下但没有运气。实际的方法是什么?
一个示例输出是:
mongodb - MongoDB:存储染色体/位置的最有效方法是什么
我想使用 MongoDB 存储一些基因组位置(染色体、位置)。
就像是:
我希望能够快速找到给定段(chrom,[posStart - posEnd])中的所有记录。最好使用什么键/_id?
铬,位置对象?
填充字符串?
一个自动生成的 id,在 chrom 和 position 上有一个索引?
其他 ?
感谢您的建议
皮埃尔
PS:(这个问题在biostar上交叉发布:http: //biostar.stackexchange.com/questions/2519)
perl - 如何使用 Perl 在字符串中搜索不同的生物信息学主题变体?
我有一个带有不同变体的串联重复的程序输出。是否可以(在字符串中)搜索主题并告诉程序找到最大“3”不匹配/插入/删除的所有变体?
workflow - 组织生物信息学项目的最佳方式?
我来自计算机科学。背景,但我现在正在做基因组学。
我的项目包括许多生物信息学,通常涉及:比对序列、比较序列和各种基因组注释特征之间的重叠等,来自不同类别的生物样本、时间进程数据、微阵列、高通量测序(“next-代”排序,虽然它实际上是当前一代)数据,这种东西。
这种分析的工作流程与我在计算机科学研究期间所经历的完全不同:没有 UML 和精心设计的对象,闪耀着崇高的优雅,没有版本管理,没有适当的文档(通常根本没有文档),没有软件工程全部。
相反,每个人在这个领域所做的就是一个接一个地破解一个 Perl 脚本或AWK -one-liner,通常用于一次性使用。
我认为原因是输入数据和格式变化如此之快,问题需要尽快回答(截止日期!),似乎没有时间组织项目。
一个例子来说明这一点:假设你想写一个光线追踪器。您可能首先会在软件工程上投入大量精力。然后对其进行编程,最后以某种高度优化的形式。因为你会无数次地使用光线追踪器来处理不同的输入数据,并且会在未来几年内对源代码进行更改。因此,在从头开始编写严肃的光线追踪器时,优秀的软件工程至关重要。但是想象一下,你想写一个光线追踪器,你已经知道你会用它来光线追踪一个,永远的单张照片。那张照片是在方格地板上的一个反射球。在这种情况下,您只需以某种方式将其破解。生物信息学只是后一种情况。
您最终会得到具有不同格式的相同信息的整个目录树,直到您达到下一步所需的一种特定格式,以及十几个名称如“tmp_SNP_cancer_34521_unique_IDs_not_Chimp.csv”的文件,您对此一无所知一天后你为什么创建这个文件以及它到底是什么。
有一段时间,我使用MySQL有帮助,但现在生成新数据和更改格式的速度如此之快,以至于无法进行正确的数据库设计。
我知道有一份涉及这些问题的出版物(Noble,WS(2009 年,7 月)。组织计算生物学项目的快速指南。PLoS Comput Biol 5 (7),e1000424+)。作者很好地总结了目标:
核心指导原则很简单:不熟悉您项目的人应该能够查看您的计算机文件并详细了解您做了什么以及为什么。
嗯,这也是我想要的!但是我已经跟那个作者一样的做法了,我觉得这绝对是不够的。
记录你在Bash中发出的每一个命令,评论你为什么这样做,等等,都是乏味且容易出错的。工作流程中的步骤太细了。即使你这样做了,要弄清楚每个文件的用途、特定工作流在什么时候被中断、出于什么原因以及你继续的位置,这仍然是一项极其繁琐的任务。
(我不是在 Taverna 的意义上使用“工作流程”这个词;我所说的工作流程只是指您为达到特定目标而选择执行的步骤、命令和程序)。
你如何组织你的生物信息学项目?
python - 当我从 Web 运行 CGI 脚本时,为什么 python 找不到某些模块?
我不知道这里可能是什么问题:
我有一些来自 Biopython 的模块,我可以在使用交互式提示符或通过命令行执行 python 脚本时轻松导入这些模块。
问题是,当我尝试在 web 可执行 cgi 脚本中导入相同的 biopython 模块时,我收到“导入错误”
: 没有名为 Bio 的模块
这里有什么想法吗?
r - 使用 R 查找范围内的重叠
我有两个data.frame,每个都有三列:chrom、start & stop,我们称它们为rangeA 和rangeB。对于rangeA的每一行,我正在寻找rangeB中的哪一行(如果有的话)完全包含rangeA行——我的意思是rangesAChrom == rangesBChrom, rangesAStart >= rangesBStart and rangesAStop <= rangesBStop
。
现在我正在做以下事情,我只是不太喜欢。请注意,由于其他原因,我正在遍历 rangeA 的行,但这些原因都不是什么大问题,考虑到这个特定的解决方案,它最终只会使事情更具可读性。
范围A:
范围B:
对于 rangeA 中的每一行:
我认为必须有一种更好的(更好的,我的意思是在 rangeA 和 rangeB 的大型实例上更快)的方法来执行此操作,而不是循环遍历此构造。有任何想法吗?
python - 子类/子类
我有这个类和子类:
班级范围:
类 DNAFeature(范围):
下面是我要做的:创建一个新类——GeneModel——它包含一组代表外显子的 DNAFeature 对象,并且是 DNAFeature 的子类。它应该实现以下方法: getFeats() – 返回一个 DNAFeature 对象列表,按起始位置排序 addFeat(feat) – 接受一个 DNAFeature 特征并将其添加到其内部的 DNAFeature 对象组中负整数,设置起始 ATG 密码子的起始位置 getTranslStart() - 返回一个整数,起始 ATG 密码子的起始位置 setTranslStop(i) - 接受正整数,设置终止密码子的结束位置 getTranslStop() -返回一个整数,终止密码子的结束位置 setDisplayId(s) – 设置基因模型的名称;s 是一个字符串 getDisplayId() – 返回基因模型的名称,返回一个字符串,例如,AT1G10555.1 当用户将不正确的类型和值传递给构造函数和“set”方法时,GeneModel 应该引发适当的 ValueError 和 TypeError 异常。</p>
我试图写下我想到的任何东西,阅读书籍以及寻找将代码组合在一起的方法,但我对编程非常陌生,几乎无法理解如何正确编写代码。老实说,这是我第一次上编程课。因此,如果我在代码中犯了任何有趣的错误,请原谅我。我还没有完成我的代码,并且仍在阅读书籍以了解我的代码在哪里做错和正确。但是,我真的需要你的帮助来引导我走上正确的道路。非常感谢你们。以下是我的代码:
类基因模型(DNAFeature):
oop - Matlab生物信息学工具箱中clustergram如何使用其他聚类方法
编辑:我想通了。只是没看懂符号。
你好,
希望有人熟悉生物信息学工具箱中的簇图。我对函数的图形方面(树状图/热图)感兴趣,但目前我有障碍,因为它需要我使用 Matlab 的 cluster() 函数。我更愿意使用我的个人算法进行聚类,然后让 Matlab 为我可视化。
我已经搜索了代码,但是对于一般的面向对象编程,尤其是 Matlab 的版本,我一无所知。因此,我所知道的只是函数调用了“obj = obj.getclusters”这一行,但不知道如何对其进行编辑,以便我使用自己的聚类算法而不是 Matlab 的。
任何帮助表示赞赏!
编辑:我正在专门研究一种新算法,因此我不需要 pdist 或链接。树状图是在 clustergram 函数之外计算的。我用来创建树状图/热图的只是 clustergram 函数。我的生物信息学工具箱是 3.3 版
真的,我在这里寻找的只是'obj = obj.getclusters;'到底做了什么 做?我不是程序员,对 OO 真的不熟悉。对我来说,这看起来就像我们神奇地拥有集群,因为没有函数调用。这是在 clustergram() 的第 304 行
perl - 模拟 RNA 合成的 Perl 程序
寻找有关如何处理我的 Perl 编程作业以编写 RNA 合成程序的建议。我总结并概述了下面的程序。具体来说,我正在寻找对以下块的反馈(我将编号以方便参考)。我已经阅读了 Andrew Johnson 的 Elements of Programming with Perl (好书)的第 6 章。我还阅读了 perlfunc 和 perlop pod-pages,没有任何关于从哪里开始的内容。
程序描述:程序应从命令行读取输入文件,将其翻译成 RNA,然后将 RNA 转录成大写的单字母氨基酸名称序列。
接受以命令行命名的文件
这里我将使用 <> 运算符
检查以确保文件仅包含 acgt 或 die
/li>将 DNA 转录为 RNA(每个 A 被 U 替换,T 被 A 替换,C 被 G 替换,G 被 C 替换)
不知道该怎么做
从“AUG”的第一次出现开始,将此转录并分解为 3 个字符“密码子”
不确定,但我想这是我将开始 %hash 变量的地方?
取 3 个字符“密码子”并给它们一个单字母符号(大写的单字母氨基酸名称)
使用为键分配值(这里有 70 种可能性,所以我不确定在哪里存储或如何访问)
如果遇到间隙,则启动新行并重复该过程
不确定,但我们可以假设差距是三的倍数。
我以正确的方式接近这个吗?是否有一个我忽略的 Perl 函数可以简化主程序?
笔记
必须是自包含程序(密码子名称和符号的存储值)。
每当程序读取一个没有符号的密码子时,这是 RNA 中的一个缺口,它应该开始一个新的输出行,并从下一次出现的“AUG”开始。为简单起见,我们可以假设间隙总是三的倍数。
在我花任何额外的时间进行研究之前,我希望能确认我正在采取正确的方法。感谢您花时间阅读并分享您的专业知识!
perl - 使用 perl 脚本编辑帮助以在数组中的特定位置开始和停止
寻找故障排除和编辑帮助。这是一个家庭作业。我的教授鼓励使用论坛。我还没有使用 Perl Functions 或 Subs 的经验,所以请将响应限制在适当的级别,以便我理解。
该脚本的目的是读取一串 DNA(或我稍后将添加的命令行文件),将其翻译成 RNA,然后以大写单字母氨基酸名称的形式返回蛋白质的值。
脚本的作用:
从第一个字符中取出 3 个字符“密码子”,并给它们一个单字母符号(哈希表中的大写单字母氨基酸名称)
打印以 AUG(“M”)开头并以 UAG、UAA 或 UGA 结尾的字符串的 RNA 蛋白质。
如果遇到间隙,则启动新行并重复该过程。我们可以假设间隙是三的倍数。
据我所知,主要问题:
我不知道数据在哪里循环通过哈希表。我试过在我的 Foreach 块之前和之后放置它。我还完全取消了 Foreach 块并尝试了 While & If。
Foreach 块似乎并未处理所有 @all_codons 数组,仅在 AUG 处停止。
明显和最大的问题是它什么也没返回。沿途某处 $next_codon 值被分配“假”。我已经尝试逐条注释每一行 - 返回任何内容的最后一行是 My $start 并且从那里开始它都是错误的。
剧本: