一个村庄开始隐姓埋名——写给庄头

题记:庄头是天津宝坻的一个小村,2017年,为了给京唐高铁让路,这个村庄整体拆迁。2019年,村民仍然没能住进安置房,而是仍在投亲靠友或者租房住。因为有亲戚在庄头村,笔者小时候也经常去那里,保留了很多回忆。漂泊在异乡,一个记忆满满的村庄消失了,也只能写首小诗纪念。

 

一座五百岁的村庄

在某年某月苏醒

然后只留存在记忆里……

也许

它没有消失

只是隐姓埋名

 

一只无形的手

轻而易举

就将它从大地上抹去

 

抹去的

除了村庄的姓名

还有所有的房子、树木、鱼塘、小路

所有农具和洒在上面的汗水

所有工匠的心思

所有灶膛里的火

所有喝过的酒

所有游子的乡愁

所有寄往那里的信

所有的婚礼

所有的葬礼

所有吹过的唢呐

所有唱过的戏

所有放过的电影

所有马牛羊鸡犬猪以及昆虫

所有物产:棉花、大豆、高粱、玉米、小麦……

一切有形无形

都在那一天枯萎了

 

没有了自己的土地

那一刻

祖祖辈辈传下来的手艺

忽然变得一文不值

 

那一天

年过古稀的老人和襁褓中的婴儿

全都变成二十岁

开始流浪天涯

头顶着乌黑的秀发

囊萤映雪

 

那一天开始

吃过的每一顿饭

放学的每一次铃声

每一阵蝉鸣

每一场雨雪雷电

每一次喜怒哀乐

都选择了流浪

 

谁也不曾想到

也不知为何

这一切竟如此柔软……

 

若干年后

大地的伤口会愈合

仿佛什么都没有发生

那个村庄也许早已隐姓埋名

跟着人们

流浪

流浪……

小麦

夏至前后,正好是家乡小麦成熟的季节。秀穗之后,小麦就开始开花、授粉、灌浆、成熟。成熟前的几个礼拜,天气不能太干热, 也不能有大风大雨。小麦平平安安在地里由青转黄,是上天的恩赐。

小麦一成熟,小学就放了麦秋假,所以小学生们也要跟着一起劳作。

不同的地方,小麦成熟的时间稍有不同。低洼的地方,水分充足,成熟晚几天;较高的地方,田地贫瘠,成熟早几天。

麦子熟了,一定要第一时间收回来,俗称“抢秋”。因为雨季马上来临,如果收得不够快,可能就被后来的雷雨大风吹倒了,收回来的麦子如果让雨打湿了,很快就会发霉变质。所以,无论多么天气多么炎热,收割都要尽快开始,尽快结束。用白居易的话说,就是“足蒸暑土气,背灼炎天光”。

麦子快要熟的时候,家家户户就都磨好了镰刀。刀刃要磨到像雪一样白,用手摸一下,刀刃都沾手。

早上五六点钟,盛夏的太阳早已经明媚地照着。女主人在白色小塑料桶里灌好了水,男主人套上驴车,车上拉着绳子和铰棍,还有自己的孩子,出发去自家的麦地。

深蓝的天空,飘着一朵朵白云,虽然是早上,太阳也开始展示自己的威力,发出灼热的光。麦田像湖水一样平静。一垄一垄的麦子已经变得金灿灿,麦子就伫立在地里。忽然有风吹过来,麦田一阵一阵起伏,就成了一阵一阵麦浪。麦芒、麦穗还是麦葶秆之间互相摩擦着,发出一阵沙沙声。一切都萦绕在令人愉悦的麦香里。

第一镰总要开始。

猫下腰,右手攥着镰刀,左手虎口向下,伸向右边,然后向左一拨,麦秆就乖乖攥在左手里,麦秆就露出来了。右手的镰刀正好伸过去,向后一拉,麦子就齐刷刷割下来。镰刀不能太高,距离地面最多一揸:太高了,左手的麦葶秆太短,麦个子很难捆;太低了,麦葶秆越靠近地点也越结实,割的时候更费力气,也可能会碰到下面的土,镰刀很快就钝了。

割好的麦子不能直接装车,而是要先捆成个子,也就是直径大约30-40公分一束,捆在一起。割下来的第一镰刀,总是先紥一个“䌁” (yao4)。取几十根麦葶秆,在靠近麦穗附近扭几圈。将麦葶秆平均分成两部分,把麦穗放在上面。“䌁”扭好之后,就可以把割好的麦子放在上面。直径大约能到30-40公分了,就扭几下“䌁”,捆成麦个儿。一镰一镰收割,麦个子也逐渐多起来。一个壮劳力,起早贪黑,也许能割多半亩地。期间要不断猫腰、起身,猫腰、起身,再加上用镰刀收割,一天下来已经不想动了,汗水更是不知道流了多少。

日薄西山,麦子终于收好了。地上都是新鲜的麦茬,几百个麦个子散落在地里。

开始装车。这里装的是驴车。把麦个子一层层码好,一般是麦根朝向车外,麦穗放在车厢里面。因为麦穗比较沉,沉的一边要放车厢里,有助于重心平衡。后面插上铰棍,把车刹紧。装车是一门艺术,不能装太高,也不能装太多,也要装的前后左右都平衡,否则农村的路坑洼不平,很容易翻车,而翻车是特别麻烦的事,不仅自己可能会受伤,也会让其他人笑话。

麦车赶回家,麦个儿要先卸下来戳好:麦穗向上,密密麻麻码在一起,上面不能再压东西,防止焐了。

家里已经压好了麦场。要压麦场,先要给院子松土,各种坑坑洼洼都要铲平。有时候和上麦鱼儿,再浇水,搅拌均匀后,等到泥土不沾碌碡,就可以拉着碌碡压平。压好的麦场非常平坦,也很结实。麦场弄好后,就可以铡麦子了。

因为割回来的麦子太长,不能直接放打麦机,先要用一个大铡刀铡短了,只取上面有麦穗的一半。铡下来的部分,称为麦根,垛起来烧火用。麦子铡好后,上面部分就摊开在麦场上晒干,也要两三天。晒干后,所有麦子再在麦场的角落垛成一大垛。就可以打麦子了。

打麦子要先联系好村里的打麦机(脱粒机)和电工,用动力线(380V)给电滚子供电,带动打麦机。打麦机有滚筒式和复合式等几种,滚筒式只能脱粒,打完麦子,麦鱼儿和麦粒还混在一起。高级一点儿的打麦机可以直接脱粒,而且麦粒一出来就很干净,麦鱼儿也自动分出来了,省了很多事。

麦粒脱下来之后,要尽快铺在帆布上晒干,这样又是三两天的时间。麦子要是没有晒干,不但会发霉,也会更容易生虫子。

晒麦子都是要选最晴的天。把麦子摊平,最好只有几厘米后,在太阳下暴晒。为了让底下的麦粒也尽快脱水干燥,一般赤着脚将麦子趟成一垄一垄的,一个小时左右就去趟一次,或者用耙子翻动几次。到下午三四点,日头西沉的时候,就要抓紧开始把粮食灌起来,因为傍晚有露水,不灌起来的话,粮食就又受潮了。麦子晒得特别干燥之后,才可以放入缸里面。一部分麦子留在鱼鳞袋子,堆在储藏间,换面用。

一亩地,一般能产600-700斤晒干的小麦。如果一家三口种一亩地麦子,一般能够一年的口粮,仅此而已。

我最后一次割麦子,是小学六年级,那还是1995年。干了一天的活之后,累到不想动。从那之后,远处的联合收割机就直接下到田间地头。收割机在地里走一圈就把麦子收好了,还直接把麦子灌袋,各种繁琐的功夫都省了。在那以后,再也没什么人用镰刀手工割麦子,也没有了驴车,没有了上面所说的捆麦个子、装车、铡麦子、压场、打麦子、晒麦子,这些全部一去不复返了。

我时常会想起那时的人和事,但并不怀念那时的生活。时常想起的是村里的盛夏,大树上的蝉鸣,池塘里的荷花,村边宽广的麦田,起伏的麦浪,想起那火辣的太阳。这一切都过去了:祖祖辈辈的汗水,还有他们自己,就都留在了那一片田里。

也许,这就是生活的全部。

宝坻方言常用词汇

宝坻位于天津市北部,距离天津城区70公里,北京东南90公里。西接河北省香河县,金代以前是香河县的一部分。按照《汉语方言地图》,香河方言属于北京官话京师片,而宝坻方言属于冀鲁官话蓟遵小片。近年来,也有学者认为冀鲁官话保唐片和东北官话、北京官话都应该属于广义的北京官话区,或者称为幽燕官话区。

香河和宝坻方言所用的绝大部分词汇相同,只是音调略有不同。本词汇表最初就是根据《香河县志》(2017)145-151页整理的,并在其基础上补充一些宝坻方言常用词汇,原香河词汇表中宝坻不用的部分已经删去。音调均按照宝坻的1,2,3,4声以及轻声标注,未标注1234的为轻声。

由于本人语文水平有限,很多方言用字没有考证其本字,因此本词汇难免有很多错别字,仅供感兴趣的老师同学参考。

参考文献: 香河县地方志编纂委员会 (2017) 《香河县志(1979-2008)》, 方志出版社,北京

宝坻口语 拼音 普通话词汇
八角子 ba1 jiao3 ze 毒蛾的幼虫
跋只 ba1 zhe
把xin ba2 xin 用于割取高粱穗的手持平板状农用刀具
罢园 ba4 yuan2 最后摘下的一批瓜果等
白眼儿狼 bai yanr3 lang2 姥姥称外孙
白话 bai2 huo 说,一般用于描述第三方发言,同时不同意第三方的说法
败家子儿 bai4 jia1 zir3 好吃懒做的人
傍黑儿 bang1 her 傍晚
膀盯膀 bang3 ding1 bang3 从头到尾总是
膀盯着 bang3 ding1 zhe 从头到尾总是
棒子 bang4 zi 玉米
棒子柴火 bang4 zi chai2 he 玉米秸
包了儿 bao1 liaor 全部买下
被窝 bei4 wo1 被子
奔儿拔 benr1 ba2 白茅未开的花序,可食
锛儿头 benr1 tou2 前额凸起
脖颈子 bo2 geng3 zi 领子与脖子之间的空隙
脖搂子 bo2 lou1 zi 耳光
不着调 bu1 zhao2 diao4 不认真、 不可靠
不大离儿 bu2 da lir2 差不多
不是啥省油儿的灯 bu2 shi4 sha2 sheng3 your2 de deng1 不好惹
布鱼 bu4 yu2 圆尾斗鱼
菜饽饽 cai4 bo2 bo 玉米面菜团子
草鸡 cao3 ji1 母鸡
草驴 cao3 lv2 母驴
肏蛋手 cao4 dan4 shou3 能力不佳的人
嚓儿秸 car3 jie1 苍耳子
cei4 吃, 也表示摔了
差不大离儿 cha4 bu2 da4 lir2 差不多
柴火 chai2 huo 高粱秸
车轱辘圆 che1 gu1 lu yuan2 车前
车子 che1 zi 自行车
che3
趁钱 chen4 qian2 有钱
成宿儿 cheng2 xiur3 整夜
吃干饭 chi1 gan2 fen 去世
眵目糊 chi1 mo hu1 眼屎
chou1 扶起来
绸衣裳 chou2 yi2 shang 洗衣服
长虫枕 chuang2 chuang zhen3 一种蝗虫,较为笨拙
长虫 chuang2 chuang2
炊棰 chui1 chui 刷完洗锅用的一种刷子, 多用高粱穗制成
吹嘀喇 chui1 di1 la2 吹唢呐,代指去世
刺挠 ci4 nao
醋心 cu4 xin 胃反酸
撺掇 cuan1 de 怂恿
寸劲儿 cun4 jinr4 碰巧
搓板子 cuo1 ban3 zi 搓衣板
达达熟 da2 da2 shou2 锦葵
大飞蓬 da2 fei2 peng 飞蝗
打瑟 da2 se 弹弹; 打扫; 清理
打岔 da3 cha3 说话不进入主题,绕来绕去
打个卯 da3 ge4 mao3 转悠一下就回来
打水漂儿 da3 shui3 piaor1 浪费了, 糟践了
打嚏hen da3 ti4 hen 打喷嚏
大憋 da4 bie1 大伯
大蛋沟 da4 dan2 gou 尖头蚱蜢
大斗嗡 da4 dou3 weng 天蚕蛾科的幼虫
大馃子 da4 guo3 zi 油条
大胶皮 da4 jiao1 pi2 指相对较大的木制或者铁制畜力车
裤衩儿 da4 ku4 char3 短裤
大熟槿 da4 shou2 jing 蜀葵
大爷 da4 ye 大伯
大月亮地儿 da4 yue4 liang dir4 月光明亮的夜晚
当街 dang1 jie1 大街
当屋 dang1 wu1 堂屋,客厅
担儿挑 danr4 tiao1 小姨子或大姨子的老公
捯饬 dao2 che 打扮, 化妆
刀螂 dao2 lang 螳螂
灯咯 deng1 lo 灯笼
deng4 动词,倒出表层的水
嘀咕 di2 gu 放心不下, 也表示手巧
地了排子 di4 le pai3 zi 鼹鼠
地扑棱 di4 pu1 leng 孔雀草
电棒儿 dian4 bangr4 手电筒
垫波 dian4 bo 吃点东西
电驴子 dian4 lv2 zi 汽油三轮车
ding3 头发旋起儿
顶根儿 ding3 genr 顶针
顶牛儿 ding3 niur2 一种赌博
兜圈子 dou1 quan1 zi 说话不直来直去
逗闷子 dou4 men4 zi 解闷
er楞着 er leng4 zhe 让小孩骑在脖子上
二把刀 er2 ba3 dao 水平较低
二大憋 er2 da4 bie1 二大伯
二胶皮 er2 jiao1 pi2 指相对较大的木制或者铁制畜力车
二青子 er2 qing1 zi 快要成年的男子
二五眼 er2 wu3 yan 水平低
耳残 er3 can2 耳屎
耳朵尖 er3 do jian1 听觉好
耳护儿 er3 hur1 耳包
反酸水儿 fan3 suan1 shuir3 胃酸痛
妨碍 fang2 nei4 有害的人(贬义词),若晚辈人身体较差,老年人身体健康,高寿,不喜欢某老人的晚辈可能会说其为“老妨碍”
妨人 fang2 ren2 克别人
风门子 feng2 men2 子 薄铁做成的堂屋后门
副铁儿 fu4 tier3 蝴蝶
赴席 fu4 xi2 去吃红白喜事的流水席
噶啵 ga1 be 原本黏性的东西干燥后贴在表面
噶Bener ga1 benr 骂人的话,咒人立即死掉
疙瘩噜苏 ga1 de lu1 su 有很多小疙瘩
嘎鱼 ga1 yu2 黄颡鱼
噶的剪 ga2 de jianr2 小型的尖头蚱蜢
ga3 小孩淘气
嘎着窝 ga3 zhe wo1 腋窝
噶呦 ga4 you 磨洋工
改锥 gai3 zhui1 螺丝刀
改儿见 gair3 jian4 再见
干饭 gan2 fan 米饭
赶趟儿 gan3 tangr4 来得及
干啥喈 gan4 sha2 jie 干什么去
干啥 gan4 sha4 干什么
钢镐 gang1 gao3 鹤嘴锄,十字镐
钢笼锅 gang1 long3 guo1 铝锅
肝儿颤 ganr2 chan4 害怕
高粱柴火 gao2 liang chai1 huo 高粱秸
胳肢 ge2 zhe 用手搔弄使人痒而发笑
硌窝儿 ge4 wor 指鸡蛋、 鸭蛋等轻微破损
膈应 ge4 ying 讨厌
虼蚤 ge4 zi 跳蚤
狗蹦子 gou3 beng4 zi 跳蚤
估闷 gu1 men 推测
咕嚷 gu1 reng 蠕动
谷莠子 gu3 you3 zi
瓜秧 gua1 yang1 瓜类的藤
掴的掴的 guai1 de guai1 de 弹弹
关板儿 guan1 banr1 商店停止营业
光棍儿 guang2 gunr4 单身男人
闺妞 gui2 niu 女儿
鬼道 gui3 dou 聪明
鬼指尖 gui3 zhi3 jian 鬼针草
裹乱 guo3 luan4 捣乱, 添乱
寒碜 han2 chan 穿得脏破; 长得难看; 办事不体面
好玩儿 hao2 wanr2 有意思
耗子 hao4 zi 老鼠
好儿去了 haor3 qu4 le 非常好
嗬啉 he2 lin 水干之后,在衣服,被子上形成的印记
蛤蟆蝌子 he2 me ke1 zi 蝌蚪
蛤蟆 he2 mo 青蛙
禾子 he2 zi
黑不溜秋 hei1 be liu1 qiu1 有些黑,且黑得不均匀
黑下 hei1 xie 夜晚
黑鱼 hei3 yu2 乌鳢
hei4 在,表示处所
哼是 heng2 shi4 可能,也许
后门晌儿 hou2 men shangr3 下午
侯晌 hou2 shang 晚上
hu1 用手打扫; 打人
糊弄局儿 hu1 neng jur2 凑合,不牢固的样子
糊鞘 hu2 qiao4 锅上烟熏火燎后留下的黑色块状物
胡数 hu2 shu3 说脏话
胡数溜丢 hu2 shu3 liu2 diu1 说脏话
胡诌白咧 hu2 zhou1 bai2 lie3 没有根据地乱说
花活 hua1 huo2 花招
花秸 hua1 jie1 麦秸
花秸垛 hua1 jie1 duo4 麦秸垛
黄瓜菜 huang2 gua1 cai4 附地菜
花儿郎 huar1 lang 田鼠
hun2 不讲道理
饥荒 ji1 huang 外债
家八 jia1 ba1 麻雀
家雀儿 jia1 qiaor2 麻雀
家贼 jia1 zei2 麻雀
家走 jia1 zou3 回家
家去 jia2 qu4 回家
剪子股 jian3 zi gu3 西伯利亚蓼
江鱼 jiang1 yu2 较大的白鲢或鳙鱼等
浆子 jiang1 zi 豆浆
jiang me zha zi jiang4 me zha3 zi 螽斯
脚丫子 jiao3 ya1 zi
觉着 jiao3 zhe 觉得
叫狗儿 jiao4 gou3 er 蒙古寒蝉
叫驴 jiao4 lv2 公驴
解小手 jie1 xiao2 shour3 小便
解大手 jie2 da4 shour3 大便
疥尕 jie4 ga3 蟾蜍
介个儿 jie4 ger3 自己
蚧蛤蟆 jie4 he2 mo 蟾蜍
妗子 jin4 zi 舅妈、舅母
经哪儿 jing1 nar3 到处
净干 jing2 gan 干净
井拔凉 jing3 ba2 liang2 形容夏天井水温度低
竟大意儿 jing4 da4 yir 故意
今儿个 jinr1 ge 今天
鲫瓜子 ju2 gua2 zi 鲫鱼
开板儿 kai1 banr1 商店开始营业
开气儿 kai2 qir4 上衣或裙子的开口处
坎肩儿 kan3 jianr1 马甲
炕角头 kang4 jiao3 tou 炕靠烟囱的一侧
炕笤帚 kang4 tiao2 zhou 用于清扫炕的短笤帚
炕头儿 kang4 tour2 炕靠灶台的一侧
坎儿 kanr3 指老年人 73、 84 岁
靠边 kao4 bian 躲开
可以 ke2 yi 很好
可以吃 ke2 yi chi1 非常好吃
抠门儿 kou1 menr2 吝啬
苦大麻 ku3 da4 ma2 中华小苦荬
拉虎 la3 hu1 马虎, 毛躁
来和 lai2 hu2 用纸牌赌博
懒龙 lan2 long2 菜龙
烂糊 lan4 hu 做饭时间长把食物做得很软
郎猫 lang2 mao2 公猫
老妗子 lao2 jin4 zi 老舅的妻子
老牛 lao2 niu2 天牛
老豆腐 lao3 dou4 fo 豆腐脑
老囡子 lao3 nan4 zi 老太太
老娘 lao3 niang 接生婆
老丈人 lao3 zhang4 ren 岳父
落道帮子 lao4 dao bang1 zi 游手好闲、 不务正业的人
落落菜 lao4 le cai
螺子 le2 zi 田螺
落生 le4 sheng1 花生
肋叉子 lei4 cha3 zi 肋骨
冷灶 leng3 zao4 搭载室外的灶台
ler beng ler1 beng 骂人耍流氓或不正常
哩个儿楞 li1 ger leng1 耍花招
liao1 快跑
燎稗 liao3 bai4 将仍然新鲜的高粱秸秆的叶子烧掉
lie心 lie1 xin 胃酸痛
列儿个 lier2 ge 或 lier4 ge 昨天
溜达 liu1 de 散步
流脓打水儿 liu2 neng2 da3 shuir3 形容伤口总是不愈合
拢梳 long3 shu 梳子
抹擦抹擦 ma1 ca ma1 ca
蚂蛉 ma1 ling 蜻蜓
蚂蛉菜 ma1 ling cai4 马齿苋
蚂贴 ma1 tie 水蛭
马嘠 ma2 ga2 黑蚱蝉
马蛇子 ma2 she2 zi 蜥蜴
马嘎猴 ma3 ga2 hou2 知了猴
马几了 ma3 ji2 liu 蟪蛄,一种初夏时出现的蝉,提醒较小,翅膀有花纹
骂街 ma4 jie1 说脏话
蚂蚱 ma4 zhe 蝗虫
麦根儿 mai4 genr 小麦秸秆的下半部分
麦穗儿 mai4 suir 麦穗鱼
茅房 mao2 fang 厕所
没臊 mei2 sao4 不知羞
面起儿 mian4 qir3 小苏打
明儿个 mingr2 ge 明天
摩托 mo2 tuo2 摩托车
磨叽 mo4 ji 做事太慢
木锨 mu4 xin 铁锹
拿大顶 na2 da4 ding3 倒立
挨鼻 nai2 bi2 受批评
挨地 nai2 di4 秋后翻地
暖壶 nan2 hu2 暖水瓶
难揍 nan2 zou4
熬鱼 nao1 yu1 炖鱼
熬肉 nao2 rou4 炖肉
nao1 心 nao2 xin1 恶心
脑瓜门儿 nao3 gua menr2 额头
脑应 nao3 ying 恶心
挪骚窝儿 ne2 sao1 wor 满月抱孩子回娘家
那节儿 nei4 jier3 过去
能耐梗 neng2 nei geng3 假充有本领
腻歪人 ni4 wai ren2 让人讨厌
nian4 水坝,河堤
尿尿 niao4 sui1 小便
苶心 nie2 xin 慢脾气,拖拉
女猫儿 nv3 maor2 母猫
爬子 pa3 zi 种公羊
拍子 pai1 zi 柴扉
pao4 说话不算话
屁股蛋子 pi4 huo dan4 zi 臀部
撇了 pie3 le 扔了
pin2 形容一个人话太多, 惹人烦
破不烂吃 po4 bu2 lan4 chi1 形容物件,特别是衣服等很破旧
铺盖 pu2 gai 被褥
铺盖卷儿 pu2 gai juanr3 被褥
起我一边子去 qi3 wo2 yi1 bian1 zi qie 快离开我
起小儿 qi3 xiaor3 从小
qia1
钱串子 qian2 chuan4 zi 蚰蜒
前后眼 qian2 hou4 yan3 预测能力
前门晌儿 qian2 men shangr3 上午
欠儿灯 qianr4 deng1 没事儿找事的人
欠儿灯 qianr4 deng1 闲不住
qie3 客人
青模儿 qing1 mor2 向日葵
亲家 qing4 jia 亲家公
蛐che qu1 che 蚯蚓
蛐蛐儿 qu1 qur 蟋蟀
热乎儿 re4 hur 温暖,关系亲密
人揪菜 ren2 jiu2 cai1 反枝苋
日头 ri2 tou 太阳
肉蕙儿 rou4 hunr4 比小麦穗儿小的黄色小鱼
三马子 san1 ma3 zi 柴油机动三轮车
三马儿车 san1 mar3 che1 柴油机动三轮车
san4 分手,离婚
傻贲儿谷 sha3 benr1 gu2 傻子
晌活 shang2 huo 中午
瘆人 shen4 ren2 令人恐怖
生瓜蛋子 sheng1 gua2 dan4 zi 没成熟的瓜
牲口 sheng1 kou 牲畜
屎褯子 shi3 jie4 zi 尿布
屎壳郎 shi3 ke lang4 蜣螂
屎鹰 shi3 ying1 兀鹫?
shou1
手巴掌 shou3 ba1 zhangr 手套
手镏 shou3 liu4 戒指
手丫子 shou3 ya1 zi
刷利 shua4 li 办事利索
摔盆儿摔碗儿 shuai1 penr2 shuai1 wanr3 砂引草
水窟窿眼儿 shui3 ku2 long yanr2 围墙基部排水的洞
水筲 shui3 shao1 水桶
死气百咧 si3 qie4 bai2 lie1 一根筋的~~非要怎么地
song2 懦弱
酸菜柳 suan2 cai4 liu3 酸模叶蓼
趿拉板 ta1 la1 banr3 拖鞋
天棚儿 tian1 pengr2 为室外灶台搭的遮阳棚
天dou tian2 dou 要下雨的征兆
甜菛 tian2 men 高粱或玉米中的甜杆
铁锨 tie3 xin 打制的中式铁锹
听听 ting1 ting 用鼻子闻
偷不蔫劲儿 tou1 bu nian1 jinr1 悄悄的
秃噜 tu1 lu1 破;退缩;毛衣等开线
土豆 tu3 dour4 马铃薯
土坷垃 tu3 ke2 le 土块
腿阙嘞儿 tui3 que2 ler 大腿和小腿之间的弯曲,膝盖的反面
崴泥了 wai3 ni2 失败了
玩儿闹 wanr2 nao4 流氓、无赖
倭瓜 wo1 gua1 南瓜
五月黑下 wu3 yue4 hei1 xie 除夕夜
五逢六月儿 wu5 feng2 liu4 yuer4 五六月
稀罕 xi1 han 喜欢
习虎鲁子 xi2 hu lu3 zi 壁虎
瞎掰 xia1 bai1 瞎说
瞎日儿日儿 xia1 rir1 rir1 瞎说
先生 xian1 sheng 医生或风水先生
闲len xian2 len 形容爱动手脚,没事找事
馅儿饸子 xianer4 he2 zi 馅儿饼
消停 xiao1 ting 平静
小盒儿 xiao2 her2 铅笔盒
小闺妞儿 xiao3 gui1 niur 小女孩
小热儿 xiao3 rer4 蟪蛄
小三马儿 xiao3 san2 mar3 小型柴油机动三轮车
小手扶 xiao3 shou2 fur2 手扶拖拉机
xie1 动词, 往死里打
歇会儿 xie1 huir3 告诉人要休息,也有希望对方停止说话的意思
歇歇儿 xie1 xie 短暂休息
歇着 xie1 zhe 休息
兄弟 xiong2 dei 弟弟
絮絮叨叨 xu4 xu dao1 dao 啰嗦起来没完
丫头片子 ya1 tou pian4 zi 小姑娘
牙碜 ya2 chen 食物中夹杂着沙子
烟袋蝠 yan2 dai4 fu 蝙蝠
眼尖 yan3 jian1 视力好,洞察力好
眼么前儿 yan3 me2 qianr3 距离很近的,目标比较小的
眼前 yan3 qian2 目前
眼着毛 yan3 zhe mao2 睫毛
眼着眉 yan3 zhe mei2 眉毛
洋灰 yang2 hui1 水泥
洋火 yang2 huo3 火柴
幺蛾子 yao1 ne2 zi 坏主意, 鬼点子
胰子 yi2 zi 肥皂
有把握 you3 ba3 wo 十拿九稳
鱼鳞袋子 yu2 lin2 dai4 zi 塑料编织袋
怨不得 yuan2 bu de 怪不得
院着苗 yuan4 zhe miao2 打碗花
月轮牌儿 yue4 lin4 pair 日历
月儿 yuer4 月亮
糟践 zao2 jin 糟蹋
扎猛子 zha1 meng3 zi 潜水
扎Mu zha1 mur1 潜水
扎蓬棵 zha2 peng ke1 猪毛菜
寨子 zhai4 zi 篱笆
站下 zhan2 xia 住下,留宿客人
搌布 zhan3 bu4 抹布
丈母娘 zhang4 mu niang2 岳母
钊劄子 zhao1 zha2 zi 特指用镐挖出高粱或玉米的根
斟水 zhen1 shui3 倒水
针锥 zhen1 zhui1 纳鞋底用的锥子
知不道 zhi1 bu1 dao2 不知道
指根草儿 zhi1 gen caor3 凤仙花
指尖狗子 zhi3 jin gou3 zi 蒺藜
粥嘎渣儿 zhou1 ga2 zhar 熬粥时锅底结的锅巴
zhou2 脾气倔, 心眼儿死
猪妈妈 zhu1 ma1 ma 地黄
蛛蛛 zhu2 zhu 蜘蛛
抓挠儿 zhua1 naor1 手指向内收缩,抓取状,常用于婴儿
转转莲 zhuan4 zhuan lian2 向日葵
揍不 zou4 bu 就不
做十儿 zou4 shir2 婴儿出生十天的庆祝活动
揍性 zou4 xing 德行 (骂人的话)
zuo1 没事找事儿
嘬瘪子 zuo1 bie3 zi 感到为难
嘬闷 zuo1 men 推测,苦心研究
做水 zuo4 shui 烧水

别有事儿没事儿谈什么基础理论重大创新

​我国基础理论研究做得不够好,主要是因为研究人员受到外界干扰太多,学术研究的思想和技能不能很好地积累和传承。另一方面,学者缺乏对现有理论的深入思考和批判,因此很难实现基础理论上的“重大突破”。

一、 学者的行政化

​部分学者在取得了一定的成绩之后,往往将时间和精力放在对学术帮助不大的行政事务上,无暇进一步开展深入的研究。由于各种学术头衔和帽子当道,而考核需要看论文,研究人员对论文的渴望已经到了白热化的程度。一个人所发表论文越多,影响因子越高,就越有机会获得各种帽子,越有机会兼任各种行政职务,从而获得优厚的待遇。然而各种行政事务,如各种评比、大大小小的会议等极大分散了个人的时间和精力,即使是原本很出色的学者,在经过这样的“行政化”之后,自身的知识、研究能力和学识也很难再进一步增长。已经“行政化”的导师,除了自己的研究很难再深入,还是否有时间认真指导学生?是否还能对基础理论等做深入思考?

​步入二十一世纪之后,知识和技术的更迭周期不断加快。以生态学和进化领域为例,在五年左右的时间,国际学术界关注的问题以及使用的技术手段往往都已经发生重大转变或者升级,十年左右的时间甚至发生一些根本性的技术和思想革命。如第二代测序技术、全基因组的生物信息学分析等,在最近十年内发展极为迅猛。如果不是奋斗在科研一线,一直坚持追踪重要文献,学习新的技能,即使是十分优秀的科学家,知识、技能全方位落伍也是必然的。这是很多已经“行政化”的学者所面临的问题。

二、 一线的科学家

​相比已经主动“行政化”或者被“行政化”的那一部分科研人员,大部分基层科研人员的现状是:理论基础都没有打好,能做修修补补的工作就已经不错了,又何谈对基础理论做重大创新?能否发表高水平研究论文是学术水平的重要指标。不过,大多数科研人员,想要发表英文学术论文时,英文写作还不过关,要找论文编辑公司润色修改,其中滋味,只有自己知道。

​目前,我国发论文的主力军是在读博士、博后和助研,这些研究人员大部分处在相关知识理论技能的学习和积累阶段。他们所做的一般是导师交给的课题,这些课题往往是比较小而具体的问题。绝大部分研究也只能是对现有体系进行修修补补。换句话说,一线科研人员大部分还没有足够的知识和技能的积累,也没有能力做出所谓“基础理论重大创新”。

三、 国外的“基础理论重大突破”

​近年来,国外学者所作出的原创性重大理论突破,也都是奋斗在研究一线的学者,在四十岁以后,仍然坚持深入思考,对现有知识进一步汇总,对旧的理论进行深入梳理和批判之后建立的。能从事这些工作的,往往是学术领域大师或者宗师级别的人物了。以生态学的一些重要理论为例:提出岛屿生态学理论、生态位理论、代谢理论、中性理论的生态学家,在提出相应理论之前就有相当的建树,本身就是十分优秀的学者。提出相应理论时,大多已是人到中年甚至已经步入古稀之年,但是仍然能坚持独立思考。而我们的学者,由于理论和技能常常学习得不够系统,进行理论研究时,常常有力不从心的感觉。由于对生存现状和短期的产出非常担心,大部分还处于中年焦虑状态。

四、 总结

​“基础理论重大创新”重大创新,真的不是一蹴而就的事,需要好奇心的驱使,需要有敏锐的洞察力,需要良好的治学态度、优良的学术传统和学术精神,特别是需要对现有的理论的思想进行深入梳理、批判,再在此基础上建立新的理论。没有对现有的理论进行反思和批判,就不会有创新,更不要谈什么“基础理论重大创新”了。

数据整理中怎样去掉各组的异常值?

假设500人中有男女若干,现要比较饭前(before)和饭后(after)某生理指标的变化。由于数据誊写错误,测量指标中出现了一些异常值(outlier)。 问,如果按照性别以及饭前饭后分组,怎样去掉各组内的异常值?

思路:先定义识别和转换异常值的函数, 将一个向量中的异常值转换为NA。再用dplyr程序包将该函数应用于各组数据。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## 参考 https://stackoverflow.com/questions/49982794/remove-outliers-by-group-in-r
## 对于一个向量x, 先计算其上下四分位数
## 若任何值超过上四分位数的1.5倍,或低于下四分位数的1.5倍,一般认为是异常值
## 下面的函数将异常值转换为NA
remove_outliers <- function(x, na.rm = TRUE, ...) {
qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
H <- 1.5 * IQR(x, na.rm = na.rm)
y <- x
y[x < (qnt[1] - H)] <- NA
y[x > (qnt[2] + H)] <- NA
y
}

## 生成一套随机数据

test_dat <- data.frame(
ID = c(1:500,1:500),
age = rep(sample(18:70, 500, replace = TRUE), 2) ,
gender = gl(2, 500, labels = c("male", "female")),
meal = gl(2, 500, labels = c("before", "after"))[sample(1:1000)],
value = c(c(rnorm(490), rnorm(10)*5), c(rnorm(490), rnorm(10)*5) + 3)
)

head(test_dat)
## ID age gender meal value
## 1 1 25 male after -1.233542780
## 2 2 25 male after -0.003499835
## 3 3 54 male after -0.265865215
## 4 4 24 male after 1.281983039
## 5 5 21 male after -0.114771555
## 6 6 41 male after 0.763784322
ggplot(test_dat, aes(x = gender, y = value, fill = meal)) +
geom_boxplot() +
ggtitle("Original")

img

1
2
3
4
5
6
7
8
test_dat2 <- test_dat %>%
group_by_at(.vars = c("meal", "gender")) %>%
mutate(value_new = case_when(TRUE ~ remove_outliers(value), TRUE ~ value))

ggplot(test_dat2, aes(x = gender, y = value_new, fill = meal)) +
geom_boxplot() +
ggtitle("Outlier Removed")
## Warning: Removed 18 rows containing non-finite values (stat_boxplot).

img

过年

中国人最看重的,就是过年。纵然是离家万里之遥的游子,也都想着回家过年,想着和一家人吃团圆饭。一年的酸甜苦辣,喜怒哀乐,就在这年夜饭里。不过老家宝坻没有吃年夜饭的习俗,过年这天最丰盛的一顿饭是在中午。除夕夜,宝坻俗称“五月黑下”,吃的是素饺子,全家一起守岁。

很多民间习俗的由来很难知晓,也渐渐消失在岁月中,成为回忆。这篇杂文简单记述老家宝坻农村过年的一些习俗。

1.祭祖

三十这天天还没亮,周围已经是爆竹声的海洋。家家户户都要赶在天蒙蒙亮时起来放一挂鞭炮。

然后,由家中的男子,带上烧纸,带着一个装满清水的酒瓶和一挂鞭炮,去坟地拜祭祖先。

不同家族的坟地,分布在村子的不同方位。张家坟地就在村东南头的麦地里,骑车十多分钟就到了。

要拜祭的有几座坟:高祖、曾祖、祖父还有大爷和二爷的坟。坟都只是用泥土堆起来的,坟前没有墓碑,要按照方位和顺序辨认是谁的坟:西北方向的是长辈,同辈的坟当中,东边为兄长。

拜祭开始了。

先用小木棍在坟的东南头画一个圈,开口向南,然后放烧纸。烧纸点着之后,用小木棍不断翻动,小声念叨先祖的尊称,告诉他们今天过年,希望快来“使钱”。之后就见到纸灰打着旋飞上半空。纸烧得越彻底越好,在灰烬熄灭前,用酒瓶里的清水画四分之三个圈,圈口指向坟头。

一般情况,坟只在清明节前填一次,之后农历十月子女会给已故的父母烧寒衣纸,其余大部分时间是无人管的状态。有的坟头已经长满了野草,霜降后干枯。过年这天的祭拜正好可以烧掉坟头的野草。

按照顺序依次给各位先祖烧完纸之后,要挑着点燃的鞭炮,在自家的坟地里,由西北向东南走一下,告诉各位先祖,今天过年了。此时酒瓶里的水也快用完了,没用完的水要倒掉,瓶子扔在坟地,切不可带回家。

拜祭完毕,已经过去了差不多一个小时,等到火已经全部熄灭,就可以回家了。

回到家时,要先在水缸里照一下自己,看有没有“好歹东西”跟来了,确定没有,才能进入屋,这样才能保平安。

2.对联

然后就是贴对子。

对联俗称对子,一般要在午饭前贴好。若上一年家中有人故去,过年时不贴对子。

大门上要贴对联,每层房的门框上也要贴。大门除了贴大对联,还贴门神或贴“福”字;卧室、当屋贴“人口平安”,门外贴“抬头见喜”、“出门见喜”等。

除了人要过年以外,各种家畜、家禽也要过年:牲口棚的柱子上贴“槽头兴旺”;猪圈、鸡窝、狗窝,贴“六畜兴旺”。大车的车辕子上贴“车行万里路,人马保平安”。

对联贴什么词儿的最多?老对联有“天增岁月人增寿,春满乾坤福满门”,现在也有人贴。大门上常贴 “门迎百福,户纳千祥”。我还记得1993年家中贴的一副对联:“五风十雨丰收岁,万紫千红锦绣春”。

现在印刷发达,大部分人都图省事买印的对子,字体以行楷和隶书居多,多为金粉印制。如果要自己写对子,除了要有一定书法功力,也要有一定的中文功底,看似简单,实则比较麻烦,现在很多学校不注重这方面的培养,因此自己写对联的人也越来越少。

贴对子一般用面粉打的糨子。打糨子时水和面的比例要掌握好,稀了糨了都不行,调好后用文火加热,随时搅拌。温度不断升高,糨子越来越粘稠,最后也就成了贴对子的糨子。

3.年集

小年过后,各种年货的价格一天贵过一天,所以除了鱼和新鲜蔬菜,基本上都是提前置办好了。北方天气冷,猪肉、牛肉放院子里冻起来就可以了,一般是放咸菜缸里扣起来,防止动物给偷吃了。

农村集市,平常日子一般是农历三、六、九,或二、五、八是集。七里八村的人们一大早去赶集,上午十点钟以后,人就慢慢少了。

年集则不同,二十五之后,几乎每天都是集。集也可能会延长到下午一两点,卖衣裳的、卖水果的、剌肉的、贩鱼的、卖对子的、卖锅碗瓢盆各种日用品的、卖花椒大料十三香的、卖糕点、卖瓜子块儿糖的、打蛋糕的、卖炮仗的,忙到收钱都收不过来。集市上人潮如织,堵得水泄不通。遇到老熟人,又可能唠起来没玩,交通就更受阻塞了。

年三十这天,就很少有人再去赶集了,即使有,也都早早赶回家吃团圆饭,而且要在十二点钟之前吃。

4.午饭

过年这天,爊肉是一定要有的。选带皮的五花肉,切好后放入冷水烧开,捞出洗净。之后锅内加少许油和绵白糖炒糖色,将肉放入锅中翻炒上色,再加水以及大料、桂皮、草果等各种佐料,大火烧开后用小火慢炖,肉烂之后再放盐以及粉条,再炖15分钟左右就好了。肉还没出锅,已经香气四溢了。

爊鱼也是午饭必需的,象征连年有余,一般做两条,吃一条,留一条。选白鲢、花鲢或鲤鱼,要尽量保持完整,两面煎炸成金黄色之后加水和佐料大火炖熟。爊鱼火要大,有“紧火鱼,慢火肉”的说法。

过年了,大部分人家也都会买只鸡炖了,也可能再准备清蒸螃蟹、红焖大虾、红焖肘子、红烧猪蹄等平日里很少吃的菜肴。

除了大鱼大肉,当然也要有几个青菜。在北方农村,冬天蔬菜供应种类有限,一般只有鲜蘑、豆芽、蚕豆芽、蒜黄、蒜苔、芹菜、豆腐丝儿、胡萝卜、辣子,黑木耳等。常见菜肴为木须肉、炒蒜黄、素什锦、炒鲜蘑、芹菜炒虾仁、蒜薹炒肉、蚕豆瓣炒肉等。

5.放鞭炮

放上一挂鞭炮,就可以吃午饭了。一家人坐一起吃团圆饭后,就换上新衣服。孩子们的重要乐趣就是放鞭炮。

放鞭炮是过年的重头戏,没有了鞭炮,年味就淡了很多。鞭炮有二踢脚、洋鞭、闪光雷、花、钻天猴、龙吐珠、小飞机(一种旋转升空的鞭炮)等种类等多种。

二踢脚在很多年前就禁止燃放了。这是一种能升空的雷子,捻儿很短,所以很急。点着之后,底层火药把雷子打上半空,一般能升到四五十米高,之后在空中爆炸,发出巨大的声响。不过这东西很容易在燃放时倒了,危险系数非常高。

最常见的是洋鞭,小孩儿一般将洋鞭拆下来一个一个放。右手拿着香,用香头点燃药捻儿,然后迅速后撤,随即bang一声响,紧接着是孩子们的欢笑声。

2010年以后,农村的鞭炮种类被小型烟花主导,大多数人家为了显排场,都要购买很多。前几年,大部分家庭更是都要花几百甚至一两千元够买烟花。甚至有个别农户光购买烟花就超过万元,土豪之情真是让人叹服,只是不知道燃放烟花造成的环境污染他们能否也一起负责了。

6. 除夕夜的素饺子

三十这天下午,忙碌了一年的人们终于闲下来了,也可能再在家里再做点儿家务,然后四五点钟就开始准备晚饭。晚饭非常简单,只是素的白菜水饺。据说这跟信佛有关:一年当中最后一顿吃素,为的是避免给其他生灵造成痛苦,一方面体现了对众生的慈悲之心,另一方面也保佑全家平安。水饺不能包太大,特别是不能煮破了,据说这顿饺子煮破了是不吉利的。开锅后水饺漂起来,煮饺子的人要看看是饺子向上有多少个,向下有多少个,如果凹面向下的多,就是“车” 多,向上就是“船” 多。“船” 多预示明年可能会发大水,要提早祈福。吃过这顿水饺,全家人一起守岁。

7.灯火通明

按照习俗,除夕夜所有的房间都要亮灯,防止有什么好歹东西躲在屋里。由于除夕当晚电负荷太大,村里电网显得功率不足,有时候电视和管灯都带不起来,灯泡也变得特别昏暗。一百瓦的灯泡,除夕夜感觉也只有十五瓦了。除夕夜的饺子就在这昏暗的灯光下包起来的。

8.灯笼

除了各房间要亮灯,最好在大门口也挂上灯笼。

过去,一般是自己家糊上纸灯笼,天黑之前挂到门外了。自己糊的灯笼并不一定是红色的,而是用薄而坚韧,透光良好的一种硫酸纸糊的,上面贴上红纸剪好的金鱼、花朵、喜字等。灯笼里面放的是真的蜡烛,不是灯泡。

手糊的灯笼有两种比较常见,一种称为“大火球”,是用六条竹篾,分别做成六个正八角形,扎在一起,形成一个由三角形和正方形组成的多面体,颇为美观。还有一种是用铁丝编成的,外形是个直筒,也能很好拢风,防止蜡烛被吹灭了。大门口东边,一米多高的地方挂一站这样的灯笼,照亮门口的路。孩子们喜欢围着灯笼看,此时,蜡烛的光照亮了孩子清纯而稚嫩的笑脸,映出安静祥和的节日气息。灯笼要从年二十九挂到初五晚上。

9.正门大敞四开

在农村,平常日子,天黑之前就关门闭户了,而除夕当晚,所有人家都要敞开正门,欢迎邻居亲友来串门。据说在过去,全家族的人都要在除夕夜去长子家等着给祖先磕头,拜家谱。这个习俗在文革开始后就没有了,因为家谱在那时候毁了。现在,大多数村民其实并不知道自己的祖先是从哪里迁徙而来,何时定居在此,又经历多少年月,多少世代,才有了现在的自己。对大多数人来说,高祖之上,姓名都已消逝在幽远的岁月中,何谈他们的故事,何谈家族史呢?

虽然现在除夕当晚都不用给祖先磕头了,但是门还是要大敞四开。有些人家在从大门到屋门之间放芝麻秸,踩上去的声音很清脆,取“芝麻开花节节高”之意。如果有客人串门,芝麻秸也能告诉主人有人来了。

10. 压岁钱

吃完饺子,是父母给孩子压岁钱的时间。压岁钱一般是用红纸包好,给孩子拿好,孩子睡了就放枕头底下。俗话说,小孩儿盼过年,老人怕过年。小孩子都盼着自己快快长大,过年的时候还有各种好吃的,各种好玩儿的,穿新衣,戴新帽,何其美哉?然而大人又都知道,童年才是一个人最纯真,最可爱,也许也是最幸福的年龄,那是真正的无忧无虑,心无挂碍。压岁钱也许是希望孩子不要长大,一直那么天真快乐。

11.冻柿子

给了压岁钱,也许就是一家人一起看春节联欢晚会直播,再有很有意思的一个民俗就是吃冻柿子,一定要用已经熟透,并且非常软的磨盘柿。这种柿子之前保存在室外,冻得很硬。吃的时候,先洗好后放入碗内。加上凉水,柿子外面就形成一层冰,箍在柿子外面,而柿子本身也逐渐变软。吃的时候上面开一个小口, 将已经软烂成糊状的果肉吸到嘴里。而柿子里面的“舌头”,别有口感。

12. 新年倒计时

午夜十二点是新年倒计时的时间,此时外面的爆竹声已经沸腾。新的一年,一定要从红红火火开始。然而也有一种说法,叫“天不亮就是今个”,天亮了才是第二天开始。这样看来,也许大年初一,真的应该从第二天的黎明开始吧。

R软件制作甘特图

注意的问题

  1. 日期月份不足两位数的,要用0补齐,否则不能正常处理
  2. 目前日期不知道怎样转换为中文,默认情况下时间轴为week,可以用下述方法转换为月-日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
library(DiagrammeR)
library(htmltools)

figure2 <- mermaid('gantt
title 2019年本科毕业实习研究计划
section 开题
搜集资料 :done, 2018-12-28, 2019-01-10
准备开题报告 :active, 2019-01-14, 2019-01-30
开题报告 :crit, 2019-02-05, 2019-02-15
section 中期考核
准备中期报告 :2019-02-16, 2019-03-13
中期考核 :2019-03-14, 2019-03-15
section 数据和分析
采集数据 :crit, 2019-03-15, 2019-04-01
数据分析与制作图表 :2019-04-02, 2019-04-15
section 论文撰写
论文初稿 :2019-04-15, 2019-05-20
论文定稿 :crit, 2019-05-21, 2019-06-01
section 外审
论文外审,准备答辩 :crit, 2019-05-21, 2019-06-14
section 答辩
答辩 :crit, 2019-06-15, 2019-06-20
')

figure2
1
2
3
4
5
6
7
8
9
10
figure2$x$config = list(ganttConfig = list(
axisFormatter = list(list(
"%b-%d" # date format to return; see d3 time formatting
,
htmlwidgets::JS(
'function(d){ return d.getDay() == 1 }' # filter for Mondays or day of week = 1
)
))
))
figure2

群落系统发育分析常见问题合集

PDF:群落系统发育常见问题合集 张金龙.pdf

R Markdown 源代码 https://github.com/helixcn/comphylo_faq

入门

群落系统发育入门资料

提问

能不能介绍些phylogenetic方面的入门资料及其在生态学方面的应用呢?

回复

系统发育分析入门最好的教材,我觉得是 The phylogenetic handbook。

另外,我觉得先学习几个软件的基本操作流程,并且从建树的原理结合学起从CLUSTAL, MUSCLE、Phylip,PAUP*, MrBayes, RAxML, BEAST, r8s等各种软件,都需要认真阅读使用手册。 Bodega Phylo Wiki也是一个理想的去处。

Phylogenetic structure等内容的理解,还需要结合文献,同时认真学习Phylocom或者picante等软件的说明书。

我的网页上也链接了一些资源,http://jinlongzhang.weebly.com/resources.html 这些幻灯片和软件操作指南都是可以下载的。

怎样学习系统发育软件?

提问

对于怎么入手去学习谱系软件,你有什么好的建议吗?

回复

学习系统发育分析,一定要先把R软件学好,特别是ape程序包和picante程序包,弄清楚随机化检验的原理及实现方法,同时要学习Phylocom软件。 只要按步骤操作就可以了。但是这些只是技术手段,都是比较容易实现的。真正决定研究水平的,是研究所解决的问题,如检验假说,这就需要阅读大量的文献。

建议学习Nathan Swenson, Steve Kembel, Camb Webb, Mac Cadotte等人的论文,从理论上进一步提高。

进化树枝长的意义

提问

http://evolution.berkeley.edu/evolibrary/article/phylogenetics_02 中说系统发育分析中,节点表示共同祖先,枝长表示改变了的性状的数量(进化速率?)?

那么,如果要比较两个物种的出现早晚,就比较它们到共同祖先的枝长就可以了?

如果其中一个物种到共同祖先之间的节点数比另一个物种多,只能说明在它这条分枝上保存下来的物种比较多,而不能说明它这条分枝的进化速率比较快?

回复

物种到共同祖先的时间是一致的。而不同类型的进化树, 其枝长的意义是不同的。

Phylogram中有一类, 是Chronogram, Chronogram的枝长就是表示时间, 经过分子钟校订之后的进化树, 都是Chronogram。Phylogram还包括, 简约法获得的进化树, 这里的枝长, 表示变化了的为点数。极大似然法获得的进化树中,枝长表示碱基突变的概率。所以不能光看枝长, 首先要了解是怎样获得的进化树。

为什么NRI/NTI的临界值是2, 而Pwd和Dnn的临界值是0?

提问

近日研究进化多样性,看到一篇文献Stochastic and deterministic assembly processes in subsurface microbial communities。文中讲到NRI临界值的判断方法,for single community,临界值是2;across all communities,临界值是0。实在想不通single community和all communities的区别,为什么single community下临界值是2,为什么all communities下是0.

我的理解是:

single community时候,null model随机抽样的样本不等于总体;样本不等于总体的时候抽样结果需要进行参数估计,此时抽样结果可以表示为 mean±t*sd。所以如果想在95%的confidence下,对结果进行判断,此时t对应正态分布界值表中的1.96。all communities的时候,null model随机抽样的样本等于总体;不需要进行参数估计。我的理解很牵强,是从数字上推断的,手头也没有找到关于null model更详细的资料。

回复

我觉得您的理解是正确的, 一般认为NRI或者NTI大于1.96或者小于-1.96的结果, 在95%的水平是显著的。 这是因为计算NRI或者NTI都是Standard effective Size的变型。 两者都是基于多次随机化的群落或者进化树计算的。 随机样本量很大的情况下, MPD或者MNTD的分布会接近正态分布。 所以文中作者所言接近于2, 应该是接近1.96, 才是正确的。 across all communities,临界值是0,可能是指系统发育距离距离或者发散的趋势, 与上文的NRI或者NTI是否显著为不同的东西。

NRI和NTI与0的关系

提问

我计算了NRI和NTI指数,是否可以以0作为标准:大于0,谱系聚集;小于0,谱系发散?

回复

可以这么说的, 以正负作为标准, 只能说有聚集或者发散的趋势,但不能提供显著水平。

Phylomatic

用Phylomatic建树的时候,需要检查植物是否是异名吗?

提问

最近读了你的科学网安装了最新版本plantlist包,生成科/属/种列表,并用status函数逐一查验学名是否接受,不接受者重新查其学名更正直至status状态为accepted 或者synonym(synonym也是接受的意思对吗?)。做完这些工作后用Phylocom的bladj模块为进化树拟合枝长,问题出现在每次生成的out.tre文件无法打开,显示“Cannot open phylogeny file”,用Figtree也打不开。是因为我的物种学名依旧有问题,还是其它原因呢?我也选取部分物种来重复同样步骤却也一样的out.tre文件无法打开。

回复

请参考下面的意见。

现在通过Phylomatic可以直接生成有枝长的进化树, 无需再用BLADJ。我帮你建好了进化树,但是有两个分类单元没有找到:

1
[NOTE: 2 taxa not matched: Pinaceae/Abies/Abies_chensiensis, Pinaceae/Larix/Larix_principis-rupprechtii, ];

有几点需要留意:

  1. 物种名在数据分析阶段不要包括命名人
  2. synonym是异名, 是分类学上不获接受的名称。 不过这是The Plant List网站给出的意见, 只代表某种观点, 不能认为《北京植物志》或者《河北植物志》等地方植物志给出的结果是错误的。 当然, 对于拼写有错误的学名, 是必须要检查出来并改正的。 status的结果只表示该学名是否接受,以便检查拼写。
  3. 在获得taxa_table.txt的科属种名单之后, 用Phylomatic建立进化树时, 应该选用Zanne 2014的进化树作为骨架

应该尽量用Phylomatic生成有枝长的树

提问

现在正在作种子大小进化这一块的研究工作,要用到Phylocom这个软件,但是在使用BLADJ计算进化枝长时,系统总是提示”“0x00423382”指令引用的”0x0136812”内存,该内存不能为read”,不知道问题出在哪里,请给予帮助,万分感谢!!!

回复

您遇到的情况是Phylocom自身的问题,目前也没有很好的解决方法。如果在进化树中有非ASCII字符,以及枝长中出现科学计数法,Phylocom会自动停止工作。当然,还存在很多意想不到的情况。建议不要再使用BLADJ以及WIKSTROEM的分化时间,而是用Phylomatic直接在线生成有枝长的进化树。

方法如下:

  1. 打开 http://phylodiversity.net/Phylomatic/
  2. 将 科属种列表 拷贝到 taxa = 框中
  3. storedtree = 选择 Zanne 2014
  4. 勾选 clean = TRUE, 其余选择默认.
  5. 点击Sent 按钮

稍等片刻, 将网页中的输出结果拷贝到文本文件中, 并另存为 phylo文件。注意, 该phylo文件不能有任何扩展名。该进化树为Newick格式,不含Singletons, 因此可以用R的ape读取或者用Figtree软件绘图。

我在博客中也进行了相应的更新 http://blog.sciencenet.cn/blog-255662-335503.html

怎样获得Ultrametric树?

提问

对 Ultrametric tree插入类群的话,除了用Phylocom还有什么其它方法吗。这棵 Ultrametric tree我们已经获得了相应的时间树,已知年龄的节点很多,在用BLDJ前准备的age文件我觉得不太好准备,还是有什么简单的方法?另外,我不确定这样是不是改变了原来已有类群的枝长(Phylocom我还不是很熟,对这点有疑问),而我们想保持树上原来有的类群枝长不变。非常感谢~

回复

这种情况我觉得直接编辑进化树比较好, 可以参考 http://treegraph.bioinfweb.info/Help/wiki/Inserting_nodes

Phylomatic适于基于科属种名录以及现有的backbone获得进化树。 在2011年时, 我用Webb提供的Davies科级进化树作为骨架, 获得过种等级的进化树。 Phylomatic有本地版本的, 如果将已经获得的属级进化树内部做上足够的标记, 相信它是可以帮忙做出进化树来的。

建树时物种名不要含有命名人

提问

正在学习您的博文“用Phylomatic和Phylocom进行群落系统进化分析(20160105)”,遇到两个问题,请教一下:

  1. 对数据phylo.txt,在使用Phylomatic建树,网页出现下面提示:
1
Server error!The server encountered an internal error and was unable to complete your request.Error message: End of script output before headers: pmwsIf you think this is a server error, please contact the webmaster.

2.对数据res.sp.smt.txt,读树时,出现下面错误:

1
> tree.jgs <- read.tree("phylo.txt")Error in read.tree("phylo.txt") : The tree has apparently singleton node(s): cannot read tree file.Reading Newick file aborted at tree no. 1

回复

您的进化树中物种名含有很多空格,而且物种名还包含命名人, 这在R读取中会遇到困难。 在提交物种名单到Phylomatic时,就应该保证学名只包括英文字母以及“_”, 不要包含任何其他的字符,否则即便生成了进化树, 在R或者其他进化树处理软件中,后续数据分析会很困难。 特别是命名人中还有英文括号, 例如 Padus_racemosa_(Lam._)_Gilib., Swida_macrophylla_(Wall.)_Soj¨¢k 等, 会影响进化树的读取。英文括号在newick文件中是用来定义进化树拓扑结构相关的,所以物种名中不要包含括号。

为什么要用Zanne2014进化树骨架?

提问

我最近正在学习您的 “用Phylomatic和Phylocom进行群落系统进化分析(20160105)”

枝长(即所谓的年龄长吗?)是一个相对值吗(因为我发现同一物种在不同物种组合中结果不同)?

回复

Zanne 2014是目前基于分子序列的最完整的进化树, 所包含的科属种也是最多的,选择该进化树拟合枝长,结果会更可靠一些。

为什么用Phylomatic建树要选择 CLEAN?

提问

请问为何要这样设置Phylomatic “storedtree = 选择 Zanne 2014;clean = TRUE, 其余选择默认.”最后输出的结果,数值代表什么?

回复

选择clean = TRUE, 是因为Phylomatic在数据处理时, 如果选择默认, 会在某一个科下面, 多增加很多层括号, 而这种多层次的括号, 在newick格式的进化树中是不允许的, 因为newick格式规定, 每一个分类单元分化成两个或者多个子代时, 才增加一层括号, 如果没有分化, 则不应该增加一层括号.Phylomatic增加很多层括号, 是为了Phylomatic拟合时间方便, 但是这样就不可避免了引入了很多孤立的分类单元. 这种分类单元称为singletons, 在APE以及Figtree等软件都不能处理. 所以为了能让进化树在R中处理, 还是要选择clean,去掉那些多余的括号, 以免singletons出现.

Phylomatic生成进化树的枝长

提问

Phylomatic生成进化树的枝长是什么意思?

回复

输出的枝长, 就是该分类单元的持续时间, 单位是百万年.同一个种的年龄应该是一致的, 当然, 受到物种名录的影响, 进化树的拓扑结构可能不同, 这就造成种的年龄在不同的物种名录中出现不同的结果.

为什么用Phylomatic建树, 有些属名会消失?

提问

我在用Phylomatic建属级水平的树(taxa里格式:family\genus)用zanne2014与R20120829都能成功,但是发现有些属丢失了(Ficus、Alnus等,taxa里是有的),为什么出现这种情况?按理来说匹配不上应该会报错。是不是我的建树方法不对,taxa里必须是:family\genus\species的格式?如何获得属级水平的树(树的tip为属)?

回复

属一级的进化树, 其实是每一个属选择一个种, 而不建议科属种名单只到属的水平。如果用科属种的名单再有一些种丢失,仍然应该是Phylomatic内部的bug。 相关的bug可以告诉Cam Webb, 网址是 https://github.com/camwebb

为什么用Phylomatic建树,有些科的植物会找不到?

提问

我看您输出的进化树后面有7个taxa无法匹配,是否是因为APG Ⅲ里面还没将这些科分开(当然里面有5个是棕榈科,是否APG Ⅲ不含单子叶的?)还是科名与APG Ⅲ里的不匹配,虽然这些科名是从The Plant List获取的?之前听植物所刘冰博士介绍APG Ⅲ已经将科之间的关系已经区分清楚了,我比较纳闷怎么还有双子叶科(例如其中的五桠果科)不能匹配?

回复

棕榈科的名称有两个Palmae 和 Arecaceae

1
Palmae= ArecaceaeGramineae= PoaceaeLeguminosae= FabaceaeGuttiferae= ClusiaceaeCruciferae= BrassicaceaeLabiatae= LamiaceaeCompositae= AsteraceaeUmbelliferae= Apiaceae

我在校对plantlist程序包时, 已经将Palmae改为 Arecaceae, 但是如果Phylomatic网站所存储的Zanne2014进化树中用的是Palmae这个科名, 就会出现不匹配的情况。此时可以尝试更改科名为 Palmae。

若Zanne2014的进化树中, 不包含Dilleniaceae, 或者Dilleniaceae的名称拼写错误, 也会出现不匹配的情况. 因为涉及到网站编程, 如awk语言等, 我也不是很清楚。

Phylomatic只用科名可以建立进化树吗?

提问

我最近正在使用 Phylocom和Phylomatic进行群落系统进化分析,在进行分析的过程中出现一个问题,举例说明如下:物种名录(已通过R package (plantlist)进行科属的查询):

1
Salicaceae/Ahernia/Ahernia_glandulosaBegoniaceae/Begonia/Begonia_cathayanaPentaphylacaceae/Adinandra/Adinandra_epunctataMyrtaceae/Decaspermum/Decaspermum_gracilentum

然后只将科名放入Phylomatic建树得到结果如下:

1
((((((((((((((((((((((((((begoniaceae)))))cucurbitales))),((((((salicaceae))))malpighiales))celastrales_to_malpighiales))fabids))rosids),(((((((((pentaphylacaceae))))ericales)ericales_to_asterales)asterids)))))core_eudicots)trochodendrales_to_asterales)sabiales_to_asterales)eudicots)ceratophyllales_and_eudicots)poales_to_asterales)magnoliales_to_asterales)austrobaileyales_to_asterales)nymphaeales_to_asterales)angiosperms)seedplants)euphyllophyte;

再使用Phylocom软件用bladj为进化树拟合枝长,得到进化树如下:

(图从略)

结果仅显示了三个科的进化树,还有一个科(Myrtaceae)在树种并未显示。我所分析的全部数据总共有187个科,其中有12科为在进化树中显示。请问出现这样的结果是我的操作上出现了问题,还是Phylomatic系统中就没有这些未显示科的信息。我应该怎么处理这个问题?

回复

Phylomatic是用来建立种一级的进化树的, 不能用来建立科等级的进化树。 必须将 Salicaceae/Ahernia/Ahernia_glandulosa 这个文件提交到Phylomatic。

Phylomatic进化树的枝长可以到种吗?网上有带枝长的进化树吗?

提问

  1. Phlocom中的进化枝长可以到种么?还是只能到属,还是只有部分能到属?
  2. 网上能找到带枝长的megatree或其newick文件么?只有某个科的也可以,比如菊科、禾本科和豆科的。

回复

  1. Phylocom的进化枝长只是精确到科,每个种的分化时间在科以下三等分。为此我做了一个图, 表示在种水平以及属水平,Phylomatic和Phylocom的BLADJ是如何处理的。
  2. 网上是可以找到带枝长的进化树的, 例如 https://github.com/camwebb/Phylomatic-ws/tree/master/data

种以下分类单元,如亚种和变种,在Phylomatic中应该如何处理?

提问

种以下分类单元,如亚种和变种,在Phylomatic中应该如何处理?

回复

最后一个问题, 亚种和变种,可以考虑合并为一个种, 也可以考虑作为一个独立的分类单元对待。 但是在材料与方法这部分一定要明确说明。说清楚的情况下,审稿人一般不会太刁难。

Phylomatic能用于动物系统发育结构分析吗?

提问

你上次介绍的Phylomatic是致力于解决植物系统的进化问题,似乎没有涉及到动物系统。我想问下你如果要根据现有的形态或者说是分类系统建一个无枝长的系统树是不是只能有手输入的比较笨的办法?是否还有什么比较好的办法?

还有Phylocom主要是利用bladj模块对建好的树进行一个赋值,建一个有值的树,我想问的是那个模块是不是就是指那个wikstrom.ages文件,利用那个文件中的数据对我们的树进行赋值,还是如果我们需要进行对动物的系统树的建立必须自己先建立一个赋值文件,然后进行树的赋值?如果是那样的话,那个赋值文件时怎么设置的呢??

回复

Phylomatic是权宜之计,因为植物测序的还比较少。正常情况下是应该用DNA序列建立进化树的。Phylocom程序包中有一个单机版的Phylomatic,似乎提供相应的进化树框架就可以了。

动物的进化树框架,我目前也不清楚用什么版本,但是用分子的方法是肯定的。相信国际上已经有相应的各主要动物类群的进化树,可以搜索一下看看。因为我自己不研究动物,真的没有很好的解决办法。

我想最好的方案,就是下载各序列,比对好后拼接在一起。之后,用MrBayes或BEAST者PHYML或者RAxML建立进化树,再对进化树进行校对,如NPRS改正等。这样的出来的进化树,用在任何分析,也不会有人提出过多的质疑了。

您提高的时间赋值文件, 请参考wikstrom.ages文件的格式,但是实现起来应该不是特别简单, 涉及到很多编辑工作,具体建议问一下Cam Webb。

Phylomatic的进化树能包括蕨类植物和裸子植物吗?

提问

文献只提及用Phylocom的bladj结合wikstrom的分化时间建树,2001年的文章,我也看了您所做报告PPT中建树方法的介绍,但是我还是没有搞清楚,想请教您一下:

  1. 建树前应准备的数据(是不是需要节点的顺序和节点的进化时间),用什么算法,在什么软件中进行?我后续的工作想进行phylogenetic independent contrast、 partial mantel tests 和PCA分析,对生成的树有什么要求?
  2. Phylomatic中不能匹配的物种和裸子、蕨类植物怎么一同建立在进化树中?

回复

Phylocom的BLADJ校订时间, 用的是Wikstrom的年龄, 这个文件在Phylocom软件的发行版中是有的。

PIC对进化树没有过多的要求, 如果用Phylocom进行PIC, 则执行的是Garland等人提出的方法, 对结果进行了一定的修正。Partial mantel test需要的是距离矩阵, 记得用vegan或者 ade4 程序包, 可以做。

Phylomatic提供的进化树的backbone,是有花植物的, 对于其他植物没有很好的办法,除非提供有效的Backbone,否则是难以整合的。此外, 由于蕨类等和被子植物很早就区分开了, 它们的枝长很长, 对结果的影响可能会很大, 这是需要注意的。

科属种等级的进化树应该怎样用Phylomatic建立?枝长应该怎样提取?

提问

  1. Phylomatic要求的输入格式是family/genus/species,但是如果只输入family也能生成Newick格式的进化树,这两个有什么不一样啊?
  2. 有些植物虽然是被子植物为什么不能匹配,最后输出的Newick中没有该物种(family/genus/species输入)或者该科(仅family输入)?
  3. 我现在提取枝长是通过修改txt文件中的格式,再导入excel得到枝长,在R中提取枝长的函数是什么?

回复

Phylomatic要求的输入格式是family/genus/species,但是如果只输入family也能生成Newick格式的进化树,这两个有什么不一样啊?

Phylomatic要求输入family/genus/species格式的名录,生成的是物种等级的进化树。若只提供family,也能生成进化树,但可能只是科节点的进化树。

有些植物虽然是被子植物为什么不能匹配,最后输出的Newick中没有该物种(family/genus/species输入)或者该科(仅family输入)?

被子植物的科名,有若干通用名,包括:

1
Palmae= ArecaceaeGramineae= PoaceaeLeguminosae= FabaceaeGuttiferae= ClusiaceaeCruciferae= BrassicaceaeLabiatae= LamiaceaeCompositae= AsteraceaeUmbelliferae= Apiaceae

若所属物种是上述几个科的, 可能存在名称不匹配的情况, 则请换成Phylomatic能识别的科名。部分科,如葡萄科,目前的版本,由于Zanne2014进化树的限制,还不能识别。暂时没有更好的办法。

我现在提取枝长是通过修改txt文件中的格式,再导入excel得到枝长,在R中提取枝长的函数是什么?

如果是用read.tree生成的phylo文件, 则枝长为phylo文件的edge。

为什么有些物种Phylomatic不能识别?

提问

根据您的文章《用Phylomatic 和Phylocom进行群落系统进化分析》提供的方法做了一个系统进化树,但是在做的过程中,发现有一个物种(Allium polyrhizum )无法识别,这种情况应该怎么处理呢?

回复

Phylomatic 软件在建立进化树的时候,识别物种主要是看其所在的科Family的,因此提供一个包含科属种的taxa table就可以了。 taxa table是 family/genus/species的格式,用向右的斜线隔开。Allium polyrhizum 这个种,按照APGIII系统应该放在 Amaryllidaceae (参见http://www.theplantlist.org/browse/A/Amaryllidaceae/), 该网站可以查询某一个属所在的科, 按照要求填写好taxa table即可。

Phylomatic是否能建立只包含科名的进化树?

提问

  1. 我只需要建立科级水平的系统发育树,那我是否可以只在Phylomatic里输入科名(APG科/我的植物科)?还是我应该每个科选取一个代表种,然后用科/属/种的格式输入Phylomatic?
  2. 我的数据是51个科的植物,但是建树时我发现输出的系统发育树中只有50个科,禾本科 (Poaceae)不在树中,请问这是什么原因?我应该如何解决呢?

回复

如果用Phylomatic建立进化树, 物种名是什么都可以,因为它只是一个标签。 建议是每个科选取一个代表种, 然后按照 科/属/种 的方式建树即可。

我不太清楚你的建树的物种列表是怎样的, 所以不好做出推断。 所有的科名,都应该是 apgiii系统的接受名, 而 Poaceae是没有问题的。

为什么Phylomatic软件中有些植物的科名不匹配?

提问

我将名录用在线Phylomatic计算后,返回的结果中有些物种not matched。这些植物都是经过你的plantlist软件包检测的,我用在线工具plantminer也是可以查询到并显示Accepted的。我发现这些 not matched物种全部是葡萄科植物。另外,我在您微博中的读者留言区也看到有人也遇到这种问题,其中提到的崖爬藤也属于葡萄科。难道葡萄科都有问题?不知道为什么会这样,想听听您的建议。

匹配不了的物种名如下:

1
Parthenocissus dalzieliiVitis pseudoreticulataAmpelopsis glandulosaCayratia japonica

回复

Phylomatic并不检测物种名是否为接受命, 它只根据科名(部分属也许参考属名,请参考最新的Phylomatic文档)来建立进化树。我之前也遇到葡萄科植物不能匹配的情况,这应该是Phylocom网站本身的问题。具体我觉得还是要咨询Cam Webb博士。 好像棕榈科也是不能匹配的。

Phylomatic能够为哪些种建立进化树?

提问

我还有几个弱弱的问题想请教一下:

  • 第一,既然Phylocom软件只能构建被子植物的谱系树,那么像冷杉群落,建群种冷杉是裸子植物,如果不计算它与其他物种之间的亲缘关系,那么做这个有何意义?
  • 第二,为什么不删除裸子植物,在Phylomatic软件中也可以生成谱系树?而且Phylocom软件也可以生成带枝长的谱系树?这是怎么回事?
  • 第三,在sample_data下的sample文件中的各列代表的含义具体指什么?第一列是样方名称,那么样方指的是11、55、2020等样方么?第二列是个体数,指的是前面11等样方中的所有个体数么?第三列是物种数,那么sp1是指样方1中的一个物种么?要是有很多个物种呢?比如clump2a,2,sp10具体指什么?

回复

  • 第一个问题:能否计算冷杉与其他物种的亲缘关系, 取决于是否有数据。 也就是冷杉和群落内其他植物的分化时间。冷杉群落,冷杉当然是必须要考虑的。

  • 第二个问题: 最初,Phylomatic不能生成有枝长的进化树,只能生成无枝长的拓扑结构,然后用Phylocom 的 BLADJ拟合枝长。后来Phylomatic进行了升级,如果Backbone 进化树中, 有裸子植物, 那么就能用Phylomatic生成系统树。

  • 第三个问题: 请参阅 Phylocom的说明书。

    • 第一列为样方名称 clump2a
    • 第二列为个体数,也就是有2个个体
    • 第三列为物种名 sp10

一个样方中有很多个物种,则样方名重复, 对应的物种名增加即可。 也就是用不同的行表示。

Phylomatic建的进化树有什么问题?

提问

之前,我用Zanne 2014版本的数据生成了带有枝长的谱系树,但是文章投出去之后,有个审稿人觉得这个树错误很多,建议我换一种谱系树重建,于是我改用原来的R20120829重建,但是将准备好的物种名录输入网页版,生成不带枝长的谱系树时,这个谱系树的结尾没有seedplants,于是后续在cmd > cd C:\Phylocom运行中也有问题。请问这个问题在哪呢?

回复

如果进化树中所涉及的分类单元不太多(3000之内), 而且大部分都有DNA条形码, 那么请尽量建立分子系统树 (参见 http://blog.sciencenet.cn/blog-255662-306430.html)。

Zanne的进化树是目前所知包含植物物种数最多的分子系统树。其中当然可能会有不少错误, 但是哪里错了, 最好能指出来。错误的序列, 无论是由于物种鉴定造成的错误,还是由于后续的数据处理等造成的错误, 都是对最终的系统树的拓扑结构有影响的, 但是究竟影响有多少,有很多不确定性, 是很难回答的问题。 这主要是由于建立进化树的软件,都是基于数值方法计算似然函数的最小值的。

越是年代久远的进化树, 准确性就越低, 信息缺失也是越多。R20120829 这个系统树 (参见 https://github.com/camwebb/tree-of-trees/blob/master/megatrees/R20120829.new)只有植物科水平的系统发育拓扑关系, 没有枝长, 其内部节点的分化时间需要用Phylocom的BLADJ算法拟合。 这样一来,科以下的系统发育关系就没有了。损失的信息更多,结果可能更不准确。从这点来看, 审稿人可能更不满意。

Markus Gastauer整理了R20120829这棵进化树 ,为其添加了一些内部节点的名称, 以便在Phylomatic的时候能够更好地控制时间 (https://www.ncbi.nlm.nih.gov/pubmed/27097100)。Gastauer标注后的进化树,Cam Webb已经在他的github页面公布了 (https://github.com/camwebb/tree-of-trees/blob/master/megatrees/R20160415.new)。 不过新的进化树仍然没有seedplants这个节点。所以如果真的要使用R20120829 ,不妨试试R20160415.new这个改进版本, 然后再手工编辑一下, 添加seedplants节点, 再用BLADJ拟合时间。

Phylomatic对物种数有什么限制?

提问

我现在想请教一下,附件是XX样地的物种名录,我copy 到http://phylodiversity.net/Phylomatic/以后,总是不能返回正常结果(The gateway did not receive a timely response from the upstream server or application.)。经过检查和比较,我发现当拷进去360个左右的物种名时,就能正常返回结果。而总的物种名是390,遇到这种情况应该怎么处理?能不能先生产两个tree再进行合并?望指教。

同时,我看见你在1月5日对你博客中对Phylomatic建树方法进行了更新,在文章中还需要特别指出么?谢谢

回复

我将物种名单拷贝到Phylomatic上, 也出现了你所述的问题,我觉得可能是服务器有一些限制。可以考虑用R的brranching包(https://cran.r-project.org/package=brranching),或者用S.Phylomaker(https://github.com/jinyizju/S.PhyloMaker)试试。

Phylomatic建树分类单元数太多怎么办?

提问

我目前针对中国常绿阔叶木本植物进行研究,物种数有6266种,想尝试建立这些物种的系统发育树。但是:

  1. 在使用Phylomatic时,由于物种数太多,Phylomatic显示“Trees/taxa lists over 200kB must be passed by URL”。请问这个问题应该如何解决?
  2. 我搜到“brranching”这个R程序包,应该可以处理大批量物种数据,但是“Phylomatic”这个命令只能处理小于5000的物种;而“Phylomatic_local”这个命令,在计算时需要安装命令行工具“awk”和“gawk”,但我不知道如何安装“awk”和“gawk”。不知道您对这个程序包是否有所了解?

回复

我之前建过比较大的进化树约16000个分类单元,是用Davies的科系统关系,用Phylomatic的本地版本创建的 (Phylocom软件所自带的Phylomatic.exe).

Phylomatic在线版本的限制比较多,对于分类单元的限制,目前我没有很好的解决办法。 Phylomatic的源代码托管在github上, https://github.com/camwebb/Phylomatic-ws 其中 \Phylomatic-ws-master\lib 下面的文件, 就是gwak语言的脚本, 用来处理进化树,拟合时间等。 不过我没有系统学习过网页编程, 所以看gwak的源代码还比较困难。

如果在本地使用网页版本的Phylomatic, 我觉得应该先安装Server, 一般来说, 是安装Apache Server, 同时要确保系统中有gawk的可执行文件,以便网页在执行时可以调用。在本地配置好之后, 再通过localhost访问。 安装Apache,如果是Windows, 则用Xamp最方便, 不过安装Gawk就没有那么直接了。 如果非要使用本地网页版本, 建议试试Ubuntu,Debian等Linux版本。这些系统安装Xamp以及gawk相对简单很多。

分类单元数非常多的进化树怎么建立?

提问

最近用1万种植物名,在Phylomatic网站建立系统发育树,两种方法都试过了,都不能正常运行:

  1. taxa 中录入1万种的科属种时,结果显示: Trees/taxa lists over 200kB must be passed by URI
  2. 当我把科属种上传到网上URI, 输入URI之后,显示: More than 5000 taxa (too big). Sorry, please use an offline version of Phylomatic (see documentation).

回复

Phylomatic对输入的物种数是有限制的。可以考虑使用 浙江大学金毅编写的S.PhyloMaker。请参考

  1. https://github.com/jinyizju/S.PhyloMaker
  2. https://doi.org/10.1093/jpe/rtv047

Phylomatic的进化树能获得bootstrap支持率吗?

提问

我用Phylomatic 建了一个系统发育树,想检测植物性状的系统发育信号,以及计算PIC和pGLS,来看系统发育对性状种间变异的影响。在投稿的时候,审稿人提出了一些问题,我不太懂,可否帮忙解答一下?

  • 1)审稿人说我应该“report the bootstrap value”, 这个bootstrap值是自展值?这个数据我应该怎么获取呢?
  • 2)审稿人希望“report which nodes are fixed”, 我问了系统发育方向的同学,说意思是化石标定点,我查了zanne et.al. 2014年的文章,查了里面的化石标定点,跟我选取的物种相关的标定点只有豆科那一支上有一个,这样可以吗?

回复

下面是我对问题的回复,供参考:

从Phylomatic重新获得的进化树是没有bootstrap value的。 只有通过DNA序列获得的进化树才能通过bootstrap 获得 supporting value。 审稿人非常清楚Phylomatic是如何获得进化树的。 因为Zanne在做进化树的时候, 应该是引用了很多化石点做进化树的时间校正,如果需要,可以引用Zanne的论文。

Phylomatic进化树和分子系统树的主要区别是什么?Phylomatic进化树能用于进一步分析吗?

提问

  • 我用Phylomatic的方法建立的系统发育树是否可信(我共有15个物种,一些物种是同一个科,或者一个属的)?是否可以用来进行系统发育相关的数据分析,例如检测系统发育信号或者计算PIC?

  • 关于第二个问题。您说,审稿人希望我:

    • 指出在我的进化树中,是否有节点与这些固定的化石有关系
    • 哪些节点在Zanne的进化树上是固定的

在一个学系统进化方向的同学的帮助下,我了解到,在Zanne的进化树上,有39个化石标定点,其中有一个是Fabales,我的进化树其中有一支是豆科植物,不知道这样算不算进化树上的节点与这些固定的化石有关系?

  • 另外我的进化树中,有9个物种在Zanne的进化树上是可以找到的,另外的一些物种的进化时间可能是根据它说在你的属估算的。这样是否回答了“我的进化树上哪些节点在Zanne的进化树上是固定的”这个问题?

回复

Phylomatic建立进化树的方法, 主要是在科一级的水平上, 在backbone进化树上, 进行添加。 然后假设在科属种三个分类水平上, 分别延续了三分之一的时间 (Webb and Donoghue, 2005)。在属一级有信息是, 应该会按照属的时间添加物种(不知道是否是随机添加)。Phylomatic 主要用于群落和地区水平的物种系统发育多样性分析, 这主要是因为, 在Phylomatic发表的时候, 大部分物种的DNA条形码信息仍然是没有的,但是要近似了解物种之间的系统发育距离, 可以用Phylomatic提到的算法, 得出一棵进化树。 Phylomatic进化树与DNA条形码得到的进化树进行比较,在DNA条形码开始流行时, 已经有若干研究了, 主要是 John Kress团队(John Kress 的网站)以及裴男才博士等所做的工作。Phylomatic方法获得的进化树, 在研究系统发育距离较远的物种时,准确度是很高的。 但是如果有大量物种出现在同一个科属, 就会出现众多的多分枝结构, 影响对结果的计算。尤其是在PIC或者计算系统发育信号时。

参见Phylocom的说明书第26页 “To handle polytomies, AOT uses the method introduced by Pagel (1992) to obtain a single degree of freedom contrast at each polytomy, treating the polytomies as ‘soft’.”

参考:

这种情况下,我觉得是已经回答了审稿人的问题。 审稿人想让你列明哪些时间是在Zanne的进化树中是固定的, 哪些是你后来添加的。

分子系统树

多基因Supermatrix应该怎么构建?

提问

用多基因建树的supermatrix要注意什么?怎么建立supermatrix?

回复

利用多个基因建立系统发育树,有一种称为 supermatrix的方法。这种方法是将每个基因先比对好,再将比对好的序列,相同种的连接起来,其中空缺的位点用?替换,以此来构建一个超级矩阵。

由于不同基因,进化速率可能是不同的,因此需要在在软件中调用分隔模型,MrBayes、RAxML等,都是支持分隔模型的,设置分隔模型在这些软件的说明书中,都有详细的说明可以参考。

建立超级矩阵,可以使用R的phylotools程序包的supermat函数,不必管其基因名称,分别将片段命名即可。

关于Supermatrix的方法,也可以参考:Kress, W. J., D. L. Erickson, F. A. Jones, N. G. Swenson, R. Perez, O. Sanjur, and E. Bermingham. 2009. Plant DNA barcodes and a community phylogeny of a tropical forest dynamics plot in Panama. Proceedings of the National Academy of Sciences 106:18621-18626.

基于DNA序列的进化树应该怎么做?

提问

我有一个地区木本植物的名录,要建一个属水平的系统树,该怎么做?我是从genebank里查找序列,是只选择某一个种代表这个属还是要选择多个种?若选择多个种,怎样合并到一个属?选择哪些基因片段比较合适?若方便的话,还请传几篇这方面的文献。万分感谢!

回复

目前我了解到做进化树有两种方法:

一 从名录开始建立进化树,这主要是要用Phylomatic 和 Phylocom软件。

二 从DNA序列建树。也包含多种方法,一般用ClustalX或者MUSCLE等比对,用RAxML, BEAST, MrBayes等建立进化树,再用r8s或者别的方法进行分子钟校正。

用到的基因片断,目前有 rbcla, matk, its, trnh-psba等。可以参考 John Kress等人的几篇关于DNA-Barcoding的文献。据我所知:

  • rbcla 适合建立科和属以上的
  • matk 适合建立属和种水平的
  • its适合区分居群
  • trnh-psba适合区分居群

建立分子系统树的序列太多了怎么办?

提问

我尝试了建ML进化树,但是发现如此计算量计算机实在受不了,因为我有9000多条序列。有无比较快速的软件可用来建ML树的?我起初用FastTree是因为这个软件比较快速,而且所建的树是近似ML树。

回复

如果序列太多,那可能只能用NJ的方法做进化树了。还有一种方法:在 www.phylo.org可以注册一个帐号,用那里的超级计算机,用RAxML等软件来建树。

有rbcLa、matK、ITS等DNA条形码片段了,应该怎样建树?怎样进行群落系统发育分析?

提问

有rbcLa,matK, ITS等DNA条形码片段了,应该怎样建树?怎样进行群落系统发育分析?

回复

有DNA条形码序列之后, 请按照下面的方法建立进化树:

  1. 将rbcLa,matK, ITS等片段分别用 比对 (MAFFT或者MUSCLE)
  2. 用phylotools程序包/evobir 程序包或者biopython或者Genious 合并成 supermatrix,也就是合并了多个比对好片段的phylip文件
  3. 用RAxML,或者IQTREE www.iqtree.org/建立最大似然进化树
  4. 用r8s或者PATHd8进行分子钟校正,枝长单位一般为百万年,参考 https://github.com/helixcn/EcoEvoLinks。
  5. 用Phylocom或者picante软件计算群落系统发育结构

建立进化树和相关的分析, 可参考以下网站: http://ib.berkeley.edu/courses/ib200/ http://treethinkers.org/ https://www.plob.org/article/2193.html https://www.geneious.com/features/phylogenetic-tree-building/ http://kembellab.ca/r-workshop/biodivR/SK_Biodiversity_R.html

希望里面的培训材料对你有帮助。

PD 系统发育多样性

怎样用Phylocom计算系统发育多样性?

提问

我想用Phylocom计算PD指数,现在的问题是,输入命令“Phylocom pd result.xls”后,系统就报错“Phylocom.exe遇到问题需要关闭……”,试了多次均如此。我是用的FastTree软件建的树,用记事本打开后发现也是Newick格式的树。据我有限的知识,也看不出格式有哪里不对。我已经将sample和phylo文件放在附件中,麻烦帮忙看看问题在哪里。

回复

您的sample文件是xls文件? sample文件必须是纯文本文件,并按照Phylocom的要求准备。

Phylocom计算所需要的进化树必须是Ultrametric进化树。我在Figtree中查看了一下您传给我的进化树,发现并不是UltraMetric的,所以必须要经过转换。但是您传给我的可能是Bootstrap之后,经过合并的,这样对计算结果影响很不好。我一般是用RAxML建立ML的进化树,而且只建立一棵,不进行bootstrap运算以及合并等。

我用如下命令,将您传给我的进化树转换成了Ultrametric Tree,这在r8s等软件中可以实现。

1
library(ape)setwd("C:/")tre <- read.tree("phylo")tre2 <- chronoMPL(multi2div(tre))write.tree(tre2, "new.tre")

可以试试以上几句R的命令, 不知是否能解决您的问题

怎样去掉PD里面物种丰富度的影响?

提问

想问一下怎么把 phylogenetic diversity(Pd) 中消除Species richness 的影响?有什么指标代替标准化的pd 吗?

回复

SES PD 我们应该是用picante程序包的 ses.pd直接计算出来的。

请参考

1
library(picante)?ses.pd> data(Phylocom)> ses.pd(Phylocom$sample, Phylocom$phylo, null.model="taxa.labels", runs=99)    ntaxa pd.obs pd.rand.mean pd.rand.sd pd.obs.rank  pd.obs.z pd.obs.p runsclump1    8   16   26.31313  1.607676     1.0    -6.4149319  0.010  99clump2a   8   17   26.17172  1.708564     1.0    -5.3680843  0.010  99clump2b   8   18   26.27273  1.608765     1.0    -5.1422831  0.010  99clump4    8   22   26.58586  1.498367     1.0    -3.0605707  0.010  99even      8   30   26.50505  1.567357     100.0   2.2298368  1.000  99random    8   27   26.64646  1.416471     58.5    0.2495888  0.585  99>

为什么PD跟纬度负相关,而SES.PD和纬度正相关?

提问

谢谢您的回复!我还有个问题,前面算过 ses.pd ,但本来PD跟纬度负相关,但算出来的ses.pd发现跟纬度正相关,这个应该怎么理解?谢谢!

回复

pd和物种数是有极显著的正相关关系的, 而ses.pd 只是比较pd和零模型所得pd的差别, 如果一个地区本身pd值很高, 则ses.pd的值也应该是很高的。 另外,纬度越低物种丰富度就越高, pd就越高, 同时pd.ses也应该是高的。 因此我也推测纬度越低, ses.pd应该越高。所以一定是负相关的关系。

如果真的出现了您所说的正相关关系, 还应该从取样的偏差, 甚至是ses.pd函数本身是否存在bug等方面考虑。

没有枝长的进化树,能计算PD吗?

提问

我用Phylomatic生成了一棵树,后面用Phylocom可以算出pd,但是放在R里面算时,提示说Tree has no branch lengths, cannot compute pd。Phylomatic生成的树不是应该带枝长的吗,是怎么回事呢?

下面是我用的命令代码:

1
install.packages(c("picante"))setwd("C:/tree")library(ape)library(picante)phylo <- read.tree("phylo.txt")sample <- read.table("sample.txt")pd <- ses.pd(sample, phylo, null.model="taxa.labels",run=999,iterations=1000)write.csv(pd, file="SES.PD.csv")

回复

计算PD用的进化树, 是需要有枝长的。否则在计算一个种到另一个种的系统发育距离时,只能计算节点的数量了, 但是节点数直接加减其实并没有多大的意义。

您的脚本,我发现两个问题:

  1. 进化树文件在最后没有英文分号 ;, 所以在read.phylo时会出现问题。这是跟newick文件的定义有关。
  2. Phylocom sample文件不能在picante中直接使用, 而是要先转换为matrix, 用 sample2matrix函数可以进行相应转换。

修改后的R脚本如下。

1
#### install.packages(c("picante"))setwd("C:\\Users\\jlzhang\\Desktop\\attachments")library(picante)phylo <- read.tree("phylo.txt")phylosamp<- read.table("sample.txt")mat <- sample2matrix(samp)pd<- ses.pd(mat, phylo, null.model = "taxa.labels",run = 999,iterations = 1000)write.csv(pd, file="SES.PD.csv")

怎样计算PD系统发育多样性计算?

提问

我基于ITS序列构建了系统发育树(Mega软件)。接下来我想计算每个群落内物种的谱系多样性。不知道怎么计算?能用R吗?您方便能指点一下吗?

回复

  • 目前很少有单基因建立进化树了。最好考虑用多个基因建立进化树。
  • 要计算系统发育多样性,应该先获得ultrametric tree, ultrametric进化树一般是通过分子钟校正获得的,枝长表示分化时间, 一般是r8s或者BEAST, 也可以用PATHd8等软件来做。获得ultrametric 进化树后, 再用Phylocom或者picante计算系统发育多样性就可以。具体请参考Phylocom或者picante的说明书。

零模型

零模型的置信区间

提问

通过Phylocom中Independent swap作为零模型,我计算出了NRI和NTI,请问有没有一个置信区间,超过这个区间就是谱系聚集,低于这个区间就是谱系发散,在这个区间就是谱系随机呢?这个有文献吗?谢谢

回复

Nate Swenson 博士曾经提到,NRI以及NTI都是standard effective size, 在95% 的置信区间, 如果数值超过1.96或低于-1.96, 都属于显著。 但是这有一个前提, 就是零模型生成的MPD或者MNTD呈近似正态分布。Swenson博士的论文中应该提到了这一点。

怎样检测性状的空间分布是聚集还是分散?

提问

我想知道某一功能性状(例如LMA)在群落中的分布,比如是聚集的或是分散的?该怎样构建一个零模型(null model)呢?怎样通过R或者其他软件怎样实现?

回复

性状在群落中的分布, 也是可以按照群落系统发育相似的手段进行分析的。

在R软件中, 先将性状进行标准化后, 计算不同物种同一性状的欧几里得距离,用UPGMA或者Ward方法等,进行聚类分析, 构建一个不同物种, 同一性状的聚类树(hclust类型的数据), 然后用将其转换为phylo类型。之后, 就可以参考picante程序包, 以及利用相应的零模型, 研究性状是聚集或者发散的。

零模型,是群落中出现的物种进行随机化,零模型与我们要检验的假说有关。群落系统发育中常用的有四种, 具体参考Phylocom的说明书。

样方数量会影响零模型的结果吗?

提问

如果要做1ha森林样地不同 spatial scale 群落谱系结构,1010、2020、5050,按照样地的坐标选择,则小样方分别有100个、25个、4个,最后进行谱系关系指数的计算,那么50*50的小样方只有4个,这样的结果会不会没有可信度?

回复

这取决于您使用了哪个零模型。Phylocom的 tip shuffling 零模型只是将物种的系统发育顺序随机打乱, 结果一般都不会受到样方数很大的影响。但是其他零模型就可能会受到影响。 请参考Phylocom说明书 第6.1.3小节

能否用零模型检验样方物种组成在多大程度符合中性理论的预测?

提问

ses值只能检测群落的聚集和发散两种情况,那对于中性理论中存在的随机情况,如何进行检测?

回复

Phylocom的零模型, 就是在用不同的方式模拟随机情况,作为standard effective size, SES >1.96 或者 SES < -1.96 即可认为在 95%的水平上显著, 也就是存在显著的聚集或者发散。 如果SES介于两者之间, 则很大程度上, 受到随机过程的影响。但是现在并未找到很好的办法量化随机过程在其中能解释多少方差。

零模型中的零分布是什么?

提问

做植物群落系统发育分析应该看过Bryant 2008年发在PNAS上面的那篇文章(”Microbes on mountainsides: Contrasting elevational patterns of bacterial and plant diversity”)。这里面我有个问题我一直没有弄明白的。

在Materials and Methods部分,Compositional and phylogenetic similarity章节中,作者提到 :

“We tested whether the slope in the decay of phylogenetic similarity was greater or less than what was expected given the taxonomic decay in similarity by comparing the observed slope with a distribution of distance–decay slopes obtained by randomizing the location of taxa at the tips of the community phylogenetic tree 1,000 times. This is equivalent to randomly sampling the taxa while constraining the number of taxa in each community, the number of taxa shared by any two communities, and taxa occurrence across all communities. The observed phylogenetic slope was assumed significantly different from the null if it was greater than or less than 975 of the slopes of the randomizations (two-tailed test, P < 0.05). ”

我很想知道,作者是如何得到在null model下的随机化结果?仅仅是一次随机化吗?如果不是单纯一次随机化,如何计算他们的Null phylogenetic Similarity?就是下图中的结果。

回复

作者已经提到是随机化1000次, 每次随机化, 都是对进化树(对tip label进行随机重排)进行随机化。然后针对每一棵进化树, 都进行类似的计算。 这1000次计算得到的结果, 就是null distribution. 按照从低到高的顺序(或者从高到低)进行选第975个值(或第25个的值)作为临界点(P<0.05, two tails test),与真实值进行比较。以近似得获得显著性。

如何自己在R中创建群落随机化零模型?

提问

我看很多文献中,在不考虑系统发育的情况下,可直接计算一个样地alpha或者两个样地beta的多样性;这样的话直接同自己用R构建的null model比较,计算效应值(均值差/sd);想问下我如果想用R构建样地的null model要怎么做?您能否给我一个模板文档?还有关于两个样地差异的null model同一个样地内的物种随机,R程序是否存在很大差别?

回复

请参考如下命令

1
library(picante)dat <- read.table("sample", header = FALSE)datmat <- sample2matrix(dat)###### By Site rndr_datmat <- datmat[sample(1:nrow(datmat)),]###### By Specierndc_datmat <- datmat[,sample(1:col(datmat))]

什么时候要考虑零模型?

提问

  1. 在看到很多文章中提到NRI的提取是用Phylocom软件或者R语言,而大多数文章中没有提到零模型的问题。您认为什么时候该考虑零模型假设的问题,什么时候不必考虑呢?
  2. 在分析系统发育结构特征与环境变量的相关分析中,如果在某个分类阶元上物种种类较少,这样的分析是否可行?或者说这样的分析会有什么问题存在?

回复

在看到很多文章中提到NRI的提取是用Phylocom软件或者R语言,而大多数文章中没有提到零模型的问题。您认为什么时候该考虑零模型假设的问题,什么时候不必考虑呢?

所谓零模型, 就是群落数据或者进化树数据进行随机化的方式。 运行零模型主要是为了解, 在随机状况下, 物种系统发育关系的统计分布,从而推断真实的群落内物种的系统发育关系是否随机, 以便了解environmental filtering或者stochastic process的相对重要性。所以在探讨这些生态学过程的相对重要性, 计算NRI或者NTI的时候, 必须要考虑零模型。

NRI的计算,必须要涉及到零模型, 而目前Phylocom中零模型有四个:

  1. Phylogeny shuffle:
  2. Species in each sample become random draws from sample pool
  3. Species in each sample become random draws from phylogeny pool
  4. Independent swap

picante 程序包中, 零模型有7个

  1. taxa.labels: Shuffle distance matrix labels (across all taxa included in distance matrix)
  2. richness: Randomize community data matrix abundances within samples (maintains sample species richness)
  3. frequency: Randomize community data matrix abundances within species (maintains species occurence frequency)
  4. sample.pool: Randomize community data matrix by drawing species from pool of species occurring in at least one community (sample pool) with equal probability
  5. phylogeny.pool: Randomize community data matrix by drawing species from pool of species occurring in the distance matrix (phylogeny pool) with equal probability
  6. independentswap: Randomize community data matrix with the independent swap algorithm (Gotelli 2000) maintaining species occurrence frequency and sample species richness
  7. trialswap: Randomize community data matrix with the trial-swap algorithm (Miklos & Podani 2004) maintaining species occurrence frequency and sample species richness

2.在分析系统发育结构特征与环境变量的相关分析中,如果在某个分类阶元上物种种类较少(例如,以白腹鼠属为研究对象,而只有6个种),这样的分析是否可行?或者说这样的分析会有什么问题存在?

这里的系统发育结构指的是什么? 如果你的species pool种类非常少, 则randomization所能提供的排列组合数是非常有限的。会丧失statistical power。从小样本推断总体, 如果是基于随机化方法, 都会面临类似的问题。

系统发育信号

检验系统发育信号时, 进化树必须是超度量树吗?

提问

检验系统发育信号要注意什么?是否要求必须是一棵超度量树(带枝长的,有分化时间的树)?

回复

在检验系统发育信号, 进行群落系统发育时, 进化树必须是ultrametric的, 即右侧为等距的(超度量树), 其枝长表示时间。不能直接用RAxML,PAUP*,PHYLIP,PHYML,GARLI,MrBayes等软件直接生成的进化树,因为这些软件生成的是ML树或者MP树,枝长并不表示分化时间。BEAST软件生成的进化树, 枝长表示时间, 可以使用。 枝长不是时间的进化树, 必须通过分子钟校正或者一些转换, 转变为ultrametric tree。 转换的方法, 可以用r8s, PATHd8,multidividetime, ape程序包的chronopl等。

功能性状数据检验系统发育信号时, 需要做log转换吗?

提问

我们采用形态特征数据检验系统发育信号时,是否需要将原始数据(原始数据单位为cm)进行 log transformation 的转换?

回复

建议进行转换,Blomberg, S. P., T. Garland, Jr., and A. R. Ives. 2003. 的论文中,对数据进行了转换。但是是否需要进行转换, 我并未见过什么标准。

计算Blomberg’s K时, 怎样看待其对应的p值?

提问

K值和p值二者,究竟以哪个结果为标准检测系统发育信号?当p值显著,k值小于1的情况,如何定论?

回复

系统发育信号, 用K来表示。 由于k 只是一个比值, 表示的是相对大小。 K大于1,表明物种的性状比按照布朗运动出现的组合要近。反之要远。由于你的k值都小于1, 因此应该认为, 系统发育位置相近的种, 它们的性状比布朗运动模型预测的要远。 P是否显著, 只是对K的显著性进行检验, 一般采用tip shuffling , 将标签随机排列, 这样物种的系统发育关系在进化树上随机排列,可以检验K相对于这个零分布是偶然的, 还是必然的(P < 0.05).

存在系统发育信号,就是性状“系统发育保守”吗?

提问

存在系统发育信号,就是性状“系统发育保守”吗?不存在系统发育信号,就是性状“系统发育趋同”吗?

回复

如果K大于1,就说存在系统发育信号, 表明系统发育位置相近的物种, 具有相似的性状。 如果K小于1 ,可以说存在系统发育反信号 (Anti Phylogenetic Signal ) , 此时, 系统发育关系相近的物种反而具有更加不同的性状。 若K的检验都不显著, 则可以认为, 不存在系统发育信号, 但这并不代表“系统发育趋同”。 你提到的“系统发育趋同”, 可能这里说的反信号。 如果不存在系统发育信号, 也就是性状的进化符合布朗运动模型所做出的预测(零分布)。

Phylocom

Phylo文件中Segmentation fault: 11错误

提问

我的phylo和sample文件在附件中,使用命令为Phylocom comstruct -m 0 >output.txt,程序总是提示Segmentation fault: 11错误,经反复找错与测试,我发现是phylo文件有问题,可我不能确定phylo文件哪里出了错。还望能够帮忙

回复

数据有两个问题:

  1. sample文件中, 只有一个样地的数据。两条数据,这个数据量太少, 无法运行 comstruct
  2. phylo文件不含有枝长。 如果不包括枝长,Phylocom会假设所有枝长为1,进行相关计算。但是由于此时进化树会变成 non-ultrametric ,枝长不能加减,因此结果无意义。

Phylocom能否分析群落遗传多样性?

提问

用Phylocom软件是否可以进行群落内的遗传多样性相关分析?

回复

Phylocom不是用来分析遗传多样性的,主要是用来分析系统发育多样性和系统发育结构的。

检查sample和phylo文件时,怎样删除文本文档中的非ASCII编码字符?

提问

纯文本文档中有ascii编码的符号只能一个个检查?是否可以通过某些软件直接转换保存?

回复

可以用notepad++编辑器打开文本后,在允许正则表达式的情况下替换全部非ASCII字符。[^\x00-\x7F]+

样方中没有出现的物种,不要列在sample文件中

提问

我用45个样方数据,准备了phylo文件和sample文件,但我不知是什么地方出了错误,所计算的PD值和系统发育距离全是一样的值。我将Phylo文件和sample文件以及计算结果都上传到附件了。

回复

您的sample文件有问题,个体数为0的物种应该全部删除。所有的其他指数都是以PD为基础的, PD计算得不准确, 其他指数也就不可能准确。 更多指数计算,请参考 picante程序包 http://blog.sciencenet.cn/home.php?mod=space&uid=255662&do=blog&id=1116212

sample文件时可不可以用科或者属名来当样方名、直接用1来当所有的物种数呢?

提问

我正在尝试用Phylocom计算我的系谱树中的NRI和NTI,应该需要用到comtruct,但是不太清楚怎样构建sample文件……我手头只有一个dated tree,没有样方和物种数相关的资料,这样的情况下请问制作sample文件时是不是用科或者属名来当样方名、直接用1来当所有的物种数呢?还有,请问您博客中提到的

1
phylodist <- as.dist(cophenetic.phylo(tr))

是否就是计算mean pairwise distance呢?

回复

sample文件, 应该按照Phylocom的要求构建。sample文件是物种在某个样方出现情况的纪录。

  1. 该文件内容必须为纯文本

  2. 该文件分为三列, 各列之间, 用制表符间隔开(可以通过Excel等软件, 另存为txt)。

  3. 该文件没有表头,

    • 第一列表示样方的名称, 样方的名称不能有空格
    • 第二列表示个体数, 必须为整数
    • 第三列, 表示物种名。 物种名必须出现在进化树中。 如果没有的话, Phylocom不能运行。

以上就是sample文件的要求。

怎样制作sample文件?群落系统发育能研究物种入侵吗?

提问

  1. 假如我想研究北京整个地区的群落组成,我就直接把北京看成一个整体行吗?还是必须要把北京划分成许多个亚地区?
  2. 这个sample文件一般是怎么得到的呢?是自己实地调查的结果?还是根据标本的记录?
  3. sample文件中有一列信息是物种的多度,指的是该物种在分布区的数量吗?
  4. 您之前说MPD和MNND可以对群落的物种组成机制做推断,我最近看的文献是把这种方法运用于外来入侵植物的研究,不知您是否有关注?您觉得有什么区别吗?

因为我确实不太了解生态方面的问题,而且还没有实际运算过数据,所以问题比较多,再次感谢您的解答。

回复

这取决于研究的问题。 我并不太清楚您所研究的问题。

在群落尺度, sample文件,多度是物种的个体数。 Phylocom说明书已经写了, 怎样生成sample文件。在地区尺度, sample文件一般是物种名录。 很显然, 名录既可以通过调查获得, 也可以通过标本记录获得。

多度, 这里只是个体数, 即某一个样方中, 有多少个个体等,与分布区数量无关。

很久之前Sharon Strauss分析过入侵物种会改变群落的系统发育结构。 你可以检索一下 community phylogenetic structure, 文献很多。 我并不是做入侵物种的研究。 我觉得要做什么分析, 还是要跟从要回答的问题出发。

sample文件:Mixed delimiters in file:sample

提问

在运行Phylocom计算betaMNTD的时候,输入Phylocom comdistnt>comdistnt output.txt命令,软件提示错误,显示:Mixed delimiters in file:sample。不知道哪弄错了,还望指点!原始数据在附件里面,谢谢您了!

回复

数据有两个问题:

  1. phylo文件为newick格式的进化树没有错, 但是不是ultramtric的, 可以尝试用R ape程序包的 chronos 函数转换为ultrametric格式的进化树,才能进行计算,否则得出的phylobeta或者PD等都是没有意义的。
  2. sample文件可以通过excel格式另存为 txt格式, 制表符间隔即可

sample文件是必需的吗?

提问

我想用这个软件计算PNND和MPD时,必须需要sample文件吗?如果只有一个phylo文件的系统发育树可以计算吗?我有点不明白,为什么计算这两个谱系距离需要物种分布信息(sample)?

回复

我不不清楚PNND是什么,MPD应该是 mean phylogenetic distance。

Phylocom软件在计算MPD时, 需要有phylo文件和sample文件。

sample文件的要求请参考 Phylocom说明书的第9页, 3.2节 (https://github.com/Phylocom/Phylocom/releases/download/4.2/Phylocom_manual.pdf )。 MPD可以在计算NRI指数时获得。如果只有进化树,那么可以准备包含所有种的sample文件, 每个种的abundance都是1即可。

Phylocom 计算MPD,MNTD等需要物种分布信息吗?

提问

一般计算遗传距离不是只需要矩阵或者发育树就可以了吗?为什么使用Phylocom计算MPD(Means Phylogenetic Distance MPD)分类单元间平均谱系距离和 PNND/MNND(phylogenetic nearest neighbour distance) 最近相邻谱系距离,需要物种分布信息呢?

回复

MPD是某地点的系统发育平均距离。

举例: 假设现有A和B两个地点, A地点所包含的系统发育多样性在平均以后, 是否比B点要高? 这时候就需要A 和B两个地点的物种名录。分别计算A地点内所有种两两之间(两两之间成对)的系统发育距离,再除以两两之间的对数(number of pairs)。B地点与之相同。

PNND/MNND(phylogenetic nearest neighbour distance) 在Phylocom中称为MNTD。对于地点A的种,假设有sp1, sp3, sp8…spn个种,只计算在系统发育距离上,每个物种与其系统发育距离最近物种的系统发育距离,再平均以后就得到了A地点的MNTD。B地点计算方法与之相同。

MPD和MNTD主要是为了探讨群落内物种的平均系统发育距离与零模型相比是高还是低。从而对群落组成机制做一些推断。

为什么会出现Taxon XXXX in sample not a terminal taxon in Phylomatic. exiting

提问

运行 Phylocom comdist > comdist.output.txt 命令后,结果显示"Taxon Acer in sample not a terminal taxon in Phylomatic.exiting."是不是我改成自己的sample文件时候用错了呢?

回复

sample文件中的物种名与phylo文件中的物种名必须一一对应, 包括大小写。

怎样准备sample文件?MPD.rankLow和MPD.rankHi是什么?

提问

我想使用软件中的comstruct和nodesig功能,一个问题是在准备sample和traits文件时,sample文件中的第二列多度的含义以及traits文件中的性状数据信息我不知道该怎么定义或是填写。

另一个问题是,我尝试使用了comstruct功能,对得到的结果文件中的MPD.rankLow和MPD.rankHi这两列想不通,就像我下边的截图所示,第一列随机的MPD比实际的MPD要低,为什么MPD.rankLow会比较低?我的理解是随机的MPD既然比实际的低,那么出现MPD.rankLow的次数应该要多,我不知道是不是我的理解有误,实在没想通这个地方,以及算单尾p值的时候是不是直接用MPD.rankLow除以1000次?

回复

请参考Phylocom说明书第9页:

  • 3.2 Sample preparation
  • 3.3 Traits preparation

说明书 15页

The rank of observed MPD/MNTD values relative to the values in the null communities are reported as rankLow (number of null communities with MPD/MNTD values less than or equal to observed) and rankHi (number of null communities with MPD/MNTD values greater than or equal to observed).

rankLow是将真实的MPD与每次零模型随机化生成的MPD放在一起, 一般情况下, 假设设置999次零模型, 那么加上真实的MPD, 则共有1000次计算。 将数值按照从大到小排列, 数值高低的序号称为rank。rankLow定义为:零模型生成的值比真实值小的序数,在你的结果中是998个随机值比真实值要小。

用Phylocom能建立群落聚类树吗?为什么picante会下标出界?

提问

我知道在“picante”里面计算comdist.result后,可进一步聚类,但用Phylocom得到的群落两两系统发育距离,怎么能用于构建群落的聚类树?我用“picante”能够计算出PD,但是在计算其它值时,出现“下标出界”,后面就运行不了了。我就想着用Phylocom的结果来聚类!

回复

如果已经有样方之间的系统发育距离矩阵,或物种组成相异性矩阵, 都是可以进行聚类分析的, 以反映哪些样方之间的系统发育关系相近或者物种组成相似。 可参考 http://ecology.msu.montana.edu/labdsv/R/labs/lab13/lab13.html

picante中“下标出界” 的问题, 主要是有些物种在群落数据中出现了, 但在进化树中没有出现。 注意R中, 大小写要完全对应的, 学名一定要完全匹配。 在进化树中没有出现的物种, 需要在数据处理时 从community matrix中去掉。

Taxon in sample not a terminal taxon in phylogeny?

提问

我现在想做群落两两之间的系统发育距离,但是用Phylocom comdist进行运算时,数次尝试的结果都是只有一句话:Taxon in sample not a terminal taxon in phylogeny. Exiting.我检查了我phylo文件和sample文件中的物种名,二者也是相对应的,并没有不一样。所以想请您帮我看一下问题出在哪里。

回复

sample文件也必须是纯文本格式, 一般是用excel另存为 txt 文件, 然后去掉扩展名。 您的sample是xlsx格式的, 我已经转换为txt格式了, 并且计算成功。结果参见附件。

另外, 值得注意的是, 进化树需要有枝长, 而枝长一般是通过Wikstroem的分化时间拟合的。 而您的进化树目前没有枝长。 所以还要用BLADJ或者别的方法, 为进化树添加上枝长。

为什么在运行BLADJ的时候Phylocom.exe会终止?

提问

“ 输入 Phylocom bladj > out.tre 生成out.tre文件,就是含有枝长的进化树。”在这里总是提示说Phylocom.exe程序出现问题,无法进行后面的操作。你提供的软件版本是4.1,但是现在是4.2版本,是否为这个原因?期盼你的回复!

回复

可以先看一下, phylo文件是否有非ASCII码的字符。

为什么用Phylocom BLADJ拟合的枝长,有些是完全一样的?

提问

现在有一些关于进化树的问题想请教您,我用Phylomatic建的进化树,用Phylocom 拟合出的枝长,发现一些不同属不同种的枝长都是一样的:

拉丁名 枝长
树参 Dendropanax_dentiger 11.206897
变叶榕 Ficus_variolosa 11.206897
九节 Psychotria_asiatica 11.206897
鹅掌柴 Schefflera_heptaphylla 11.206897

我想问您出现这种结果的原因是什么?

回复

这是和Phylocom BLADJ的算法有关的。 如果有科的分化时间, 则BLADJ会将科的时间三等分。 如果没有科的分化时间, BLADJ会继续将更高等级的节点继续等分。如果你用的是Wikstrom的分化时间, 则Araliaceae的分化时间是26Myr, 而Moraceae为23.0Myr, 请问你是否用的 Wikstrom的分化时间? 还是用的别的分化时间?

为什么CMD中会提示“Phylocom不是内部或外部命令”

提问

在开始> cmd > cd C:\Phylocom>输入Phylocom comstruct > comstruct.output这一步中按开始,运行输入cmd出来的黑色框中,我输入了C:\Phylocom,它就出现C:\Phylocom不是内部或外部命令,也不是可运行的程序或批处理文件,是我的步骤错了还是什么?

回复

由于Phylocom.exe是 console application,可以添加到system path,再通过CMD运行,也可以解压缩在某文件夹之后, 再在相同文件夹内创建一个.bat文件运行, .bat文件里面放上相应的命令,如Phylocom comstruct > comstruct.output 即可。

Phylocom能计算植物以外类群的系统发育多样性吗?

提问

想请教一下您,Phylocom能做鱼类谱系方面的研究吗?在谱系树的建立中自己就遇到了很大困难,根据里面phylo文件的格式自己编写了要研究海域的编码,但对bladj、ages、sample等文件还是遇到很多问题,这些文件代码都是关于植物的。希望您能够帮忙解答一些疑问,期待您的回复!

回复

Phylogenetic structure是从研究森林群落开始的,这方面的研究比较多些。 Phylocom和Phylomatic也主要是基于植物群落做分析的。 不过Phylocom可以分析有物种名录以及进化树的任何群落的系统发育结构。而对于鱼类来讲,相信进化树是有的, 需要获得的只是群落的物种组成,也就是某一个地点鱼类的群落系统发育结构, 附件中是一些文献, 供参考(略)。

系统发育beta多样性

关于Unifrac

提问

Unifrac指数最早用于微生物, 那么:

  1. 是不是这个指标用到植物方面有问题或者不太适合植物?
  2. 看植物beta多样性中系统发育的组成,是不是Unifrac这个指标比MNTD更好一些。在用系统发育性Beta多样性指标时候,Unifrac与MNTD侧重点有什么不同?

回复

Unifrac指数最先用于微生物组成的系统发育多样性中。该指标用于植物群落的系统发育beta多样性并无不妥, 但是Unifrac和Phylosor的形式是类似的, 表达的信息也相若。

Unifrac用的还是比较多的。 描述物种的beta多样性, 有多度(个体数)信息时候用Bray-Curtis Distance, 没有多度的时候用Jaccard Distance。 描述系统发育多样性,可以选择的多样性指数包括 MPD、MNTD、Phylosor、 Unifrac等,其中MPD以及MNTD都可以选择是否进行多度加权。 在我看来, MNTD损失的信息比较多, 因此用来描述phylo beta diversity可能并不合适。 MNTD主要是探讨近缘种共存的。 所以使用Phylosor以及Unifrac都是一样的。

在上述几个指标中, 只有MPD比较独立于species beta diversity,但是引入MPD以及MNTD的最初目的, 都是为了计算群落的系统发育结构。 MPD, MNTD, PhyloSor 以及Unifrac这几个指数, 是无法完全独立于species beta diversity的。

Fabien Leprieur 似乎有探讨过这个问题,参考 http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0042760

怎样计算betaNTI?

提问

我用Phylocom计算betaNTI时出现了空文件,之前已经算出alphaNTI了,这就说明phylo和sample文件是争取的,我想请问您,是否可以帮我算一下betaNTI?谢谢!

回复

使用以下命令就可以计算出betaNTI和betaNRI了。

1
Phylocom comdist -f=phylo -s=sample>res_beta_nri.txtPhylocom comdistnt -f=phylo -s=sample>res_beta_nti.txt

物种数太多时,怎样计算系统发育beta多样性?

提问

物种数太多,如何计算phylogenetic beta diversity?

回复

sample数据的行数太多,可考虑用 PhyloMeasures 程序包 (我对这个程序包也不太了解),参见 Tsirogiannis et al. (2016)的论文。

Tsirogiannis C, Sandel B. Fast Computations for Measures of Phylogenetic Beta Diversity. PLoS One. 2016;11(4):e0151167. doi:10.1371/journal.pone.0151167

系统发育beta多样性的显著性是怎样检验的?

提问

我在使用Phylocom软件计算betaNTI时,发现数据结果的并不是对角矩阵,是不是要把矩阵的对角全部替换成0,在以此基础进行?

我用model 中的数据Phylocom comdistnt –s sample -f phylo -m 0 -r 999 -a -n>nti.txt同时我在很多文献中讨论中也没有具体说群落betaNTI值的是否存考虑权重 -a?

在计算效应值时,构建的零模型是否要考虑限制和非限制的区别?:

1
$ Phylocom comstruct -m 0 -r 9999 -a :

选择随机shuff( 重排系统发育关系和样地物种,这两个有什么偏好选择?)

$ Phylocom comstruct -m 3 -w 100 -r 999 : NTI comdist: 主要是对角值是否要替换成0?进入下一步计算?

附件是我用模型数据做的betaNTI结果。 其中是不是betaNTI的显著水平确认是不是只有绝对值小于2的情况才是中性过程?

回复

计算betaNTI时, 使用的是mntd,其实是寻找样方中,与某一物种最短的进化距离, 这个距离是不能用0代替的。所以不能将对角变为0。

我使用sample以及phylo文件, 按照以上命令, 运行得到了一样的结果。

很多情况下讨论betaNTI的值时,很多数据只有植物名录, 此时没有办法考虑物种多度加权的。 既然你的数据有多度, 则应该在计算的时候考虑,至少作为附录。

我觉得第3号模型 Independent Swap并没有特别适用的情况。 可能还需要阅读一些这方面的文献, 以考虑什么理论假设成立的情况下, 应该用Independent Swap模型。 不能换成0, 但是如果comdistnt的结果只作为系统发育beta多样的性的度量,则可以不必考虑群落自己与自己的系统发育多样性距离。

如果按照中心极限定理, NTI或者NRI的值, betaNTI以及betaNRI的值, 都应该接近标准正态分布, 此时, 在95%的置信区间,临界值分别为 -1.96以及+1.96, 小于-1.96, 以及大于+1.96, 都是偏离于95%的置信区间的, 也就是您说的显著。 如果落在这个区间之内, 则不能排除中性过程 (因为中性过程这里简化为随机, 如果真实值与随机生成的数据没有显著分别, 则不能排除真实值是随机生成的)。

怎样计算phylobeta diversity并绘图?

提问

如何在R中获得Null model下的MPD以及phylobeta diversity的参数值(例如phylosor)。就像您说的,在R中可以获得MPD每次随机化以后的值,如何获得呢?

最近在网上找到您很早以前分享的一个PPT文档《谱系多样性与分析方法》,能不能介绍一下如何在R中得到谱系beta多样性随空间距离、降水差异的关系图?这是否是两个矩阵之间的相关性分析?应该用哪个package和fuction来计算?

回复

我的理解是, 只能通过编程获得, Phylocom和picante中算法中都已经包括了,主要是在C语言中算的,不能得到每次随机化的值,因为得到了也是为了获得最终结果,而我们关心的其实只是结果。如果确实需要,可以更改picante中的相应C代码和R函数,以获得所需的值。

系统发育beta diversity是 将 系统发育距离矩阵和地理距离矩阵, 环境因子差异矩阵进行回归之后形成的。 可以参考 simba package:liste。

Rao二次熵

怎样计算Rao二次熵?

提问

  1. NRI和Rao二次熵分别需要准备什么格式的数据源?
  2. tre格式谱系树用R如何提取上一步所需的数据源?
  3. 使用R中的FD、picante程序包具体进行NRI和Rao二次熵两个参数的计算?

回复

①NRI和Rao二次熵分别需要准备什么格式的数据源?

NRI只能通过Phylocom软件来计算, 格式请参见Phylocom软件的说明书, 需要sample和phylo文件, phylo文件为newick格式的进化树, sample文件为Phylocom指定的格式。 Rao’s Quadratic Entropy 可以用Phylocom软件计算, 也可以通过picante计算。

②tre格式谱系树用R如何提取上一步所需的数据源?

上述软件所用的进化树, 就是newick格式的进化树,为什么还要提取?如果是读取, 用ape程序包的read.tree 函数即可。

③使用R中的FD、picante程序包具体进行NRI和Rao二次熵两个参数的计算?

picante程序包不能用来计算NRI。我没有用过FD程序包, 所以并不清楚如何用它计算Rao。在picante程序包中,Rao’s Quadratic Entropy 可以通过函数 raoD 计算,示例如下:

1
data(Phylocom)raoD(Phylocom$sample)raoD(Phylocom$sample, Phylocom$phylo)

提问

我想用Rao二次熵功能多样性指数分析一下群落构建,请问计算Rao coefficient的函数用哪个,dbFD ()?还是divc()?。如果要进行随机抽样计算预期值,您有没有现成的R脚本可供参考?

回复

基于功能性状举例矩阵的 Rao’s Quadratic Entropy, 在计算时, 用FD程序包提供的dbFD即可 (常基于gower距离)。 divc是ade4程序包下的函数, 也可以计算Rao’s Quadratic Entropy, 但是计算时有些麻烦, 参数整理不好, 容易出错。

FD程序包的结果, 应该是可信的。

基于随机抽样, 类似也有几种零模型,这和Phylocom软件中介绍的群落系统发育的零模型应该是非常类似的:

  1. 物种的距离随机化
  2. 物种在群落中随机排列
  3. 物种从一个物种库中随机抽取
  4. independen swap (关于该模型的意义, 本人保持怀疑)

下面这个函数, 可以用来将性状矩阵的物种名, 随机重排, 生成一次null community, 将该过程重复多次,每次都计算Rao’ D, 即可得到 Rao’s D的零分布。

1
library(FD)dummy$abunnull.community <- function(x){    x.name <- rownames(x)    x.name2 <- sample(x.name)    rownames(x) <- x.name2    return(x)}

以上是个人理解, 与您探讨。

进化树上的孤立节点Singletons

为什么Phylocom BLADJ生成的有枝长进化树用Figtree打不开?

提问

我用Phylocom软件创立工作路径时这样是对的吗?然后我用bladj为进化树拟合枝长时得到之后用Figtree打开这个文件时没看见进化树,是怎么回事啊?谢谢

这个sample文件里面的内容具体怎么编排呢,能否各个模板?后面的comstruct,pd,comdist的计算跟NRI和NRT的计算有什么具体的关系呢?看了你的博客和Phylocom软件使用说明了,还是一头雾水。麻烦你了。。。谢谢

回复

这是因为Phylocom BLADJ生成的进化树中含有singletons, 也就是进化树中某一个节点下面, 只有一个节点。

参见Phylocom 的例子, Phylocom-4.1\example_data ,里面有详细的说明。

为什么R不能读取Phylomatic生成的进化树?

提问

我在用R读用Phylocom拟好的带枝长的进化树out.tre的时候出现错误如下:

1
> tr <- read.tree("out.tre")错误于read.tree("out.tre") : The tree has apparently singleton node(s): cannot read tree file.Reading Newick file aborted at tree no. 1

在网上没有查到对应的解决办法,于是尝试去掉最外层括号和euphyllophyte,仍然提示相同错误。后来我用在线Phylomatic和davis带枝长的newick文件直接拟合出带枝长的进化树Phylomatic_newick.txt,改文件名后缀为.tre,用R读取时又提示相同错误:

1
>tr <- read.tree("Phylomatic_newick.tre")错误于read.tree("Phylomatic_newick.tre") : The tree has apparently singleton node(s): cannot read tree file.Reading Newick file aborted at tree no. 1

我现在不知道该怎么办了。你能帮我看下是什么问题么?

回复

ape程序包是不能读取含有singleton节点的进化树的。一般来说,进化树内的任何一个节点,都应该至少有两个分支。而 Phylomatic软件生成的进化树,如果在建树时没有选择clean,就会出现在很多一个节点下, 只有一个子节点的情况。 带有singletons的newick进化树,很多软件都是不能处理的,常见的包括ape, FigTree, MEGA等。

Phylomatic建树 Singletons问题

提问

我在用Phylomatic建树的操作过程中遇到2个问题,向您请教:

  1. 能生成没枝长的系统树,并能在treeview中读取;
  2. 生成的有枝长的系统发育树out.tre文件在treeview中打不开,提醒是file is not recognised tree file或者extra pair of parentheses;

附件是我在操作过程中用的物种信息及相关的文档,请指教。

回复

由于Phylocom BLADJ算法在计算中, 引入了很多节点, 而每个节点下只有一个分支,就构成了所谓的Singletons。 而在进化树的定义中, 只有一个节点的分支, 是不允许的, 很多软件是不支持这样的进化树的。 例如ape, Figtree等, 都不支持拥有singleton的进化树。

1.能生成没枝长的系统树,并能在treeview中读取;

基于物种名录,Phylomatic生成的进化树,选择clean,是没有singleton的, 故可以读取, 并且绘图。

2.生成的有枝长的系统发育树out.tre文件在treeview中打不开,提醒是file is not recognised tree file或者extra pair of parentheses;

经过BLADJ拟合枝长之后, 生成的进化树, 因为含有Singletons, 所以不能读取。目前只知道Dendroscope可以绘制含有Singletons的进化树。

R软件在群落系统发育分析中的应用

学习R的入门资料

提问

对于学习R,有些什么文献或资料可以推荐的吗?

回复

建議參考 E. Paradis的 Analysis of Phylogenetics and Evolution with R

R 软件怎样为每个样方建立进化树?

提问

假设我进行了100个植物样方的调查,共记录植物物种500种,根据调查记录物种建立了500个种的谱系树,怎样根据这个总的谱系树来建立每个样方的谱系树(subtree)呢?应该用R的什么包?

回复

如果真是需要建立每个样方的谱系树, 则用ape程序包的drop.tip 函数, 从总体的进化树中, 去除掉该样方中没有出现的种即可。

提问

但这样的话就需要每个样方单独做。是否还有批量处理的方法呢?

回复

用for 循环, 每个小样方单独做。

怎样计算物种之间的系统发育距离?

提问

想请教您一个有关植物谱系树的问题。我们有三个物种(木荷、小叶青冈、栲树),想知道其谱系距离,所以用Phylocom软件的bladj来弄含枝长的谱系树,便能把phylo文件中的内部节点和年龄整合到谱系树中,我想问一下这里的ages文件中三个物种的年龄怎么来确定呢?(我用软件自带的ages文件里定义的年龄,并没有找到我需要的物种),感谢帮助。

回复

按: 提问人并不需要知道ages文件是怎么来的, 他想了解的是如何计算物种之间的系统发育距离。

Phylocom 和 Phylomatic建立的进化树是不能用来估计同一个科内部的物种系统发育距离的。 这是因为其给出的年龄为科的起源时间,而科下各属、种均没有足够的时间信息, 所以Phylocom的BLADJ算法自动将科以下的时间三等分。 这种算法在进化树覆盖很多距离很远的分类单元时可以近似认为是合理的。 但是在物种很少,且系统发育关系很近时则是非常不合理的。

你提到的三个种分科如下:木荷(Schima superba, Theaceae)、小叶青冈(Cyclobalanopsis myrsinaefolia, Fagaceae)、栲树(Castanopsis fargesii, Fagaceae)已经包含在 David C. Tank等人的进化树中。 该树的枝长为分化时间。可以用R获取。

附件中是相应的R脚本, 数据文件和结果。供参考。

1
library(ape)tree <- read.tree("Vascular_Plants_rooted.dated.tre")#### https://github.com/ropensci/rgbif_mcglinn/blob/master/PhylogeneticResources/Vascular_Plants_rooted.dated.tretips <- tree$tip.labeltips.to.delete <- tips[!tips %in% c("Schima_superba", "Quercus_myrsinifolia", "Castanopsis_fargesii")]tree2 <- drop.tip(tree, tips.to.delete)plot(tree2)taxa.dist <- cophenetic(tree2)write.csv(taxa.dist, "taxa.distance.csv")write.tree(tree2, "tree2.tre")

根据已有的大型进化树,能够获得只有部分分类单元的进化树?

提问

比较大的系统发育树里能否挑选出部分物种,重新构建系统发育树呢?新构建的系统发育树能否通过Phylocom软件计算其多样性等相关变量呢?

回复

如果当前的进化树是有枝长的newick格式的进化树(一定要保证枝长表示的是分化时间), 要选出部分的种类,可以先用R软件ape程序包的read.tree读取进化树, 之后用drop.tip() 函数去掉不需要的物种。

新的系统发育树可以用Phylocom软件计算PD, comstruct, phylobeta等

R怎样调用Phylocom?

提问

想问下R调用Phylocom要大概如何做?sandel的包是不是PhyloMeasures包?但是我在文件夹中test.Phylocom.R文件中,不知道具体求betaMNTD和MNTD函数格式是什么?

我在里面原始文件是不是用

1
source("Phylocom.R")par(ask=TRUE)a <- readsample("sample")library(picante)p <- read.tree("pruned.tre0")#或者用 /p <- readphylo("pruned.tre0")

回复

可以直接使用

1
system("Phylocom pd -s sample3 -f pruned.tre0 -m 0 -r 9999 -a>pd.output.txt")system("Phylocom pd -s sample3 -f pruned.tre0 >pd.txt") system("Phylocom comstruct –s sample3 -f pruned.tre0 -m 0 -r 9999 -a>mpd.output.txt")system("Phylocom comstruct –s sample3 -f pruned.tre0 -m 0 -r 9999 -a -v>mpd.output.txt") system("Phylocom comdist –s sample3 -f pruned.tre0 -m 0 -r 9999 -a -n>ses.betampd.output.txt")system("Phylocom comdistnt –s sample3 -f pruned.tre0 -m 0 -r 9999 -a -n>ses.betamntd.output.txt")

但是如果直接运行Phylocom的内存不够, 在R中调用Phylocom仍然会内存不足的问题。 如果用picante或者PhyloMeasures程序包,请一定要按照函数的说明准备输入的数据。

怎样将进化树导入R?怎样使用Phylocom?

提问

我将树以newick的形式导进去后无法进行后面的分析,我也不清楚像样方数据怎么输到R中。说明文件中的例子我操作了一次,也成功了,但Phylocom是如何输入进去的我不清楚。您能否教我使用这个程序包,举一个三、五个样方的例子?

回复

read.tree读取多棵进化树

提问

如何一次性地读入多个.tre或.nex格式的文件到R的一个list中?

回复

ape的read.tree返回值是list,可以读取多棵进化树,可参考如下命令:

1
read.tree(file = "", text = NULL, tree.names = NULL, skip = 0, comment.char = "#", keep.multi = FALSE, ...)

R中的距离矩阵怎样转换为data.frame?

提问

我这边有两个100×100的对角矩阵,一个是betaNTI值,同时我想和样点间pH的差值比较,dist(data$ph),以一个散点图的形式呈现,但是我不知如何通过R把他们的所有距离一一对应起来?我对循环不熟df <- data.frame()不知道如何能把这个distz转换成一列向量啊?大概应该有5050值吧?

1
for (i in 1:99){    t <- ntinew[((i+1):100),i];    df <- rbind(t[i])}df

回复: 可以先将对角线的值设为0,然后转换成dist类型的距离矩阵,最后用simba程序包的liste函数,将其转换为data.frame即可。

picante

运行picante下标出界

提问

我建立了一个树Phylo2.txt;同时有一个群落data2.txt。我计算能得到PD,但是我计算MPD或者MNTD时,却显示是下标出界,我好久都找不出原因。我现在把所有的东西都简化了,还是找不出原因,不知您能不能给帮忙解答一下!

回复

下标出界很可能是进化树中的物种数与群落中的物种数不匹配造成的。需要将两者的名称完全对应起来,不能一个多于另一个。用Phylocom计算就可以发现这个问题了。

Phylocom的NRI和picante包的ses.mpd()哪个更准确?怎样用Phylomatic?

提问

  1. 我用Phylocom的数据进行练习,发现Phylocom软件计算的NRI值跟我用picante包ses.mpd()计算的值,差了一个负号,而且两者的值也不太一样,是不是因为Phylocom计算结果比用picante包的结果更精确呢?有这样的说法吗?
  2. 在Phylomatic 中,无论有没有勾选clean,按照练习的步骤在Phylocom 中进行练习,然后并没有得到结果,我不知道我是哪里出错了。

回复

Phylocom计算的是NRI, picante计算的是SES.mpd,两者符号相反。picante和Phylocom的结果都是可以使用的,在精确程度上, 并没有什么明显区别。

结果绝对值的差异主要是来源于随机化过程,在R中, 可以设定随机数种子, 保证每次获得的随机数序列都是相同的。 但是在Phylocom中似乎不能设定,因此, Phylocom每次运行的结果会有一定的差异。

第二个问题,很可能是你的命令设定错了。 这跟是否勾选clean没有什么关系。 也可能是你的sample的格式有问题, 或者sample中的物种名与进化树中的物种名不能完全匹配。具体要看Phylocom在运行时给出什么提示。

picante中sample和tree的格式

提问

我最近在学习R的程序包picante分析PSV。我用lm.str()打开R自带的sample和tree以后,仍然不太明白可以用R进行分析的sample和tree的具体格式。我原来的sample格式都是对应Phylocom软件建的。

回复

sample 的格式, 参见

1
data(Phylocom)Phylocom$samplePhylocom$phylo

sample可以由 picante程序包的 sample2matrix() 函数户获得, phylo可以由 ape程序包的 read.tree() 获得。

picante计算PD以及SES.PD

提问

我尝试着用R软件使用您的代码分析我的野外调查数据时,当运行到代码

1
pd_red <- pd(samp = mat, tree = tree, include.root=TRUE)

时,发生以下错误:

1
“Error in phy$edge[sndcol, 2] <- newNb[phy$edge[sndcol, 2]] <- (n + 2):(n +: number of items to replace is not a multiple of replacement lengthIn addition: Warning message:In newNb[phy$edge[sndcol, 2]] <- (n + 2):(n + phy$Nnode) :number of items to replace is not a multiple of replacement length”

不知道您在使用过是是否有这样的情况,一般是什么原因引起这样的错误呢,我应该怎么排除啊。

回复

我的电脑上运行没有问题。 我的是 64bit, Win10. 脚本和结果参见附件。

1
setwd("C:\\Users\\jlzhang\\Desktop\\experiment0310")library(picante)dat <- read.table("sample", header = FALSE)mat <- sample2matrix(dat)tree <- read.tree("phylo")#### Compare the tip labels wpd_red <- pd(samp = mat, tree = tree, include.root=TRUE)ses.mpd(samp = mat, dis = cophenetic(tree), null.model="taxa.labels" )

为什么picante的ses.mpd和Phylocom的NRI符号相反?

提问

我随机选的物种和随机放置不同的样方中所进行的练习,用picante包计算它们的谱系结构。然后软件求得的RNI值,跟我用公式计算的值数值是一样的,但是公式求得值是负数呀,我想问下这两个结果都是一样的吗?

回复

picante包计算出来的是ses.mpd或ses.mntd。Phylocom计算的是NRI或NTI。两者符号相反。

应该用NRI还是SES.mpd?

提问

如果根据picante包计算的结果,代入这个公式的话,结果为负值-0.3936901,图中的mpd.obs.z是正值,picante包里的说明是这个mpd.obs.z相当于NRI值,这样的话最后我是取哪个值呢?

回复

取哪个值都可以。 这两个指数只相差一个负号。 引用正确的参考文献就可以了。 如果是用Phylocom计算的, 还是用NRI,如果是用picante计算的,建议用SES.mpd

用plantlist程序包统计科、属、种数目与生成植物名录

1 背景

考察报告中,植物名录是很重要的,而编写植物名录,统计植物的科、属、种等虽然并不复杂,但是非常繁琐,有时野外考察可能只用一两天,而编辑和校对植物名录可能需要数天时间。

plantlist程序包的count_taxa()函数可十分方便地统计科、属、种的数目,而make_checklist()函数可按照一定要求生成markdown格式的植物名录,该文件可用Rstudio或者pandoc等软件转换为html、docx、 pdf、 tex等多种格式。

本文简要介绍这两个函数的用法。

1.1 问题一. 现有若干植物中文名,请统计这些植物出现在多少个科?多少个属?每个科、属下各有多少个种?

解析:给定植物中文名,为了查明科、属、种的数目,可以按照以下思路解决:

  1.  去掉重复的中文名
    
  2.  去掉《中国植物志》等数据库中不能匹配的中文名
    
  3.  查询每个种在《中国植物志》接受的拉丁学名以及科、属
    
  4.  科名现在一般只按照APG系统的科名(APG     III或者APG     IV)
    
  5.  提取拉丁学名中的属名
    
  6.  分别对科、属、种的出现情况进行汇总
    

1.2 问题二. 现有若干植物中文名,请按照系统发育顺序生成植物名录,要求科按照系统发育顺序排列,属和种分别按照字母顺序排列

解析: 植物名录是对某地所出现所有植物的编目,常包括几百种甚至上千种。正式出版的植物名录,一般按照类群的系统发育顺序排列,从大类群上来看,按照:苔藓植物、蕨类植物、裸子植物、被子植物的顺序排列。其中,蕨类植物、裸子植物、被子植物都已经有基于分子系统学证据排列的科顺序号。科以下等级,如果是地区等级的名录,常按照属名的字母顺序排列。如果是类群专著,一般是按照类群内系统发育顺序,该顺序多是植物分类学家按照自己的观点排列的,由于多反映个人观点,有时候争议较大,这里不针对某一具体类群(例如菊科)的族、属、系、组、种的排列顺序深入讨论。为了便于查询,同时方便用计算机自动生成名录,这里,属和种按照字母顺序排列。

具体来讲,可按照如下思路生成名录:

  1.  用`plantlist::CTPL()`函数查询植物的科、属、种、分布、濒危等级等信息
    
  2.  标本引证信息可通过`merge`函数添加到`CTPL`的查询结果上(本文示例未提供标本引证)
    
  3.  提取名录中出现的科、属、种,并按照系统发育顺序排列(具体参见`CTPL`查询所得的科名顺序号)
    
  4.  遇到类群如苔藓植物、蕨类植物、裸子植物,需要标注在markdown文档中
    
  5.  每个类群下,按照科名循环;每个科下,按照属名循环;每个属下,按照种名循环。这样可以确保种中文名、学名以及物种对应的信息(生境、IUCN等级、分布等)以正确的顺序出现。
    
  6.  在植物名录不需要显示太多内容时,要减少相应信息的显示,为此可设定不同主题(theme),控制显示内容。
    

2 代码

2.1 安装plantlist程序包

本文介绍的两个函数是plantlist程序包在0.6.0以后增加的,因此使用旧版本plantlist的用户也需要更新。

注意plantlist的最新版本只保存在github (https://github.com/helixcn/plantlist), 请用以下命令安装。

1
2
## 安装plantlist## 版本 > 0.6.1## 
devtools::install_github("helixcn/plantlist")

2.2 加载程序包

1
2
3
setwd("/Users/jinlong/compile_checklist/") 
library(plantlist)library(rmarkdown)
rm(list = ls())

2.3 用count_taxa()统计科属数目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 植物名species_names <- c("西康玉兰", 
"肥肉草",
"野牡丹",
"厚朴",
"金缕梅",
"黑水银莲花",
"连香树",
"牛膝菊",
"三国演义",
"华南紫萁22",
"槲蕨",
"江南卷柏",
"马尾松",
"白发藓",
"提灯藓",
"红豆杉",
"野牡丹",
"毛稔","阴香",
"赤楠","红鳞蒲桃",
"山蒲桃","卫矛叶蒲桃",
"黑壳楠","红果山胡椒",
"黄樟","乌药")
count_taxa(CTPL(species_names, print_as_list = FALSE))
## Duplicated taxa names have been removed:
## 野牡丹
## Warning in CTPL(species_names, print_as_list = FALSE): Taxa: 三国演义, 华南紫萁22, 毛稔
## could not be recognized.
## $NO_OF_FAMILIES## [1] 14
##
## $NO_OF_GENERA
## [1] 16
##
## $NO_OF_SPECIES
## [1] 23
##
## $NO_OF_FAMILIES_BY_GROUP
## group no_of_families
## 1 2
## 2 2 Ferns and lycophytes 2
## 3 3 Gymnosperms 2
## 4 4 Angiosperms 8
##
## $NO_OF_GENERA_BY_GROUP
## group no_of_genera
## 1 2
## 2 2 Ferns and lycophytes 2
## 3 3 Gymnosperms 2
## 4 4 Angiosperms 10
##
## $NO_OF_SPECIES_BY_GROUP
## group no_of_species
## 1 2
## 2 2 Ferns and lycophytes 2
## 3 3 Gymnosperms 2
## 4 4 Angiosperms 17
## ## $NO_OF_GENERA_BY_FAMILY
## family no_of_genera
## 1 Asteraceae 1
## 2 Cercidiphyllaceae 1
## 3 Dicranaceae 1
## 4 Hamamelidaceae 1
## 5 Lauraceae 2
## 6 Magnoliaceae 1
## 7 Melastomataceae 2
## 8 Mniaceae 1
## 9 Myrtaceae 1
## 10 Pinaceae 1
## 11 Polypodiaceae 1
## 12 Ranunculaceae 1
## 13 Selaginellaceae 1
## 14 Taxaceae 1
##
## $NO_OF_SPECIES_BY_FAMILY
## family no_of_species
## 1 Asteraceae 1
## 2 Cercidiphyllaceae 1
## 3 Dicranaceae 1
## 4 Hamamelidaceae 1
## 5 Lauraceae 5
## 6 Magnoliaceae 2
## 7 Melastomataceae 2
## 8 Mniaceae 1
## 9 Myrtaceae 4
## 10 Pinaceae 1
## 11 Polypodiaceae 1
## 12 Ranunculaceae 1
## 13 Selaginellaceae 1
## 14 Taxaceae 1
##
## $NO_OF_SPECIES_BY_GENUS
## genus no_of_species
## 1 Anemone 1
## 2 Cercidiphyllum 1
## 3 Cinnamomum 2
## 4 Drynaria 1
## 5 Fordiophyton 1
## 6 Galinsoga 1
## 7 Hamamelis 1
## 8 Leucobryum 1
## 9 Lindera 3
## 10 Magnolia 2
## 11 Melastoma 1
## 12 Mnium 1
## 13 Pinus 1
## 14 Selaginella 1
## 15 Syzygium 4
## 16 Taxus 1

2.4 用make_checklist生成植物名录

生成的文件为markdown格式,请参考

  •  https://rmarkdown.rstudio.com/index.html
    
  •  https://zh.wikipedia.org/wiki/Markdown
    
1
checklist_dat2 <- CTPL(species_names, print_as_list = FALSE)

2.4.1 简洁版,只列出引证的标本

1
2
3
make_checklist(checklist_dat2, 
outfile = "checklist_simple.md",
theme = "simple")

2.4.2 复杂版,尽量列出数据库已经有的信息

1
2
3
make_checklist(checklist_dat2, 
outfile = "checklist_complex.md",
theme = "complex")

2.4.3 极简版,只列出中文名和拉丁名

1
2
3
make_checklist(checklist_dat2, 
outfile = "checklist_minimal.md",
theme = "minimal")

2.5 markdown源代码

图1. 植物名录的Markdown源代码

2.6 用rmarkdown程序包编译md文件,生成名录

markdown文档既可以用rmarkdown程序包编译为html格式,也可以用pandoc转换为docx、pdf等。

2.6.1 只显示标本引证的Simple主题

1
rmarkdown::render("checklist_simple.md", encoding = "UTF-8")

图2. Simple主题

2.6.2 尽量信息物种信息的Complex主题

1
rmarkdown::render("checklist_complex.md", encoding = "UTF-8")

图3. Complex主题

2.6.3 只显示中文名和学名的Minimal主题

1
rmarkdown::render("checklist_minimal.md", encoding = "UTF-8")

图4. Minimal主题

参考资料

  •  THE     ANGIOSPERM PHYLOGENY GROUP. 2009. “An Update of the Angiosperm     Phylogeny Group Classification for the Orders and Families of     Flowering Plants: APG III.” Botanical Journal of the Linnean     Society 161 (2): 105–21.
    
  •  Christenhusz,     M., Zhang, X. C., and Schneider, H. (2011). A linear sequence of     extant families and genera of lycophytes and ferns. Phytotaxa.     19:7-54
    
  •  Christenhusz,     M., Reveal, J., Farjon, A., Gardner, M. F., Mill, R. R., and Chase,     M. W. (2011). A new classification and linear sequence of extant     gymnosperms. Phytotaxa. 19:55-70
    
  •  Haston,     E., Richardson, J. E., Stevens, P. F., Chase, M. W. and Harris, D.     J. (2009). The Linear Angiosperm Phylogeny Group (LAPG) III: a     linear sequence of the families in APG III. Botanical Journal of the     Linnean Society, 161(2), 128-131.
    
  •  Liu     Bing, Ye Jianfei, Liu Su, Wang Yuan, Yang Yong, Lai Yangjun, Zeng     Gang and Lin Qinwen(2015). Families and genera of Chinese     angiosperms: a synoptic classification based on APG III.     Biodiversity Science. 23(2), 225-231.
    

那些生态学可能会用到的工具软件

本文列出部分工具软件,涵盖论文写作、 排版、图片编辑、编程、文件管理、数据整理等方面,以开源软件为主,供感兴趣的老师同学参考。

文献检索

文献阅读

文档编辑

  • Libre Office

    https://www.libreoffice.org/ 一套开源的Office办公软件套装,对中文支持一般,如果没有购买MS Office,编辑Word文档一般用它

  • WPS Office

    www.wps.cn/ WPS,国产办公软件,现在已经有Windows、Linux以及Mac版本

语法和拼写检查

  • Grammarly: Free Writing Assistant

    https://www.grammarly.com/ 有Office插件、 浏览器插件(如Chrome、Firefox、Safari版本)以及单机版三种。又分为免费版和专业版,免费版可检查拼写错误以及低级语法错误,收费版能提出一些更好的写作建议。

记事

文本编辑器

  • NotePad++

    https://notepad-plus-plus.org/download/ 曾是Windows下最流行的文本编辑器,打开文件速度非常快。支持多种语言的代码高亮显示,通过插件还可将文档导出为多种格式,现在用户仍然非常多,不过很多人已经开始用VS code

  • VS code: Visual Studio Code

    https://code.visualstudio.com/ 微软和开源社区共同维护的文本编辑器,可编辑各种常见编程语言的源代码以及书写Markdown文档等,主要依靠插件提供功能。

编程语言

R

  • R

    https://www.r-project.org/ 统计学、经济学、语言学、生物信息学和生态学等领域非常流行的统计语言

  • Rstudio

    https://www.rstudio.com/ Rstudio公司开发的R语言IDE,集代码编辑、帮助查询、debug、绘图、编译RMarkdown文档等为一身,是学习R语言必备的工具

  • Rtools

    https://cran.r-project.org/bin/windows/Rtools/ 是R-Core Team维护的编程工具套装,Windows用户如果要编写R程序包, 必须要安装这套软件。Rtools为Windows提供了多种Linux命令。

Python

  • Python

    https://www.python.org/ 大名鼎鼎的人工智能编程语言。对于数据分析师来说,Python和R是两门必须要掌握的语言

  • Anaconda

    https://www.anaconda.com/ Python的数据分析套装, 集成了SciPy、NumPy、PANDAS等多种程序包,只需在终端输入conda update --all 即可完成所有程序包的更新。

版本控制

  • Git

    https://git-scm.com/ 最流行的版本控制软件,应用也非常广。作者是Linux内核的开发者 Linus Torvalds。github、gitlab等网站可以和git无缝衔接。

  • TortoiseSVN

    https://tortoisesvn.net/ SVN的诞生比git要早,部分网站,如R-forge仍然在使用SVN作为版本控制工具

字典软件

TeX排版

  • MikTeX

    https://miktex.org/ Windows版本的Tex, 用户只需安装基本版,编译文档时,若程序包缺失会自动安装

  • MacTeX

    www.tug.org/mactex/ Mac版本的TeX

  • TeXLive

    https://www.tug.org/texlive/ TeX的另一个完整版本,支持多种操作系统

  • TeXWorks

    TeX的跨平台编辑器,一般用来编译PDF,如生成幻灯片等, MikTeX、MacTeX、TexLive等套装都已经内置了TeXWorks。

公式编辑

图片编辑

PDF文档合并与转换

  • PDFsam

    https://pdfsam.org/zh/ 用于分割和合并PDF文件

  • pandoc

    https://pandoc.org/ 用于将Markdown源代码转换为html、pdf、word、ppt、epub等多种格式,也支持多种格式之间的相互转换。

收发邮件

收取RSS研究动态

  • RssOwl

    www.rssowl.org/ 新文章上线时,学术期刊一般会同时更新RSS动态,通过RSS浏览器即可查看网站的更新,RssOwl和下面的SharpReader功能类似,界面也非常像收发邮件的客户端,当有新的论文上线时会给出提示

  • SharpReader

    http://sharpreader.net/ 参见RssOwl的介绍

文献管理

  • Zotero

    https://www.zotero.org/ Zotero是非常著名的文献管理软件,可以从PDF中自动提取文档的DOI,然后为PDF自动填入Meta信息。可管理10000条以上的记录。

  • Mendeley

    https://www.mendeley.com/ Mendeley能通过PDF文档的DOI获取PDF的meta信息,也能够智能识别PDF中的标题、作者等信息,对中文文档的支持好过Zotero。

  • JabRef

    www.jabref.org/ 如果需要管理Tex文献库,可考虑用JabRef。JabRef也可自动提取PDF中的meta信息

单机版文件检索

文件下载

共享文档

音频与视频

远程管理

文件压缩

文件备份与同步

删除重复文件

物种分布数据整理

  • OpenRefine

    https://openrefine.org/ 批量处理数据表中的拼写错误等,是数据整理的重要工具

  • GEOLocate - Software for Georeferencing Natural History Data

    www.geo-locate.org/ 其实是一个网站,上传文档后,在地图上为某一条分布记录提取经、纬度,然后再将记录下载到本地

编辑GPS和地理标记

GIS


整理不易,如果您觉得本文有用,别忘了分享给有需要的人。提前祝大家在2019年,新年快乐,家庭和美,工作一帆风顺!