- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据集还有另一个问题。基本上,有一个具有相关特征的基因列表,包括位置编号(第 3 列和第 4 列)和链方向(+ 或 -)。我试图对位置进行计算,使它们相对于每个基因的起始密码子类型(第二列),而不是整个基因组(就像现在一样)。问题是,仅对 + STRAND 序列执行计算,- STRAND 序列不会显示在输出中。下面是数据集、我的代码、输出以及我尝试过的示例。
这是数据集:
GENE_ID TYPE POS1 POS2 STRAND
PITG_00002 start_codon 10520 10522 -
PITG_00002 stop_codon 10097 10099 -
PITG_00002 exon 10474 10522 -
PITG_00002 CDS 10474 10522 -
PITG_00002 exon 10171 10433 -
PITG_00002 CDS 10171 10433 -
PITG_00002 exon 10097 10114 -
PITG_00002 CDS 10100 10114 -
PITG_00003 start_codon 38775 38777 +
PITG_00003 stop_codon 39069 39071 +
PITG_00003 exon 38775 39071 +
PITG_00003 CDS 38775 39068 +
这是代码:
import numpy
import pandas
import pandas as pd
import sys
sys.stdout = open("outtry2.txt", "w")
data = pd.read_csv('pinfestans-edited2.csv', sep='\t')
groups = data.groupby(['STRAND', 'GENE_ID'])
corrected = []
for (direction, gene_name), group in groups:
##print direction,gene_name
if group.index[group.TYPE=='start_codon']:
start_exon = group.index[group.TYPE=='exon'][0]
if direction == '+':
group['POSA'] = 1 + abs(group.POS1 - group.POS1[start_exon])
group['POSB'] = 1 + abs(group.POS2 - group.POS1[start_exon])
else:
group['POSA'] = 1 - abs(group.POS2 - group.POS2[start_exon])
group['POSB'] = 1 - abs(group.POS1 - group.POS2[start_exon])
##print group
corrected.append(group)
以下是输出示例:
+ PITG_00003
GENE_ID TYPE POS1 POS2 STRAND POSA POSB
8 PITG_00003 start_codon 38775 38777 + 1 3
9 PITG_00003 stop_codon 39069 39071 + 295 297
10 PITG_00003 exon 38775 39071 + 1 297
11 PITG_00003 CDS 38775 39068 + 1 294
之前我遇到了数组值错误( Tab delimited dataset ValueError truth of array with more than one element is ambiguous error ),但已得到解决。所以接下来我尝试只做这一部分:
import numpy
import pandas
import pandas as pd
import sys
##sys.stdout = open("outtry2.txt", "w")
data = pd.read_csv('pinfestans-edited2.csv', sep='\t')#,
#converters={'STRAND': lambda s: s[0]})
groups = data.groupby(['STRAND', 'GENE_ID'])
corrected = []
for (direction, gene_name), group in groups:
print direction,gene_name
输出打印出所有 GENE_ID 及其 STRAND 符号(+ 或 -),并且它对 + 和 - 序列都执行了此操作。因此,在下面的某个位置,它不会选择 STRAND 列中带有 - 的任何序列。
所以我尝试将其添加到原始代码中:
if direction == '+':
group['POSA'] = 1 + abs(group.POS1 - group.POS1[start_exon])
group['POSB'] = 1 + abs(group.POS2 - group.POS1[start_exon])
elif direction == '-':
group['POSA'] = 1 - abs(group.POS2 - group.POS2[start_exon])
group['POSB'] = 1 - abs(group.POS1 - group.POS2[start_exon])
else:
break
print group
# put into the result array
corrected.append(group)
这是输出的最后,它打印了第一个 - 然后在结束之前卡住了一段时间:
+
GENE_ID TYPE POS1 POS2 STRAND POSA POSB
134991 PITG_23350 start_codon 161694 161696 + 516 518
134992 PITG_23350 stop_codon 162135 162137 + 957 959
134993 PITG_23350 exon 161179 162484 + 1 1306
134994 PITG_23350 CDS 161694 162134 + 516 956
-
最佳答案
这些行对我来说似乎很奇怪:
if group.index[group.TYPE=='start_codon']:
start_exon = group.index[group.TYPE=='exon'][0]
我猜,第一个只是尝试检查该组是否有起始密码子标记。但这没有意义,原因有两个。
(1) 如果只有一个 start_codon 条目并且它是第一个,那么条件实际上为 false!
In [8]: group.TYPE == 'start_codon'
Out[8]:
0 True
1 False
2 False
3 False
4 False
5 False
6 False
7 False
Name: TYPE
In [9]: group.index[group.TYPE == 'start_codon']
Out[9]: Int64Index([0], dtype=int64)
In [10]: bool(group.index[group.TYPE == 'start_codon'])
Out[10]: False
也许您想要 any(group.TYPE == 'start_codon')
或 (group.TYPE == 'start_codon').any()
或 sum(group.TYPE == 'start_codon') == 1
还是什么?但这也不对,因为
(2) 仅当设置 start_exon
时,您的代码才有效。如果不是,那么它将给出 NameError
或回退到上次发生的任何值,并且您无法保证这将处于合理的顺序。
如果我简单地使用 start_exon = group.index[group.TYPE=='exon'][0]
本身,那么我得到
In [28]: for c in corrected:
....: print c
....:
GENE_ID TYPE POS1 POS2 STRAND POSA POSB
8 PITG_00003 start_codon 38775 38777 + 1 3
9 PITG_00003 stop_codon 39069 39071 + 295 297
10 PITG_00003 exon 38775 39071 + 1 297
11 PITG_00003 CDS 38775 39068 + 1 294
GENE_ID TYPE POS1 POS2 STRAND POSA POSB
0 PITG_00002 start_codon 10520 10522 - 1 -1
1 PITG_00002 stop_codon 10097 10099 - -422 -424
2 PITG_00002 exon 10474 10522 - 1 -47
3 PITG_00002 CDS 10474 10522 - 1 -47
4 PITG_00002 exon 10171 10433 - -88 -350
5 PITG_00002 CDS 10171 10433 - -88 -350
6 PITG_00002 exon 10097 10114 - -407 -424
7 PITG_00002 CDS 10100 10114 - -407 -421
我不知道这些值是否有意义,但它似乎没有跳过任何内容。
关于python - For循环跳过大部分数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552482/
我在使用 io-ts 时遇到一些问题。我发现它确实缺乏文档,我取得的大部分进展都是通过 GitHub issues 取得的。不,我不明白 HKT,所以没有帮助。 基本上,我在其他地方创建一个类型,ty
我必须创建一个正则表达式来搜索整个文件,以找到与 Java XML 解析器的第一部分(但不是第二部分)的匹配项。这将用于防止某些 XXE 攻击。不幸的是,它确实必须是单个正则表达式,并且它确实需要搜索
我有一些简单的 Shared/_Header.cshtml 文件中的内容。 My Shared/_Layout.cshtml 通过调用插入该代码 @Html.Partial("_Header") 目前
我有一个 if-else 语句,其中: 条件 1:ID 匹配并且自动填充某些字段。然后 if 语句只填充其余字段 条件 2:ID 不匹配,所有字段均为空白。 ELSE 语句将它们全部填充 当我使条件
我正在开发一个单页滚动网站。我正在尝试实现 ScrollMagic 并固定第一部分,以便网站的其余部分滚动到固定部分的顶部。我尝试创建一个 jsfiddle 来显示问题,但我似乎无法让 jsfiddl
这是我的情况: 我想使用 Google AdWords 的转换脚本,但出于某种原因,他们代码段的 javascript 部分在我的页面上添加了一些我似乎无法摆脱的不需要的空白。 所以我正在查看的选项纯
寻找一种优雅的方式在页面上添加一次脚本,就是这样。 我有一个需要 2 个 CSS 文件和 2 个 JS 文件的部分 View 。在大多数地方,只需要其中 1 个部分 View 。但在单个页面上,我需要
我想要一个网站,该网站始终具有相同的部分,具有相同的 id 以及我想要显示的所有内容。我对 javascript 不太了解,我想知道如何删除除特定部分之外的所有内容。 最好的方法是否是只执行一个循环来
SQL 语句教程 (11) Group By 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name)
我试图理解部分并认为我已经明白了。基本上,这是一种将部分应用程序应用于二元运算符的方法。所以我了解所有(2*) , (+1)等例子就好了。 但是在 O'Reilly Real World Haskel
有没有办法禁止在部分中覆盖给定的关键字参数?假设我要创建函数 bar总是有 a设置为 1 .在以下代码中: from functools import partial def foo(a, b):
我有这个使用节的 OpenMP 代码 #pragma omp parallel sections num_threads(8) { printf_s("Allo fro
我正在尝试重新创建 Apple 制作的有缺陷的 CNContactPickerViewController,因此我有一个数据数组 [CNContact],我需要将其整齐地显示在 UITableView
我有一个相对布局,其中包含一些 float 在 GridView 上的 TextView 。当我在网格中选择一个项目时,布局向下移动到屏幕的尽头,只有大约 1/5 的部分是可见的。这是使用简单的翻译动
我想在我的 tableView 中有两个部分。我希望将项目添加到第 0 节,然后能够选择一行以将其从第 0 节移动到第 1 节。到目前为止,我已将这些项目添加到第 0 节,但是当它关闭时数据不会加
我正在以自由职业者的身份开发支付控制软件,但我有一些关于 mysql 的问题。 。我有一个用作日志的表,名为“Bitacora”。在表中,我有一个名为 idCliente 的列,它是自己表中一个人的
我有一个 PFQueryTableViewController,我想向 tableview 添加部分,我这样尝试: - (PFQuery *)queryForTable { PFQuery *qu
我正在尝试编写一个查询,将部分匹配项与存储的名称值进行匹配。 我的数据库如下所示 Blockquote FirstName | Middle Name | Surname --------------
我正在开发一个语音备忘录应用程序,并且正在将文件保存到表格 View 中。我希望默认文件名显示为“新文件 1”,如果使用“新文件 1”,则它会显示为“新文件 2”,依此类推。 我正在尝试使用 do-w
我有以下简单的 HTML 布局 .section1 { background: red; } .section2 { background: green; } .section3 { ba
我是一名优秀的程序员,十分优秀!