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的文件了,太痛苦了。
另一个教训就是分级,所有文件分三级。
- 原始数据,如fastq,cellranger等的大概率不会调用的大文件;
- 处理后数据,如R,Python处理之后的data,这个会很可能被调用;
- 文档类,比如word的写作等产生的结果文件,这个调用得最频繁;
这里再来梳理一下我对新Macmini的配置,以后独立之后还会用到。
1. 数据存储方案
- Dropbox
- Onedrive
- Lacie hard drive【格式化为最大传输速率格式】
2. 基本App【卸载不用的Mac App】
- Chrome - keys,bookmarks,remote神器
- 印象笔记
- 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 extension + jupyter_contrib_nbextensions 设置远程访问
- Jupyter Notebook的三大短板,被这个工具补齐了
- mwouts/jupytext - 通过保存同步的jupyter格式和文本格式,实现了快速访问、修改、版本控制等必备功能!
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软件上网。
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
- 有道词典
选配工具:
- 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的整合