Redian新闻
>
阿三再立新功:20%的基因论文因excel出错 (转载)
avatar
阿三再立新功:20%的基因论文因excel出错 (转载)# Joke - 肚皮舞运动
H*g
1
【 以下文字转载自 Military 讨论区 】
发信人: Lishu008 (梨树请吃鸡), 信区: Military
标 题: 阿三再立新功:20%的基因论文因excel出错
发信站: BBS 未名空间站 (Thu Sep 1 07:25:19 2016, 美东)
一项新研究发现,Excel默认格式设置要为约20%的基因领域科研论文的错误背锅。

研究者们发现这些错误源自Excel会自动把基因名称纠正为日期或者数字,这些错误很
难被修正,而且因为无法永久性停用这一功能,很多科学家们在发表论文之前干脆就忘
记手动修改它们。

“Excel在在默认设置中会把基因名称转化为日期和浮点数值,”来自澳洲的研究团队
解释说。

“我们用程序扫描了主要基因组学期刊,发现约五分之一的论文所补充的Excel基因组
表单中都有基因名称转化错误。”

团队扫描了2005到2015年间发表于19份不同期刊上的3597份论文的35175张Excel表单。
通过一个可以识别基因名称错误的专门程序,他们发现有704份论文存在错误。

团队解释说:“煮个栗子,名为SEPT2和MARCH1的基因就会被Excel自动纠正为‘2-Sep
’和‘1-Mar’。此外,Excel还会自动将RIKEN标识符转化为浮点数字(比如将‘
2310009E13’变成‘2.31E+13’)…在最近发表的论文里,我们发现了更多基因符号被
转化成日期的现象(比如‘SEPT2’变成了‘2006/09/02’).”

雪上加霜的是,如果研究者想要点击“撤消”自动格式,它就会修改这个日期的格式,
而不是改回原来的基因名称。

正如《华盛顿邮报》的Christopher Ingraham解释说,如果研究者杨瑶输入“MARCH1”
,Excel会改成“1-MAR”。如果研究者点击“撤消”,它就会变成“42430”,因为这
就是Excel内部储存日期的方式。

20%的基因论文出现错误:Excel的锅

唯一想要避免这类错误的方法就是在输入前设置表单中每一列的格式。

研究者们希望这份报告可提高大家对该问题的意识,从而更多科学家会知道他们的研究
成果会因为一个简单的程序错误而打折扣。

所以最佳解决方式就是微软推出一个补丁,但是我们都知道微软是不靠谱的。所以研究
者们在格式问题上还是要保持高度警觉。

20%的基因论文出现错误:Excel的锅

该研究已经发表在Genome Biology上。
avatar
H*g
2
其实这个问题上 软件和用户都挺傻逼的
avatar
w*p
3
这也能发genome biology?
avatar
H*g
4
刊物们为了抓眼球

【在 w*p 的大作中提到】
: 这也能发genome biology?
avatar
w*g
5
千老不会用Pandas,只会Excel,只能是被软软三哥RL的命

★ 发自iPhone App: ChineseWeb 13

【在 H********g 的大作中提到】
: 刊物们为了抓眼球
avatar
s*i
6
问题软软的这个‘feature’真的很坑爹啊
我经常碰到的就是全数字的string就会被自动转化为数字,然后前面的0就被自动取消
了,而且这个feature无法关掉,软软的support亲口说的,尼玛

【在 H********g 的大作中提到】
: 其实这个问题上 软件和用户都挺傻逼的
avatar
h*e
7
为毛居然没有人起诉软软呢?
avatar
H*g
8
可以吧。在拷贝之前先全选,然后把表格都选成text。数字的话选成合适的数字格式。

【在 s*****i 的大作中提到】
: 问题软软的这个‘feature’真的很坑爹啊
: 我经常碰到的就是全数字的string就会被自动转化为数字,然后前面的0就被自动取消
: 了,而且这个feature无法关掉,软软的support亲口说的,尼玛

avatar
s*i
9
很多客户只用excel啊,平心而论excel很多功能很强大的呀,用起来做data
presentation很顺手哇
--有感于机器人的感染力

【在 w*****g 的大作中提到】
: 千老不会用Pandas,只会Excel,只能是被软软三哥RL的命
:
: ★ 发自iPhone App: ChineseWeb 13

avatar
s*i
10
哪,你试试打开一个csv file in excel

【在 H********g 的大作中提到】
: 可以吧。在拷贝之前先全选,然后把表格都选成text。数字的话选成合适的数字格式。
avatar
H*g
11
是啊,只要不需要编程,excel还是很管用的啊。
我觉得excel那个vb编程倒是不需要学啊,一团乱麻的。有那工夫还不如学个真的编程
语言呀。

【在 s*****i 的大作中提到】
: 很多客户只用excel啊,平心而论excel很多功能很强大的呀,用起来做data
: presentation很顺手哇
: --有感于机器人的感染力

avatar
H*g
12
先把csv转换成tab隔开的文本(当然是用别的程序啦),然后把tab隔开的文本拷贝进
excel。这样应该能行吧。

【在 s*****i 的大作中提到】
: 哪,你试试打开一个csv file in excel
avatar
s*i
13
就是VBA啊, MBA的首选,既可以装逼,又可以做数据,早年还是有市场的
现在玩大(点儿的)数据就歇菜了

【在 H********g 的大作中提到】
: 是啊,只要不需要编程,excel还是很管用的啊。
: 我觉得excel那个vb编程倒是不需要学啊,一团乱麻的。有那工夫还不如学个真的编程
: 语言呀。

avatar
s*i
14
你等等,我先教她们怎么转换文本哈,我当年好说歹说才说服一小撮人装了notepad++

【在 H********g 的大作中提到】
: 先把csv转换成tab隔开的文本(当然是用别的程序啦),然后把tab隔开的文本拷贝进
: excel。这样应该能行吧。

avatar
H*g
15
csv变tab有两种情况:
简单情况是只有逗号,这种好转。把逗号直接换成tab就行了。
复杂情况是内容里有逗号,这时候最好拿个小程序转。

【在 s*****i 的大作中提到】
: 你等等,我先教她们怎么转换文本哈,我当年好说歹说才说服一小撮人装了notepad++
avatar
H*g
16
SPSS,R什么的不是更高大上吗?

【在 s*****i 的大作中提到】
: 就是VBA啊, MBA的首选,既可以装逼,又可以做数据,早年还是有市场的
: 现在玩大(点儿的)数据就歇菜了

avatar
H*g
17
这个肯定是最合“她们”口味的办法:
http://www.convertcsv.com/csv-to-csv.htm

【在 s*****i 的大作中提到】
: 你等等,我先教她们怎么转换文本哈,我当年好说歹说才说服一小撮人装了notepad++
avatar
s*i
18
其实,没人会愿意搞这些的,人家就是要看个结果, in excel
我后来都是直接告诉她们,it is nothing to do with us, live with it. 后来她们
就放弃了
然后去找我manager complain了...
现在我只管扫地,世界清静多了

【在 H********g 的大作中提到】
: csv变tab有两种情况:
: 简单情况是只有逗号,这种好转。把逗号直接换成tab就行了。
: 复杂情况是内容里有逗号,这时候最好拿个小程序转。

avatar
w*g
19
我一看Excel那种丑图就想吐。

★ 发自iPhone App: ChineseWeb 13

【在 s*****i 的大作中提到】
: 很多客户只用excel啊,平心而论excel很多功能很强大的呀,用起来做data
: presentation很顺手哇
: --有感于机器人的感染力

avatar
w*g
20
VBA倒台主要是没人给它做轮子。

★ 发自iPhone App: ChineseWeb 13

【在 s*****i 的大作中提到】
: 就是VBA啊, MBA的首选,既可以装逼,又可以做数据,早年还是有市场的
: 现在玩大(点儿的)数据就歇菜了

avatar
H*g
21
用美图秀秀搞一搞啊

【在 w*****g 的大作中提到】
: 我一看Excel那种丑图就想吐。
:
: ★ 发自iPhone App: ChineseWeb 13

avatar
w*g
22
白素贞语言里这种轮子一堆。

★ 发自iPhone App: ChineseWeb 13

【在 H********g 的大作中提到】
: csv变tab有两种情况:
: 简单情况是只有逗号,这种好转。把逗号直接换成tab就行了。
: 复杂情况是内容里有逗号,这时候最好拿个小程序转。

avatar
H*g
23
csv变tab太简单了,自己做轮子可能还要快一些。

【在 w*****g 的大作中提到】
: 白素贞语言里这种轮子一堆。
:
: ★ 发自iPhone App: ChineseWeb 13

avatar
r*g
24
数字前面加`(反单引号)就可以。

【在 s*****i 的大作中提到】
: 问题软软的这个‘feature’真的很坑爹啊
: 我经常碰到的就是全数字的string就会被自动转化为数字,然后前面的0就被自动取消
: 了,而且这个feature无法关掉,软软的support亲口说的,尼玛

avatar
H*g
25
键盘上 1 前面那个吧?

【在 r*g 的大作中提到】
: 数字前面加`(反单引号)就可以。
avatar
n*7
26
妈的
当年就是被这个Sept5给烦死了
sb老板只会excel,没办法
avatar
s*i
27
我试了一下貌似不行啊,前面单引号貌似倒是可以
这个东西最大的问题就是,我们的成品是csv file,需要人reivew,然后放到机器上跑
,而这个column是key column,加了任何多余的字符都会导致各种各样的问题

【在 r*g 的大作中提到】
: 数字前面加`(反单引号)就可以。
avatar
H*g
28
应该可以做个perl程序,把csv批量转换成xls文件。

【在 s*****i 的大作中提到】
: 我试了一下貌似不行啊,前面单引号貌似倒是可以
: 这个东西最大的问题就是,我们的成品是csv file,需要人reivew,然后放到机器上跑
: ,而这个column是key column,加了任何多余的字符都会导致各种各样的问题

avatar
u*q
29
论文不都是用LaTeX吗
avatar
H*g
30
哈哈,copy paste出来的小程序1号:读csv打印tab分隔的表格
csv2tab.pl
#读取test.csv,打印tab分隔的表格
use strict;
use warnings;
use Text::CSV;
my @rows;
my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, "<:encoding die="" or="">while ( my $row = $csv->getline( $fh ) ) {
push @rows, $row;
print join "t", @$row,"n";
}
$csv->eof or $csv->error_diag();
close $fh;

【在 s*****i 的大作中提到】
: 我试了一下貌似不行啊,前面单引号貌似倒是可以
: 这个东西最大的问题就是,我们的成品是csv file,需要人reivew,然后放到机器上跑
: ,而这个column是key column,加了任何多余的字符都会导致各种各样的问题

avatar
w*n
31
我觉得描述基因啊碱基序列之类的应该有自己的专门文件和标准格式
比如晶体结构就有

【在 u****q 的大作中提到】
: 论文不都是用LaTeX吗
avatar
H*g
32
小程序2,csv转换xls
#csv2xls.pl
use strict;
use warnings;
use Text::CSV;
use Spreadsheet::WriteExcel;
my @rows;
my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, "<:encoding die="" or="">my $rowcount=0;
while ( my $row_temp = $csv->getline( $fh ) ) {
push @rows, $row_temp;
print join "\t", @$row_temp,"\n";
$rowcount++;
}
$csv->eof or $csv->error_diag();
close $fh;

###第二部分,写xls
# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new('output.xls');
# Add a worksheet
my $worksheet = $workbook->add_worksheet();
# Add and define a format
my $format = $workbook->add_format(); # Add a format
$format->set_bold();
$format->set_color('red');
$format->set_align('center');
# Write a formatted and unformatted string, row and column notation.

foreach my $row (0..$rowcount-1){
my $colcount=scalar @{$rows[$row]};
foreach my $col (0..$colcount){

$worksheet->write($row, $col, ${$rows[$row]}[$col], $format);
}
}
测试数据test.csv
sept5,asdf,
mar15,"as,a",
asdf,"as:""d""f",
,,
,,
,,
,,
avatar
d*z
33
excel这个feature确实非常sb。
avatar
H*g
34
哈哈,测试通过。

attribute.

【在 H********g 的大作中提到】
: 小程序2,csv转换xls
: #csv2xls.pl
: use strict;
: use warnings;
: use Text::CSV;
: use Spreadsheet::WriteExcel;
: my @rows;
: my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
: or die "Cannot use CSV: ".Text::CSV->error_diag ();
: open my $fh, "<:encoding die="" or="">
avatar
s*i
35
输出xls,xlsx file, python有两三种package,弄起来就是分分钟的事情,对一些特
(固)殊(执)的客户,我们也是送的excel file或者html email,但是关键是这个
feature不能关太傻逼了

attribute.

【在 H********g 的大作中提到】
: 小程序2,csv转换xls
: #csv2xls.pl
: use strict;
: use warnings;
: use Text::CSV;
: use Spreadsheet::WriteExcel;
: my @rows;
: my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
: or die "Cannot use CSV: ".Text::CSV->error_diag ();
: open my $fh, "<:encoding die="" or="">
avatar
H*g
36
升级版,可以读取命令行输入了
#csv2xls.pl
#>csv2xls.pl abcd.csv
#generages abcd.xls
use strict;
use warnings;
use Text::CSV;
use Spreadsheet::WriteExcel;
my $infile="test.csv" ;
if($ARGV[0]){$infile=$ARGV[0];}
my $basename=$infile;
$basename=~s/.csv//i;
my $outfile="$basename.xls";
my @rows;
my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, "<:encoding die="" or="">my $rowcount=0;
while ( my $row_temp = $csv->getline( $fh ) ) {
push @rows, $row_temp;
print join "t", @$row_temp,"n";
$rowcount++;
}
$csv->eof or $csv->error_diag();
close $fh;

# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new("$outfile");
# Add a worksheet
my $worksheet = $workbook->add_worksheet();
# Add and define a format
my $format = $workbook->add_format(); # Add a format
$format->set_bold();
$format->set_color('red');
$format->set_align('center');
# Write a formatted and unformatted string, row and column notation.

foreach my $row (0..$rowcount-1){
my $colcount=scalar @{$rows[$row]};
foreach my $col (0..$colcount){

$worksheet->write($row, $col, ${$rows[$row]}[$col], $format);
}
}

attribute.

【在 H********g 的大作中提到】
: 小程序2,csv转换xls
: #csv2xls.pl
: use strict;
: use warnings;
: use Text::CSV;
: use Spreadsheet::WriteExcel;
: my @rows;
: my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
: or die "Cannot use CSV: ".Text::CSV->error_diag ();
: open my $fh, "<:encoding die="" or="">
avatar
H*g
37
我的word里把微软那些自作聪明的feature能关的全关了

【在 s*****i 的大作中提到】
: 输出xls,xlsx file, python有两三种package,弄起来就是分分钟的事情,对一些特
: (固)殊(执)的客户,我们也是送的excel file或者html email,但是关键是这个
: feature不能关太傻逼了
:
: attribute.

avatar
d*f
38
excel真tmd难用,我老以前别人给我的excel破烂整了2天搞不定,直接转成csv,花3分
钟写了个matlab就搞定了

【在 H********g 的大作中提到】
: 我的word里把微软那些自作聪明的feature能关的全关了
avatar
g*q
39
这用excel的人也太SB了吧.各种自动转换难道不是可以用户自己定义的?
avatar
s*y
40
微软有一个大问题就是特别喜欢自作聪明,偏偏又不认识到自己其实特别愚蠢。
Windows 8就是一个大例子。Windows 10也眼看就要搞砸了。

【在 H********g 的大作中提到】
: 我的word里把微软那些自作聪明的feature能关的全关了
avatar
H*g
41
成天发明各种“需求”

【在 s******y 的大作中提到】
: 微软有一个大问题就是特别喜欢自作聪明,偏偏又不认识到自己其实特别愚蠢。
: Windows 8就是一个大例子。Windows 10也眼看就要搞砸了。

avatar
H*g
42
windows8和10最烦人的是除了控制面板之外又加个什么system设置app,搞得乱七八糟。

【在 s******y 的大作中提到】
: 微软有一个大问题就是特别喜欢自作聪明,偏偏又不认识到自己其实特别愚蠢。
: Windows 8就是一个大例子。Windows 10也眼看就要搞砸了。

avatar
d*f
43
我软是大奶的风格,你要让我先舒服,不是老娘跪下来给你服务

【在 s******y 的大作中提到】
: 微软有一个大问题就是特别喜欢自作聪明,偏偏又不认识到自己其实特别愚蠢。
: Windows 8就是一个大例子。Windows 10也眼看就要搞砸了。

avatar
w*n
44
微软贡献还是很大的,可惜败在了印度人手里

【在 d********f 的大作中提到】
: 我软是大奶的风格,你要让我先舒服,不是老娘跪下来给你服务
avatar
w*g
45
听起来象孔乙已说"你造么,茴香豆的茴字有八种写法"。
就用xlwings好了。

★ 发自iPhone App: ChineseWeb 13

【在 s*****i 的大作中提到】
: 输出xls,xlsx file, python有两三种package,弄起来就是分分钟的事情,对一些特
: (固)殊(执)的客户,我们也是送的excel file或者html email,但是关键是这个
: feature不能关太傻逼了
:
: attribute.

avatar
d*f
46
毛贡献,没有我软it革命能提前十年

【在 w***n 的大作中提到】
: 微软贡献还是很大的,可惜败在了印度人手里
avatar
w*n
47
没有我软开放盗版,祖国的it事业估计还停留在ucdos5

【在 d********f 的大作中提到】
: 毛贡献,没有我软it革命能提前十年
avatar
w*g
48
红旗Linux啊。再不着等到07年还可以搞安猪改。

★ 发自iPhone App: ChineseWeb 13

【在 w***n 的大作中提到】
: 没有我软开放盗版,祖国的it事业估计还停留在ucdos5
avatar
l*e
49
你用import text file就可以把所有column都转换成text。


: 哪,你试试打开一个csv file in excel



【在 s*****i 的大作中提到】
: 输出xls,xlsx file, python有两三种package,弄起来就是分分钟的事情,对一些特
: (固)殊(执)的客户,我们也是送的excel file或者html email,但是关键是这个
: feature不能关太傻逼了
:
: attribute.

avatar
H*g
50
问个问题,python有2也有3,将来会不会有一天2完全被淘汰了,一堆东西跟着它也被
淘汰了?

【在 w*****g 的大作中提到】
: 听起来象孔乙已说"你造么,茴香豆的茴字有八种写法"。
: 就用xlwings好了。
:
: ★ 发自iPhone App: ChineseWeb 13

avatar
w*n
51
如果p3 比p2 有500%的效率优势,估计p2就会被淘汰了
现在是持平,没有动力更新啊

【在 H********g 的大作中提到】
: 问个问题,python有2也有3,将来会不会有一天2完全被淘汰了,一堆东西跟着它也被
: 淘汰了?

avatar
u*q
52
P2 library太多,不会倒的。。。
avatar
l*y
54
wk,这个以前发过文章啊,怎么又发一遍?
其实这个问题很好处理。问题的原因是使用 csv 的时候没有按照规范导出。基因名是
text, 按规范必须加引号,但是很多人导出时偷懒。不加引号时,数据类型由excel猜
,当然就出问题了。

【在 H********g 的大作中提到】
: 问个问题,python有2也有3,将来会不会有一天2完全被淘汰了,一堆东西跟着它也被
: 淘汰了?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。