Mac | 小型数据工作站 | 管理和维护 | Jupyter

2022年11月27日更新

这周刚到DFCI,需要重新配置自己的M1 Mac,内置硬盘只有512 GB,系统是最新版的Ventura,可能存在兼容性问题。

因为我还是以生信分析为主,所以不考虑Windows,另外因为有server,所以desktop没必要用Linux,Mac mini是性价比最高的选择,买新不买旧。

M1芯片的配套软件还没跟上,目前还是下载x86_64的软件,不知道后面有没有问题,我测试一段时间再来反馈。

教训:data transfer

我以前一直最喜欢的Dropbox突然不香了,最大的问题就是传输速率极慢,100 GB居然要几天,那还工作个毛线啊,我猜是我的Dropbox账号或者上传地点是HK,所以US这边提取那边的数据就很慢。但Onedrive似乎速度依旧,跟HK和US区域无关,就是他会默认再本地磁盘上一个备份。

我的Macmini是512GB的,这个真的是完全不够用,以后最少上一个1TB的,还得分次传输。

目前我还在适应DFCI的存储方案,关于以后的换工作,还是买个Lacie的10TB硬盘,随身携带过去比较方便,再也不想用cloud来同步超过500GB的文件了,太痛苦了

另一个教训就是分级,所有文件分三级

  1. 原始数据,如fastq,cellranger等的大概率不会调用的大文件;
  2. 处理后数据,如R,Python处理之后的data,这个会很可能被调用;
  3. 文档类,比如word的写作等产生的结果文件,这个调用得最频繁;

 

这里再来梳理一下我对新Macmini的配置,以后独立之后还会用到。

1. 数据存储方案

  • Dropbox
  • Onedrive
  • Lacie hard drive【格式化为最大传输速率格式】

2. 基本App【卸载不用的Mac App】

  • Chrome - keys,bookmarks,remote神器
  • Wechat
  • 印象笔记
  • Xmind
  • artpip
  • 搜狗输入法
  • Office
  • Adobe
  • 欧路Eubic
  • Zoom

3. 专业App

  • ITerm - dracula theme,PS1,选中复制,邮件粘贴
  • Sublime
  • Filezilla
  • Rstudio + 设置环境/Users/zhixinli/.Rprofile,.libPaths("/Users/zhixinli/R_lib_4")【用于R包开发】
  • Github desktop
  • Endnote【工作单位会提供正版】
  • lnkscape
  • Cytoscape
  • IGV

4. 远程

  • Chrome remote
  • Cisco VPN
  • Team viewer

5. 本地数据分析环境

  • miniconda
  • r4p3 env
  • R kernel,libPath,devtools
  • xcode-select --install
  • jupyter + 插件 + 远程配置
  • Mac ssh & jupyter config配置参照如下,可以家里写代码。

6. macOS基本设置:

  • brew,tree,vim
  • bash设置,不要用zsh,profile
  • 关闭系统自动更新【以入职时为标准,以后系统不要更新】
  • finder基本设置,标签合并,底部显示绝对地址
  • 无格式复制,参考自己文章:Mac复制粘贴文本时默认使用无格式模式
  • 开启远程ssh连接,系统设置里开启
  • 关闭自动休眠,节能设置

7. Server数据分析环境配置【配置更简单】

  • miniconda
  • r4p3 env
  • jupyter + 插件 + 远程配置

 

项目数据管理哲学

灵魂拷问
1. 如何防止系统随时间变乱,变得不受控制?

变乱的主要原因就是会手贱,没事就喜欢装新东西上去玩,导致系统变得越来越乱,最终出现问题时无从溯源。

案例:在github上看见一个百度网盘的破解软件,装上后,前期确实能用,后面百度封了bug,最终卸载破解软件时才发现系统里面被修改了,此后系统里就隐藏了一个未知的bug。

教训:不要随便装一些未知软件,真的有可能对系统造成不可逆的伤害。

 

2. 如何防止文件越来越多,最终无法管理?

做科研,数据是不断积累的,结果也在不断积累,如果只是有数据就往里添,有结果就不断积累,那最终肯定会乱到无法管理。

而且多个项目之间的数据可能是交互的,这样就让代码更加难以管理。

策略:多思考,多整理,不常用的文档尽快打包整理,备份到历史库,不要再放在工作目录里。

 

实战技巧:

  • 数据、代码和结果按项目,分目录管理;(没有项目,数据就没有意义)
  • jupyter则负责整合三者,最好不用绝对路径,保证代码能在项目目录下顺利执行;(高效迁移)
  • 定期整理数据、代码和结果,保留最核心的,最为备份档案;(不定期整理,就会越来越乱)
  • 每天随手写项目的核心进展和总结,方便后期的回顾和溯源;(项目的log文件至关重要)
  • 结束的项目(文章已发表)需要做一个系统的存档(数据、代码和结果,三位一体);

这样,即使一年做十几个项目都不会觉得混乱。

 


基本原则:

选择一个可以用十年的系统,不要随意更换系统。系统的软件都不要用最新的,用次新的,就是稳定版!【针对纯Server】

让系统尽可能简单,不要随意添加无意义的内容。内核和编译器层面的的东西,自己不懂就不要乱动。

能少装软件就少装,太多无关软件会损害系统稳定性,更不要装类似360的系统清理工具。 

工作的电脑只用来工作,笔记本可以拿来娱乐。

系统选择:

可以用mac,也可以用Linux,但是绝对不能用windows(在没有server的情况下)

 

工具环境管理:

chrome + 同步书签 + 远程访问 + 自启动

Dropbox + 自启动(云平台分为双向同步和单向上传,dropbox最简单)

google drive + 自启动(Google的好处是可以在网页上处理文档,真正的云平台,其实是shit)

自启动要保证电脑一开就能远程访问,sudo shutdown -r now

filezilla

conda + python

R R-3.6.1.pkg + devtools + xquartz

jupyter notebook + open extensionjupyter_contrib_nbextensions 设置远程访问

Cisco配置VPN

Mac系统打开ssh login

开启jupyter密码配置
jupyter notebook --generate-config
vi /Users/zhixinli/.jupyter/jupyter_notebook_config.py

ifconfig查看inet网址

在本地测试成功

IRkernel 必须先把上面两个先装好

xcode + macOS_SDK_headers_for_macOS_10.14 ( cd /Library/Developer/CommandLineTools/Packages/ ) + Xcode Command Line Tools ( xcode-select --install  )

学校提供的免费office 365下载

 

无格式复制,系统设置里开启

clang/gcc/java (有需要时再装)

inkscape 最新版 + 画布适应设置,点菜单“文件--->文档属性”(shift-ctrl-d),然后在“页”中设置页面的大小或进行调整与绘图内容的匹配。

 

adobe acrobat open new file in new tab,2015版本不支持,2017版本支持。

2022年02月13日

单独提一下,adobe acrobat非常恶心,自动更新,然后一些功能就要收费,贼贵,随意必须重新安装(某宝上买的)。

重新安装后,破解,然后试图关掉自动更新,失败,查询后直接在mac防火墙禁止adobe软件上网。

参考:macOS Adobe Acrobat Pro DC 2018.009.20044 如何取消自动更新?

 

R设置超大内存,防止Error: vector memory exhausted (limit reached?)

因为需要跑大数据,R会显示内存不够,可以设大一点,Mac会自动调用虚拟内存,最高可达30~50G

vi ~/.Renviron
R_MAX_VSIZE=40Gb 

 

更改默认的python,R python交互时会用到

sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s /Users/-/miniconda3/bin/python /usr/bin/python

 

有的R包安装需要gfortran,https://gcc.gnu.org/wiki/GFortranBinaries#MacOS  

安装brew和gcc【不需要gcc】

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

小工具:mac读写NFTS硬盘,NTFS 3G  

 

数据和代码管理:

  • 系统、数据、代码最好要做到彼此独立。【不切实际】
  • 就数据分析而言,jupyter秒杀其他一切工具。【越用越好用】

 

设置好bash可以极大地提高效率

export PS1="\[\033[01;31m\]\u \[\033[00m\]\[\033[01;32m\]\h\[\033[00m\] \[\033[01;33m\]\t\[\033[00m\] \[\033[01;34m\]\w/ \n\[\033[00m\]$ "

export home="/Users/-/Dropbox/Projects"
export githome=$home/github

alias cmd="vi $githome/myCMD.sh"
alias vi='vim'
alias lsa='ls | sed "s:^:`pwd`/: "'
alias nb="jupyter notebook"
alias cgs="ssh --@----- -p 22"
#alias mini="ssh ---@----- -p 22"
alias gitpush="git add . && git commit -m 'change' && git push"
alias nbon="nohup cd /Users/---/Dropbox/Projects && jupyter notebook 2>&1 &"
alias nbon="nohup cd $home && jupyter notebook > nb.log 2>&1 &"
alias nboff="ps -ef | grep jupyter | grep -v grep && echo 'kill -9 jobid'"
#
#export LSCOLORS="exfxcxdxbxexexabagacad"
alias cls='tput reset'
alias egrep='egrep -G'
alias fgrep='fgrep -G'
alias grep='grep -G'
alias l.='ls -d .* -G'
alias ll='ls -l -G'
alias ls='ls -G'
alias lt='ll -rth'

也可以用zsh,更好用。【不知道如何配置,还是用bash吧】

 

输入法:Mac 自带输入法这么好用,不看不知道 | 有用功 - 用原厂的提升稳定性,搜狗稳定性很差

最后发现还是搜狗输入法好用,MacBook Pro需要设置,输入法的存放位置在 /Library/Input Methods,开放权限。

 


以下是终端(笔记本)上装的工具 

必备工具:

  • sougou输入法
  • office套装 - HKU
  • iterm2 + dracula主题
  • sublime
  • 有道词典
  • WeChat

选配工具:

  • slack
  • parallel
  • AI
  • Acrobat
  • spotify
  • 印象笔记
  • grammarly
  • artpip 
  • typora - markdown for log file【垃圾开始收费】

专业工具:

  • MacTeX for bookdown
  • cytoscape
  • IGV

数据备份工具:

  • Google drive【体验差,无法实时同步,适合上传小数据】
  • Dropbox【同步最为顺滑】
  • Onedrive【速度最快,便宜】
  • Time machine【强烈不推荐】
  • 移动硬盘【大数据归档必备】

 

其他问题:

发现Mac下主要再用clang而不是gcc来编译。那么Clang 比 GCC 好在哪里?

手贱更新了最新的macOS,很多编译出现了问题,现在只能往回装。

How to make a bootable Mojave drive to downgrade from macOS Catalina 

How to downgrade from macOS Catalina back to macOS Mojave

ctrl+R format disk

alt/option start from external USB

install mojave can be very quick 

  


 

如何提高工具开发和数据分析的效率?| jupyter | Rstudio server

这部分是超级干货,也能直接体现一个开发分析者的能力。

 

主要分为两部分:

1. 面对新问题时,如何高效的分析和开发?

2. 面对相似的问题时,如何最快时间的利用之前的开发经验?

 

因为现在我主要用shell和R来处理测序数据,所以本文仅局限于shell和R代码的开发和管理。

因为最终结果必然以图表呈现,所以本文的另一大部分就是绘图代码的开发和保存。

 

效率的定义:

现在给你一批GWAS的原始数据(或RNA-seq、scRNA-seq),你多久能给我出结果、出图?给你第二批,你又要多久?

你是否知道如何结果的最佳呈现形式?

 

核心:

GitHub的利用
R包的开发和管理
jupyter和Rstudio server是神器
高效的归纳总结系统
Rmarkdown和jupyter notebook到底选哪一个?各有利弊

如何让别人的开发为我所用?站在巨人的肩膀上

多看是必须的
总结,这个研究到底解决了什么问题?填补了哪个gap?
归纳,这些分析和绘图代码能不能归到一个R包里,汇总为一个manual,随时调用

数据分析:

数据特性的总结和QC
尝试多种工具
评价、比较不同工具的结果
挑选合适的工具,解读结果
根据实际问题开发创新

单批数据的分析是容易的,但是数据的整合才是最重要的。

两大类整合

不同发育阶段的整合
case和control的整合

  

posted @ 2019-10-25 17:12  Life·Intelligence  阅读(1434)  评论(0编辑  收藏  举报
TOP