Friday, May 30, 2014

Chrome Shortcuts


  • Toggles the bookmarks bar on and off.
    ⌘ - Shift - B


  • Opens the bookmark manager..
    Option - ⌘ - B


  • Select the current link address..
    ⌘ - L
    L is for link.


  • Open the Download Tab..
    ⌘ - Shift - J


  • Change to Next or Previous Tabs
    Option - ⌘ - Left Arrow or Right Arrow


  • Bookmark All Open Tabs
    ⌘ - Shift - D




If you want to modify the default shortcuts, follow this youtube video.

Chrome 鼠标快捷切换Tab

对一个经常在浏览器中开着无数tab的人,快速切换非常必须。
用macbook pro的时候可以用Jitouch 设置手指左敲或右敲来实现。
在台式机系统,因为没有触摸板,一个比较好的替代是用鼠标滚轮的左拨或右拨来触发快捷键 COMMAND + OPTION + LEFT (RIGHT)。 另外CONTROL + Tab 也可以切换,只不过是单行循环的。没有左右切换方便。
具体设置可以在Logi control center里修改。



Thursday, May 29, 2014

Gencode and Fantom Project

Gencode 是什么

Gencode是Encode Project 框架内的一个旨在对人类和小鼠基因组进行全面注释的项目。目前人类 Gencode 最新更新是V19,此前两个比较大的更新是V7 和 V10。
使用时以具体需要为准,例如Brain Span的data 全部以Gencode 10 为reference 生成。

Gencode 的数据可以以GTF 格式下载,也可以用 MySQL,或者Perl,Biomart 等取得。
关于GTF的说明,可见这里。GTF 是 Generic Feature Format 的缩写。
GTF 文件可以在R 中 用GenomicFeatures package 转换为TranscriptDb 对象。

Fantom Project :

Fantom project 是以RIKEN为核心,全面识别不同组织,细胞株的转录组,增强子,启动子的基因组项目。这个项目中广泛使用了 CAGE 方法,提供了高分辨率的细胞调控元件的序列。

Tuesday, May 27, 2014

Whatsapp 通话统计

拿R 统计一下whatsapp的发消息的时段和频率。


首先导出whatsapp通话记录,whatsapp可以发送记录到信箱,下载保存。
在命令行下提取前两行
cut -d " " -f 1,2  WhatsApp\ Chat.txt > ~/Desktop/whatsappFeb-May.txt


进入R
setwd("~/Desktop")
text <- read.table("whatsappFeb-May.txt", head=FALSE, as.is=TRUE, sep="\t")
text$V2 <- strptime(text$V1,"%Y/%m/%d %H:%M:%S:") #将字符串转换成时间格式
attach(text)


# 月份的统计
table(format(V2,format="%B"))
April  February  March     May
3194      2499           2370    3835

# 周一到周日的统计
table(format(V2,format="%A"))
Friday Monday Saturday Sunday Thursday Tuesday Wednesday
1316     1478         2358           2633         1531          1084           1498

# 按小时的汇总
table(format(V2,format="%H"))
00 01 02 07 08 09 10 11 12 13 14 15 16 17
1156 208 7 30 738 67 145 224 422 678 775 563 311 528
18 19 20 21 22 23
510 753 617 1215 1387 1564

统计结果如下,周末消息最多,其次周四,周二最少
晚上10点至12点消息最多
每月消息数有所上涨。

但是上边可以看到星期和月份的顺序并不是按实际顺序排列的
因此改为数字表示
table(format(V2,format="%m"))
02       03        04      05
2498 2370    3194   3835

table(format(V2,format="%u")) # weekday

1         2          3          4            5           6           7
1478   1084   1497   1531    1316   2358    2633

Sunday, May 25, 2014

微软 Surface Pro3

David Pogue 跳槽到Yahoo 后一直没有关注过。Google 搜 Surface Pro3 的时候看了这哥们的最新专栏,真是太有趣了。置顶的是一个视频,Pogue在其中人格分裂,一人模仿了Mac vs. PC的桥段。诙谐而且以夸张的形式突出了surface的优点(尤其对于Ipad)。链接在此。视频的最后还有Yahooooo的声音,多年前这是主页点击yahoo标识中感叹号的一个小彩蛋,yahoo改版后就再也没找到。



看完总结一下,我觉得surface 是一个很有吸引力的产品,硬件和重量都很好,支撑架可以任意角度放置,更重要的是可以运行windows程序 -而不是App。另外一点Surface是laptop和tablet的混合体。带两个设备出门太麻烦,买两台设备也要多花一份钱,与其如此还不如用surface 好了。此外觉得手写笔不错,不知道实际使用起来感觉如何。看的的确心痒,如果能把手头的Thinkpad T400卖掉,就换这个。

Friday, May 23, 2014

R apply family

R 的apply 类函数包括 apply, lapply, sapply, tapply, mapply 等。
这些函数经常被用来取代for loop 来进行矩阵,列表等的分割和计算处理。

首先谈 apply - apply 处理matrix 或者 array 的行或者列, 返回一个vector或者list.
基本使用为
apply ( x, 1, FUN)  对 x 的进行操作
apply ( x, 2, FUM) 对x 的进行操作

举例如下
m <- matrix(1:9,3,3, byrow=TRUE)
得到如下的一个矩阵
# 1 2 3
# 4 5 6
# 7 8 9
o1 <- apply(m,1,mean)
o1
[1] 2 5 8   可以看出来这个得到了每一行的平均值,第一行的平均为2,第二行为5,第三行为 8
同列也可以对列进行操作
o2 <- apply(m,2,mean)
o2
[1] 4 5 6




lappy 用来处理一个list,并且返回一个list

举例如下
l <- list(seq(1:5),seq(1:10),seq(1:25))
l
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 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

lapply(l,sum)
[[1]]
[1] 15
[[2]]
[1] 55
[[3]]
[1] 325




sapply 类似于lapply,但是返回一个vector 而非列表,在很多情况下便于阅读和后续处理,其实相当于unlist(lapply( x,FUN))
用sapply来处理上个例子
sapply(l,sum)
[1]  15  55 325
如果FUN运算的值是matrix的话,sapply会降解为list,举例说明
假设有如下list
l <- list(seq(1:4),seq(1:9),seq(1:25))
如果试图将list每一项转变为矩阵
首先定义函数
ToMatrix <- function(x){
root <- sqrt(length(x))
converted <- matrix(x,ncol=root,nrow=root,byrow=T)
return (converted)
}
z<-sapply(l,ToMatrix)
z

[[1]]
[,1] [,2]
[1,] 1 2
[2,] 3 4

[[2]]
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9

[[3]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
[5,] 21 22 23 24 25

str(z)
可以看到z 为list




tapply 用来处理含有factor的vector,tapply的第二项必须是factor

r<-c(1:100)
f <- rep(c("A","B","C","D"),each=25)
tapply(r,f,mean)
结果如下
A B C D
13 38 63 88




mapply 的用法为 mapply(FUN, …,  ... )
mapply的第一项是函数,后面省略号代表vector 或者list 的, 这些vector的每第N项都做为函数的参数传递到函数中。看起来很复杂,举例如下
fx <- function(x,y,z) { x+y^2+z^3}

首先定义一个函数,有三个参数x,y,z , 最后返回  x+y^2+z^3
假设有一个matrix m2
m2 <- matrix(1:6,2,3,byrow=T)
m2 如下两行三列
1   2   3
4   5   6

如果想对m2的每一列的值作为参数取得fx 的计算结果,就可以如下操作
mapply(fx, m2[,1],  m2[,2], m2[,3])
[1] 32   245

验证如下
1 + 2*2 + 3*3*3 = 1+4+27 =32
4 + 5*5 + 6*6*6 = 4+25 +216 =245

这个例子也可以用apply 来实现
apply(m2,1,function(x){x[1]+x[2]^2+x[3]^3})
[1]  32   245

2014-05 my playlist

Lady Antebellum – Just a Kiss
Rodney Atkins – Watching You
Lady Antebellum – Can't Stand The Rain
Randy Travis – Forever And Ever, Amen
George Strait – Living For The Night
Deana Carter – Strawberry Wine
George Strait – Amarillo By Morning
Big & Rich – Lost In This Moment
Bob Carlisle – Butterfly Kisses
James Taylor – Here Comes The Sun
Tim McGraw – Grown Men Don't Cry
George Strait – Living And Living Well
Simon & Garfunkel – The Sound of Silence
Johnny Cash – Ring Of Fire
George Strait – Amarillo By Morning - Live
Billy Joel – Piano Man
Kenny Rankin – Blackbird
Simon & Garfunkel – The Sounds of Silence
Richard Clayderman – Souvenirs D'enfance. 'Childhood Memories'
Elton John – Tiny Dancer
Billy Joel – Piano Man - 12 Gardens Live

R 自测 test -1


  1. vector, matrix, array, list, data frame 的区别。如何从不同subject提取值。

  2. attach, with 和 within 的区别

  3. as.is 和 stringsAsFactors 的区别。 如何在全局声明 as.is = True

  4. data frame 包含 A 和 B 两列,C是vector,是B列数值的子集。如何提取 data frame只含有C的行。

  5. Edit 和 fix 的区别

  6. apply, lappy, sapply, tapply 的区别

  7. 如何删除当前环境下所有objects

  8. str, class, mode 的区别

  9. par 中 mai 和 mar 的区别

  10. 如何关闭当前 graphic 窗口

  11. mtext中side line adj 的取值范围和意义

  12. as.data中 %d, %a, %A, %m, %b, %B, %y 和%Y 的含义

  13. sort 和 order 如何使用

Thursday, May 22, 2014

Piano Man

Piano Man 是 Billy Joel 的第一首单曲,在推出后的4年间并未受到广泛反响,但伴随Billy Joel的第5张专辑 The Strange热卖,此曲迅速走红并成为他的代表作。全曲以一个酒吧钢琴手的视角展开,记录了酒吧常客的人生众像,从回忆往昔的老人,失意的酒吧侍者到借酒派遣寂寞的生意人,意境丰富引人深思,并且旋律动人。

以下为歌词和一些注释。

It's nine o'clock on a Saturday
The regular crowd shuffles in
There's an old man sitting next to me
Makin' love to his tonic and gin¹ (Make love to tonic and jin 暗喻着享受,放松,tonic and jin 的正式叫法应为 jin and tonic,为了旋律需要,作者调转了顺序 )

He says, "Son, can you play me a memory
I'm not really sure how it goes
But it's sad and it's sweet and I knew it complete
When I wore a younger man's clothes²." (老人让钢琴手弹奏一首记忆的歌曲,他已经忘了大部分歌词,但却记得它激起的情感-当他还是年轻人的时候听到这首歌的感受)

La la la, di da da
La la, di da da da dum

Sing us a song, you're the piano man
Sing us a song tonight
Well, we're all in the mood for a melody
And you've got us feelin' alright

Now John at the bar is a friend of mine
He gets me my drinks for free
And he's quick with a joke or to light up your smoke
But there's someplace that he'd rather be
He says, "Bill, I believe this is killing me."3(为了躲避唱片公司的纠纷,Billy Joel 化名为Bill Martin在洛杉矶的一家酒吧驻唱)
As the smile ran away from his face
"Well I'm sure that I could be a movie star
If I could get out of this place"

Oh, la la la, di da da
La la, di da da da dum

Now Paul is a real estate novelist4 (Paul 是一个房地产商,但却想成为小说作者 )
Who never had time for a wife
And he's talkin' with Davy, who's still in the Navy
And probably will be for life

And the waitress is practicing politics
As the businessmen slowly get stoned5 (生意人已渐渐如醉)
Yes, they're sharing a drink they call loneliness
But it's better than drinkin' alone

Sing us a song you're the piano man
Sing us a song tonight
Well we're all in the mood for a melody
And you got us feeling alright

It's a pretty good crowd for a Saturday6 (Saturday在演唱会上常被stadium或演唱地地名取代,例如在东京演唱会,此句为It's a pretty good crowd for Tokyo)
And the manager gives me a smile
'Cause he knows that it's me they've been comin' to see
To forget about life for a while
And the piano, it sounds like a carnival
And the microphone smells like a beer
And they sit at the bar and put bread in my jar
And say, "Man, what are you doin' here?"7(隐含着酒吧常客对Billy Joel的期许和对他现状的惋惜)

Oh, la la la, di da da
La la, di da da da dum

Sing us a song you're the piano man8
Sing us a song tonight
Well we're all in the mood for a melody
And you got us feeling alright (在Billy Joel的演唱会,这一部分常常留给歌迷群唱)

随着年龄增加,Billy Joel 对Piano Man的演绎更加收放自如,出神入化,富有沧桑感的嗓音听起来更有韵味。演唱会的现场版因为歌迷的互动极具感染力。Piano Man好似一瓶经年的老酒,随着岁月的变化更加芳醇和醉人。