博文

吐槽

 呃啊bioconductor的GRanges包里,setdiff本来是不会去reduce区域的,不知道哪个版本给改成会合并的了,真的服了搞得我一堆核心函数要改。服了我自己写个函数处理吧

centos7分区和挂载ntfs硬盘

图片
ntfs是Windows系统的文件格式,centos上原本是不能直接挂载的,需要安装ntfs-3g才能进行硬盘的分区、格式化和挂载。 1、安装ntfs-3g (1)yum安装 yum install ntfs-3g (2) 源代码编译 很多源都没有ntfs-3g,yum安装提示No package ntfs-3g available,此时可以下载源代码安装。(笔者尝试安装最新版会报错,安装2017稳定版则成功) wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz tar xvfz ntfs-3g_ntfsprogs-2017.3.23.tgz cd ntfs-3g_ntfsprogs-2017.3.23/ ./configure make && make install 安装完毕后,可以运行ntfs-3g查看是否安装成功 2、格式化硬盘(非必须) 新硬盘通常需要格式化,如果硬盘没有分区还需要重新进行分区。格式化后硬盘内容会消失,请小心操作。通常用parted进行硬盘分区后,再用mkfs.ntfs进行格式化。 (1)查看能否识别硬盘 fdisk -l 可以看到硬盘名称、容量和分区等信息,如下图,硬盘名称为/dev/sdf,容量是8T,有一个分区,名称为/dev/sdf1。下图硬盘理论上可以直接进行第3步挂载了,但是如果是把硬盘先格式化成xfs格式,然后还想转回ntfs格式的话,就要进行格式化和分区了。 (2)格式化 超过2T的硬盘要改成gpt格式,并进行分区,如果没有分区的话,在mkfs.ntfs的时候就会出错。这里就分成一个区就行了。 # 添加gpt标签 parted /dev/sdf mklabel gpt # 硬盘分区 parted /dev/sdf mkpart primary 0% 100% (3)转ntfs格式 如果成功安装ntfs-3g,则mkfs命令就会出现ntfs这一类型 # 转为ntfs格式 mkfs.ntfs -f /dev/sdf1 # 查看分区结果 parted /dev/sdf1 print 查看结果如下,转格式成功 3、挂载硬盘 挂载ntfs硬盘需要使用如下命令 # 创建挂载文件夹 mkdir -p /MobileHDD_fuyou ...

Mastering shiny(一)基础篇

图片
 最近又要写app了,记录一下笔者认为的要点方便以后回顾,主要来自官方的 Mastering shiny 的Get started部分。PS:这本书习题答案在 这里 。 1、编写中的要点 1.1  使用响应表达式来减少代码重复 重复的代码,比如反复读取数据,会浪费算力,增加维护难度。传统的做法是单独使用一个变量来捕获input,或者使用函数来捕获计算。但是此处介绍了一个新的方法,即响应表达式—— reactive expressions 。 基本用法是用reactive({...})函数把你获取变量的代码包起来,他会在需要的时候更新。 server <- function(input, output, session) { # Create a reactive expression dataset <- reactive({ get(input$dataset, "package:datasets") }) output$summary <- renderPrint({ # Use a reactive expression by calling it like a function summary(dataset()) }) output$table <- renderTable({ dataset() }) } 1.2 中括号 如果render里有多行代码才需要加中括号。render中应该尽量减少计算。 1.3 UI和server输出的对应关系 textOutput()对应renderText()或renderPrint(),前者输出字符串,后者是R里的代码运行输出格式。 tableOutput()对应renderTable(),dataTableOutput()对应renderDataTable(),前者一般用于小的表格,后者表格可以交互。 plotOutput()对应renderPlot(),可以输出base、ggplot2和plotly等交互图。 2、前端——UI 2.1 Inputs shiny中有许多不同的输入函数可供使用,如 sliderInput() ,  selectInput() ,  textIn...

R is awsome

 https://www.sharpsightlabs.com/blog/why-i-still-love-r/ 骂matplotlib骂的太爽,It's a pain in the ass, kind of bullshit. 数据分析真的很需要可视化,以及及时方便快速的可视化,所以R是真的很方便,现在我已经形成这样的工作流了,开发软件之前先用R分析很多数据,确定好流程和参数之后,然后写成python版方便维护。 还有我特别喜欢R的数据结构(比如Rle,S4,tibble,GRanges等),当然这些可能并不是R的原创,或许是继承自其他语言,但是我在日常使用中很快地就会接触到并上手了,而且特别好用,大大提升数据分析的效率。 自认为用python也处理了很多数据写了不少应用,但是并没有机会接触到这些,应该说我没有遇到类似场景去思考数据结构,写python的时候我只是在思考如何实现某个功能,但是不可思议的是在用R的时候,我在入门没多久就已经在涉及这些了,做的事情都差不多的情况下,可能是R我不需要去思考如何实现功能,因为都有现成的函数,但是这些函数需要特定的数据结构,所以我得去学习,比如序列数据,就需要rle和range的数据结构作为输入输出。 数据整理的包R也特别的好用,还能很方便地搭一个交互平台,真的不要太棒。 Fantastic R! 我也想写个1w字小论文来论述R的好 PS:文中还提到了R的机器学习框架,有空去学一下https://www.tidymodels.org/packages/

Hadley Wickham的R语言编写规范

    最近要重写16年的R脚本,一查R语言编写规范(多源自谷歌),发现中文版和英文版的居然是相反的😂当年的规范也和现在不太一样了,为了解决其他语言用户认为的R语言太随便难度懂的问题,最近几年R编写规范更加趋向于和其他语言一致,而中文翻译的可能都是很多年前的规范,因而有所出入。   所以本文翻译自R语言大神Hadley Wickham整理的 tidyverse的R语言编写风格指南 (注: 非直译,有意译、补充和省略),希望能给中文用户提供一些帮助。当然,建议有条件的朋友直接阅读一手英文版,毕竟翻译水平有限,而且大神的风趣幽默俺是翻不出灵魂的~ 1 文件名 Files 1.1 R脚本的命名  Names   文件名最好用“.R”结尾,文件名 尽量简洁且见名知意, 用字母,数字,英文连字符“-”和 英文下划线 “_”组成。 # Good fit_models.R utility_functions.R # Bad fit models.R foo.r stuff.r   如果需要按照顺序运行R脚本(比如写shiny app,app会自动按照R文件夹里的文件顺序运行脚本),可以加数字做前缀。请注意文件名不要区分大小写,最好统一使用小写字母,因为有些系统是不区分大小写的。 00_download.R 01_explore.R ... 09_model.R 10_visualize.R 1.2 R脚本内部结构  Internal structure   在注释里使用一串英文连字符“-”或者“=”来区分不同功能的代码块,Rstudio可以识别这种注释,可扩展或隐藏注释之间的代码块,方便阅读。 # Load data --------------------------- # Plot data ---------------------------   此外,如果使用到R包,建议在文件的起始使用 library() 一次性导入,不建议把导入包的命令散布在不同的文件里或者加载隐藏的环境变量如 .Rprofile 进行包的加载。 2 R语法 Syntax 2.1 对象名  Object names   变量名和函数名均建议统一使用小写字母、数字、英...