生物信息电脑运行环境搭建-Python R Linux
本文总结了一个没有什么计算机知识的学生要入门生物信息,完成个人 `PC` 环境配置的基础知识。算是为这几日以教促学的自我总结。
- 以下操作在 Mac OS X 中测试无误,Windows 部分主要靠回忆。
- 如果在 Windows里面进行,打开
Termial
对应打开CMD
或者powershell
。- 快捷需要相应调整,
Windows
没有cmd 键
.
1 软件安装
1.1 系统 Linux vs Mac vs Windows
课程中涉及到的系统包括:
- 一台能远程登录的服务器
Linux
(Centos7) - 我用
Mac
- 学生大部分使用
Windows
- 但是从 XP 到 10 都有。系统和配置的种类很多,维护状态也大不相同,我不能强求大家先重装一个系统再来,所以遇到了五花八门的问题。
- 总结下问题如下:
- 内存不足
- 系统版本老
- 原安装的软件混乱
- 使用中文用户名
1.2 软件
服务器
端没有做什么事情,它只是有一个校内的固定ip地址
,能够让大家远程登录。- 个人电脑(
PC
)上面一共安装了四大类软件。 - 逻辑如图
- PC能与服务器通信和文件传输;
- 能建立和维护 R 和 Python 的工作环境;
- 能在开发环境中编写和调试代码。
![关系图](data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTgycHgiIGhlaWdodD0iMjMxcHgiIHZlcnNpb249IjEuMSIgY29udGVudD0iJmx0O214ZmlsZSB1c2VyQWdlbnQ9JnF1b3Q7TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTNfNikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgZHJhdy5pby84LjguMCBDaHJvbWUvNjEuMC4zMTYzLjEwMCBFbGVjdHJvbi8yLjAuMiBTYWZhcmkvNTM3LjM2JnF1b3Q7IHZlcnNpb249JnF1b3Q7OC45LjcmcXVvdDsgZWRpdG9yPSZxdW90O3d3dy5kcmF3LmlvJnF1b3Q7IHR5cGU9JnF1b3Q7ZGV2aWNlJnF1b3Q7Jmd0OyZsdDtkaWFncmFtIGlkPSZxdW90OzZhMjFkNGVmLWFjNjktYjk2Ni1jYWY2LTRhNDlhMzM2NWYwNSZxdW90OyBuYW1lPSZxdW90O1BhZ2UtMSZxdW90OyZndDs1VnByYjZNNEZQMDFmSzNBWUI0Zmt6U1oxV2hXaXFZajdleEhCNXlFTGNHUk1VMHp2MzZ2ZVNTQW5UUVBTcXVaVklyZ1lvTjk3cm5IQnplR1BkbThmdUZrdS82YlJUUXhrQm05R3ZhamdaQVhJUGlXZ1gwWndKNVhCbFk4anNxUWRRdzh4YjlvRlRTcmFCNUhOR3MxRkl3bEl0NjJneUZMVXhxS1ZveHd6bmJ0Wmt1V3RKKzZKU3VxQko1Q2txalJmK0pJck11b2o3eGovQzhhcjliMWt5MDNLSzhzU1BpODRpeFBxK2NaeUY0V24vTHlodFQzcWlhYXJVbkVkbzJRUFRYc0NXZE1sRWViMXdsTkpMUTFiR1cvMlltcmgzRnptb3BMT2lDLzdQRkNrcHpXUXk0R0p2WTFHTVYwcU94Z0d2WjR0NDRGZmRxU1VGN2RRZllodGhhYkJNNHNPRnpHU1RKaENlTnducklVR28wendka3pyWU9BeUd3V3dBZXVSQ1JiRnplV1BhdUJVQzdvNjhuWldBZU1nSHFVYmFqZ2UyaFNkWEJxV0N2YUlWeE5iM2RNSW5Lck51dEdBdXNZcVhpek90ejZpQjBjVlBDZHdENzRuYUcwYmF4QWFWa2FLSU1lb0VRcWtsUFhDQ2FHLzJoTXNlR1BqSkVsRDJEbUkxOEJHZTRGT2xIQXRTWmJHUXdUbGtmWEFWNFVMblhEVUlkNjVBVUwwK3dIYU12c0FHMmlCdzNVU0FPMTN3UFVLbnh0ampiZ2dRbngvYy9teWIreUVZeldIdjlIaGRoWE9rNXl3U0RFdUZpekZVdEo4bzJ4YmQwdEFwMnRublZzTUQxR3gySE9YdzVFemdUaFlpUUZ2VmtERUp2RmNrYkZDR2thZFZwQXBIRzluS0I4OFBrTUFRZ3M1MkhWeXE1V0hjSlh0R3JsNlBQSWFVSkUvTksrK3owcHNSWDJ6eWRLbG1wcTU1dGtGQXBKekxHa1lReHIyRGV5b01tY1piR0lXUXBORmt3SXRvRUdpYnd3UHF4UUxhb1hhOVR4SHFNa1hzbStnblZxaE9VaWlWTW9obnJoTlRXRjQ0ZFVYemdMSHp1NHA4S3gvYTVDbVVyWjJPK2s5WUVxT3RjUisrMGlNeDg4MzI0WEdySU9nVG5sTVl5YTh1b09sOWJmYmNYZ3FNV0FCaW9HUjdNVStNWjRKbGVEcVNmbDN4L0x4Y0dmR2lPdldCemdxbnZmd3R1bWJTVXFQVEFXNFk0OUNWVEdZZzFqN1I0WXEwTHlObU12SVdtQTJ4eDFFYjZYbzYxQ3VZMncrT01JNjcyYk5MeHZqZU03OGFtNnpsa01Eemt0MGw2SHkyV0txbDRkbEEvRHVBaDRyRGVOSUEyZ0M0NHhIa3Rka0FjVFkyUVdJakkxQWxocjNRUkFHUzg0SEszRUFiN1ByaDBISUFmUWp0cm1ONkQ5cnFBRVV4UG5vSkMyMlYyNDJOVVo3U1VxL0FLcFhFY0lvTkNtcGFudHlDYU9vcUppZEZsbzU2a0h6QjJNWWMxMWtJKzk0dHR2cTdmbmFZeTZvOGtCNnVPVnlGUVE3MFBBTlZiK1NzOGRKaVRMNHJCbHU2OVJLL29haTUvMWJlSDRPSkNXS3FxVUtRMnJRakt6K053c2c1Ykc2MWltbmliWGFTTUFSdmFOQmx1cGVkbHA2Y1MyMWFsNDFDVE1tKzJSNzNjSVZvN2dWbjNWYkdmMGJubzdkRVFmd01jUEpkcFFKcVZlTEFmTTVaK1dTbitnVkZycUc5SlR2a2pBZVVQd2gxeVVrV21mOFRUVzI1Nkc4TEJDMjVHbkswNmlHUERvbUp3VHV3djlXU0RzdW0xQnhLb0ZDalRMcjRON1FGbDFseE9XUnVRcSszZzkxQjBHUjVqNmthTmpzSThXdHV2MlpIdnNqdFYwZER1Uzc0WDBUVytxdjRFMG9STmJ6YlZudmx5YStyY3VxdGR3OFlQWGNNYUIxbmtjYmxpS3BmS1NkNzBqTXJYUE9lMkl6cmEvM3hHcHV0b1hWWWMyNFdjcTQxWU51bm9WOVFhanJ4UGdEakhzOWkxTzdFcmNTMWpIK1dEQ09vTnJxL2Z4NGpvc1k0ZXk4UFhERzQ3a2E3N2R5MzJUeitaSnVvYXgrTC8xekpuWWpXdVBNYWRoOVE4clNyTGpxTyswalBnaHdISVhzdmh1dnlBN2FEaFhZNm0vcy9oS1hpNnhqeGZzcTdtaFR4ZExUV29JOVplZmRGK3RZUjY4bXNwMVhqUysvcjIyMVN5azVHVytCMGxKKzhuTW9RUk9GYzNueTB3ckZYWXc0QTZuK3Z1Wjc1bklvNWdOSzJnWGUvRzdsY2s3dmJmc0RpZE50cnFCTUdjN3lyTjEwVzRHbUpPTlJEQmRaTnRpOHQxcy9LQjhFOE1TZkY5V3p1OGZxS0pYZkRUcHcvS3ZsV1VVOUpNemhBNDcvbldlSEV2TkU5Ymt5ZXNoVCtvV0JIZ2orZ3VtVDhvMGRkSXkyUzhvai9MdytlME0vbm1aYzB6TjVsRS9tWVBUNHc4NFM1ZCsvSkdzUGYwZiZsdDsvZGlhZ3JhbSZndDsmbHQ7L214ZmlsZSZndDsiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiIGlkPSJteC1ncmFkaWVudC1kNWU4ZDQtMS1mZmY0YzMtMS1lLTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0eWxlPSJzdG9wLWNvbG9yOiNkNWU4ZDQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkY0QzMiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjUsMC41KSI+PHJlY3QgeD0iMzIwIiB5PSIxNyIgd2lkdGg9IjI2MCIgaGVpZ2h0PSI2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmY5OTk5IiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHJlY3QgeD0iMzIwIiB5PSI5NCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI5MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmY5OTk5IiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAzMCA4MS41IEMgNiA4MS41IDAgMTAxLjUgMTkuMiAxMDUuNSBDIDAgMTE0LjMgMjEuNiAxMzMuNSAzNy4yIDEyNS41IEMgNDggMTQxLjUgODQgMTQxLjUgOTYgMTI1LjUgQyAxMjAgMTI1LjUgMTIwIDEwOS41IDEwNSAxMDEuNSBDIDEyMCA4NS41IDk2IDY5LjUgNzUgNzcuNSBDIDYwIDY1LjUgMzYgNjUuNSAzMCA4MS41IFoiIGZpbGw9IiNmZmU2Y2MiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxLjUsOTQuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iMzYiIGhlaWdodD0iMTIiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogMzdweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij7mnI3liqHlmag8L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTgiIHk9IjEyIiBmaWxsPSIjMDAwMDAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiPuacjeWKoeWZqDwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAyODAgMTE4LjY3IFEgMjM5LjY3IDExOC42NyAyMzkuNjcgOTEuMTcgUSAyMzkuNjcgNjMuNjcgMTk5LjY3IDYzLjY3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZWxsaXBzZSBjeD0iMjk1IiBjeT0iOTYiIHJ4PSI3LjUiIHJ5PSI3LjUiIGZpbGw9IiNmOGNlY2MiIHN0cm9rZT0iI2I4NTQ1MCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDI5NSAxMDQgTCAyOTUgMTI5IE0gMjk1IDEwOSBMIDI4MCAxMDkgTSAyOTUgMTA5IEwgMzEwIDEwOSBNIDI5NSAxMjkgTCAyODAgMTQ5IE0gMjk1IDEyOSBMIDMxMCAxNDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I4NTQ1MCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4Ni41LDE1Ni41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiIHBvaW50ZXItZXZlbnRzPSJhbGwiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMiIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGxpbmUtaGVpZ2h0OiAxLjI7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyI+UEM8L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iOSIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+UEM8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTUwIDYzLjY3IFEgMTI5LjY3IDYzLjY3IDEyOS42NyA3MS4xNyBRIDEyOS42NyA3OC42NyAxMDAuMiA3OC42NyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA5NC45NSA3OC42NyBMIDEwMS45NSA3NS4xNyBMIDEwMC4yIDc4LjY3IEwgMTAxLjk1IDgyLjE3IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxyZWN0IHg9IjE1MCIgeT0iNDkiIHdpZHRoPSI1MCIgaGVpZ2h0PSIzMCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MC41LDU3LjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIgcG9pbnRlci1ldmVudHM9ImFsbCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjEyIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuMjsgdmVydGljYWwtYWxpZ246IHRvcDsgd2lkdGg6IDQ4cHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0OyI+6L+c56iL5o6n5Yi2PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjI0IiB5PSIxMiIgZmlsbD0iIzAwMDAwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4IiBmb250LWZhbWlseT0iSGVsdmV0aWNhIj7ov5znqIvmjqfliLY8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTUwIDE0My42NyBRIDEyOS42NyAxNDMuNjcgMTI5LjY3IDEyNy40MiBRIDEyOS42NyAxMTEuMTcgMTIwLjIgMTExLjE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNC45NSAxMTEuMTcgTCAxMjEuOTUgMTA3LjY3IEwgMTIwLjIgMTExLjE3IEwgMTIxLjk1IDExNC42NyBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDIwMCAxNDMuNjcgUSAyMzkuNjcgMTQzLjY3IDIzOS42NyAxMzYuMTcgUSAyMzkuNjcgMTI4LjY3IDI3My42MyAxMjguOTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMjc4Ljg4IDEyOC45OSBMIDI3MS44NSAxMzIuNDMgTCAyNzMuNjMgMTI4Ljk1IEwgMjcxLjkxIDEyNS40MyBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cmVjdCB4PSIxNTAiIHk9IjEyOSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUwLjUsMTM3LjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIgcG9pbnRlci1ldmVudHM9ImFsbCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjEyIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuMjsgdmVydGljYWwtYWxpZ246IHRvcDsgd2lkdGg6IDQ4cHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0OyI+5paH5Lu25Lyg6L6TPGJyIC8+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjI0IiB5PSIxMiIgZmlsbD0iIzAwMDAwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4IiBmb250LWZhbWlseT0iSGVsdmV0aWNhIj7mlofku7bkvKDovpMmbHQ7YnImZ3Q7PC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIzNTUuMjEiIHk9IjM2LjUiIHdpZHRoPSI0MCIgaGVpZ2h0PSIyMCIgZmlsbD0iI2ZmZjJjYyIgc3Ryb2tlPSIjZDZiNjU2IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3MC41LDM5LjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIgcG9pbnRlci1ldmVudHM9ImFsbCIgd2lkdGg9IjgiIGhlaWdodD0iMTIiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogMTBweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5SPC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQiIHk9IjEyIiBmaWxsPSIjMDAwMDAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiPlI8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gNDY2LjMzIDEzMS4xNyBRIDQzMS4zMyAxMzEuMTcgNDMxLjMzIDg4LjY3IFEgNDMxLjMzIDQ2LjE3IDQwMS44NyA0Ni4xNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAzOTYuNjIgNDYuMTcgTCA0MDMuNjIgNDIuNjcgTCA0MDEuODcgNDYuMTcgTCA0MDMuNjIgNDkuNjcgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA0NjYgMTMxLjE3IFEgNDMwLjUgMTMxLjE3IDQzMC41IDE0NC45MiBRIDQzMC41IDE1OC42NyA0MDEuMDMgMTU4LjY3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDM5NS43OCAxNTguNjcgTCA0MDIuNzggMTU1LjE3IEwgNDAxLjAzIDE1OC42NyBMIDQwMi43OCAxNjIuMTcgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA0NjYgMTMxLjE3IFEgNDMwLjUgMTMxLjE3IDQzMC41IDE3NC45MiBRIDQzMC41IDIxOC42NyA0MDEuODcgMjE4LjY3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDM5Ni42MiAyMTguNjcgTCA0MDMuNjIgMjE1LjE3IEwgNDAxLjg3IDIxOC42NyBMIDQwMy42MiAyMjIuMTcgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHJlY3QgeD0iNDY2IiB5PSIxMDkiIHdpZHRoPSI5MCIgaGVpZ2h0PSI0NSIgcng9IjE4LjQ1IiByeT0iMTguNDUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NzEuNSwxMjQuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iNzgiIGhlaWdodD0iMTIiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogODBweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5TdWJsaW1lIFRleHQgMzwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIzOSIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+U3VibGltZSBUZXh0IDM8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjMzMCIgeT0iMTAxLjUiIHdpZHRoPSI5MCIgaGVpZ2h0PSI0NSIgcng9IjE4LjQ1IiByeT0iMTguNDUiIGZpbGw9IiNkNWU4ZDQiIHN0cm9rZT0iIzgyYjM2NiIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTYuNSwxMTcuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iMzYiIGhlaWdodD0iMTIiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogMzZweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5Db25kYTxiciAvPjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxOCIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+Q29uZGEmbHQ7YnImZ3Q7PC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDQ2NS41IDQ3IFEgNDI5LjY3IDQ3IDQwMS44NyA0Ni4zMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDZiNjU2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAzOTYuNjIgNDYuMTkgTCA0MDMuNyA0Mi44NyBMIDQwMS44NyA0Ni4zMiBMIDQwMy41MyA0OS44NiBaIiBmaWxsPSIjZDZiNjU2IiBzdHJva2U9IiNkNmI2NTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDQ2NS45NSAyMDYuMTcgUSA0MjkuNjcgMjA2LjE3IDQyOS42NyAxMjYuMTcgUSA0MjkuNjcgNDYuMTcgNDAxLjg3IDQ2LjE3IiBmaWxsPSJub25lIiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDM5Ni42MiA0Ni4xNyBMIDQwMy42MiA0Mi42NyBMIDQwMS44NyA0Ni4xNyBMIDQwMy42MiA0OS42NyBaIiBmaWxsPSIjODJiMzY2IiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDQ2NS45NSAyMDYuMTcgUSA0MzAuNSAyMDYuMTcgNDMwLjUgMTg3LjQyIFEgNDMwLjUgMTY4LjY3IDQwMS4wMyAxNjguNjciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzgyYjM2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMzk1Ljc4IDE2OC42NyBMIDQwMi43OCAxNjUuMTcgTCA0MDEuMDMgMTY4LjY3IEwgNDAyLjc4IDE3Mi4xNyBaIiBmaWxsPSIjODJiMzY2IiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cmVjdCB4PSI0NjUuOTUiIHk9IjE4NCIgd2lkdGg9IjkwIiBoZWlnaHQ9IjQ1IiByeD0iMTguNDUiIHJ5PSIxOC40NSIgZmlsbD0idXJsKCNteC1ncmFkaWVudC1kNWU4ZDQtMS1mZmY0YzMtMS1lLTApIiBzdHJva2U9IiM4MmIzNjYiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDkwLjUsMjAwLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIgcG9pbnRlci1ldmVudHM9ImFsbCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjEyIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuMjsgdmVydGljYWwtYWxpZ246IHRvcDsgd2lkdGg6IDQwcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHdvcmQtd3JhcDogbm9ybWFsOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0OyI+SnVweXRlcjxiciAvPjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyMCIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+SnVweXRlciZsdDticiZndDs8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjM1NS4xNCIgeT0iMjA5IiB3aWR0aD0iNDAiIGhlaWdodD0iMjAiIGZpbGw9IiNkYWU4ZmMiIHN0cm9rZT0iIzZjOGViZiIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjEuNSwyMTIuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iMjYiIGhlaWdodD0iMTIiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogMjZweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5KYXZhPGJyIC8+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzIiB5PSIxMiIgZmlsbD0iIzAwMDAwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4IiBmb250LWZhbWlseT0iSGVsdmV0aWNhIj5KYXZhJmx0O2JyJmd0OzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzU1IiB5PSIxNTQiIHdpZHRoPSI0MCIgaGVpZ2h0PSIyMCIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjODJiMzY2IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM1NS41LDE1Ny41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiIHBvaW50ZXItZXZlbnRzPSJhbGwiIHdpZHRoPSIzOCIgaGVpZ2h0PSIxMiIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGxpbmUtaGVpZ2h0OiAxLjI7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHdpZHRoOiAzOHB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB3b3JkLXdyYXA6IG5vcm1hbDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsiPlB5dGhvbjxiciAvPjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxOSIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+UHl0aG9uJmx0O2JyJmd0OzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNDY1LjcxIiB5PSIyNCIgd2lkdGg9IjkwIiBoZWlnaHQ9IjQ1IiByeD0iMTguNDUiIHJ5PSIxOC40NSIgZmlsbD0iI2ZmZjJjYyIgc3Ryb2tlPSIjZDZiNjU2IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ5MC41LDQwLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyIgcG9pbnRlci1ldmVudHM9ImFsbCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjEyIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuMjsgdmVydGljYWwtYWxpZ246IHRvcDsgd2lkdGg6IDQycHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHdvcmQtd3JhcDogbm9ybWFsOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0OyI+UnN0dWRpbzxiciAvPjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyMCIgeT0iMTIiIGZpbGw9IiMwMDAwMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSI+UnN0dWRpbyZsdDticiZndDs8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEyNy41IiB5PSIwIiB3aWR0aD0iOTUiIGhlaWdodD0iNDciIHJ4PSIxMy42MyIgcnk9IjEzLjYzIiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQyLjUsMTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iNjUiIGhlaWdodD0iMjYiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogNjdweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5Qb3dlcnNoZWxsL8KgPGJyIC8+VGVybWluYWw8L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzMiIHk9IjE5IiBmaWxsPSIjMDAwMDAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiPltOb3Qgc3VwcG9ydGVkIGJ5IHZpZXdlcl08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEyNy41IiB5PSIxNTkiIHdpZHRoPSI5NSIgaGVpZ2h0PSI0NyIgcng9IjEzLjYzIiByeT0iMTMuNjMiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDQuNSwxNjkuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IiBwb2ludGVyLWV2ZW50cz0iYWxsIiB3aWR0aD0iNjEiIGhlaWdodD0iMjYiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS4yOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB3aWR0aDogNjFweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd29yZC13cmFwOiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Ij5GaWxlemlsbGEvPGJyIC8+Q3liZXJkdWNrwqA8YnIgLz48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzEiIHk9IjE5IiBmaWxsPSIjMDAwMDAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiPltOb3Qgc3VwcG9ydGVkIGJ5IHZpZXdlcl08L3RleHQ+PC9zd2l0Y2g+PC9nPjwvZz48L3N2Zz4=)
-
与服务器连接
-
编译语言
- R 3.5.1:先安装,再装Rstudio
- Python 3.6:Conda顺带安装
- Java:由于有些软件会用到,不是所有人都安了,所以也让大家装了
-
环境管理
- Anaconda/[miniconda](https://conda.io/ miniconda.html):Python管理
- Rstudio:R管理
-
代码编辑器/IDE
- Jupyter: 以前叫
ipython notebook
:支持Python,R等,代码+注释的编辑方式,使可读性强,适合教学用。 - Sublime Text 3:轻量,免费,多种语言高亮支持,也能提供编译。需要自己进行进一步配置。个人很喜欢 ST3。不仅快,功能丰富,而且打开大的数据也不卡。但是,ST3有本事能让你用的得心应手,前提也是你得花时间配置。思考了下,认为这篇,不适合展开细讲,所以留一个坑吧。
- Jupyter: 以前叫
1.3 安装
1.3.1 文件传输 Filezilla | Cyberduck
本来以为最没有问题的是这个部分,不过还是出了点小问题。
Filezilla
下载成了Filezilla server
。Cyberduck
连接的时候应该选择SFTP
类型。
1.3.2 远程登录 Powershell | Terminal
Windows
Powershell
Windows 8.1 之后自带,有就能直接运行ssh
命令。- 没有可以下载,或者下
Putty
,Openssh
。 - 不想安装可以在
CMD
里面使用telnet
命令。
Mac
Terminal
自带。- 代码
ssh -p 22 username@ip
登录信息
- port 端口 -p
- ip 地址
- 用户名
- 密码
让服务器说中文
- 远程登录之后,打开家目录(当前目录/home/username)下的
.bash_profile
。
vi .bash_profile
- 按
i
。 - 输入
export LANG=zh_CN.UTF-8
。 - 按
esc
,再输入:wq
回车。 - 然后重新登录,或者运行。
source .bash_profile
1.3.3 语言编译器 R | Python
R
下载安装3.5.1,没有遇到报错 link
Python
装 Python 3,安装 conda
就自动装上。
Java
也是去官网下载安装,没有遇到报错,只是大,需要等。
1.3.4 环境管理 conda | Rstudio
用来管理和安装各种软件包和模块。
Conda for Python
- Anaconda 和 Miniconda 都是在使用
Conda
命令来管理包(模块)和运行环境的。 - 区别是Anaconda把常用的大量的包都预先安装好了。Anaconda有
用户界面(GUI)
,Miniconda只是能够用命令行(Command line)
来运行。 Anaconda
预装了Jupyter Notebook
,还能一起管理Rstudio
。
看到这里是不是觉得那还装啥别的,就来Anaconda
了吧!实践告诉我,并不是。Anaconda
有三个硬伤:
- 内存不够开起来慢,就这么说吧,拖家带口,跑不动。
- Anaconda没有提供最新的R环境。目前支持的是 R3.4.3 可是已经有一些包要求不是R3.5.1就不准装,目前,我随便搜了下,并不知道怎么在 Anaconda里面让R的核更新。
- 如果想自定义,里面的关系盘根错节,不知道怎么改。
比如我自己下一个R3.5.1
然后再修改依赖关系,但是我发现其实 bin 里面放的是一个 Wrapper,我不知道怎么改,即使我知道自己的新R在哪里,我尝试了各种简单的拖动,替换,并没有成功。
所以,我决定把 Anaconda 卸了,安装 miniconda,然后通过 Conda
来安装 Jupyter
。
安装过程
- 下载文件,例如
Miniconda3-latest-MacOSX-x86_64.sh
。 - 运行。
注意,这里是
.sh
,双击以文件形式打开,运行是在 Terminal 中进入文件所在文件夹,然后运行的。
cd Download
bash ./Miniconda3-latest-MacOSX-x86_64.sh
conda 使用
通常就是知道自己需要安装的包的名字(例如:numpy),然后输入命令。运行后,首先会完成解析,确认,输入 y
安装才会继续。解析返回的内容包括:
- 将安装哪些依赖
dependency
(也就是相关的包) - 哪些会升版本
- 那些需要降级版本
会要下很多很多东西,但是等就好。中间报错通常因为下载中断,再运行一次,会从断的地方继续。
conda install numpy
conda 频道 channel
- 不同的 channels 放着不同的东西。
- 添加频道
conda config --add channels defaults
conda config --add channels conda-forge
conda config --add channels bioconda
- 生物信息常用 bioconda,里面包含 biopython 模块
conda install biopython
提高下载速度 mirror
- 清华有anaconda的 镜像,按需求选择了几个需要的 channel。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
Rstudio
安装 Rstudio 一般问题也不大,容易错的是:
- 安装在含义中文的路径中,比如用户名,对后续使用有影响。
- 没有安装 R 就装 Rstudio。
1.3.5 代码编辑IDE Jupyter | Sublime Text3
交互式开发环境 IDE interactive development enviroment: 意思就是你能在里面写代码,然后看到结果。还能辅助你管理包环境变量,文件等。
首先 Rstudio
也是IDE,但是它是 R
专用的 IDE。
下面追加安装的两个IDE能支持多种语言,特别是 Sublime Text 3
,简直各种小能手。
Sublime Text 3
- 安装没有出现过问题,注意版本要新。
- ST3 能用各种你已经安装的 编译器(例如Python和R)来运行对应的代码文件(.py和.r)。
在对应的打开文件中,按Cmd + B
,在Tools -> Build System
选择合适的编译器,或者自动,ST编译代码,在下方显示结果。 - Python 能输出图形,如果编译之后没有图,参考
- R 目前没有直接出图,有需要安装
REPL
参考
Jupyter
- 使用conda安装,
conda install jupyter
- 推荐安装 nbextension插件,这样能有目录,高亮,帮助窗口等附件功能。
conda install -c conda-forge jupyter_contrib_nbextensions
- 激活使用的插件,可以打开 notebook 之后勾选;或者使用代码。推荐打开help panel,table of content和highlighter。
jupyter nbextension enable highligher/main
- 运行
notebook
:输入命令,会以当前的路径作为根目录,以默认浏览器打开一个页面(本地服务器)。
jupyter notebook
1.3.6 Jupyter notebook + R kernel
- 因为我们已经安装的 R 现在就是要让 Jupyter notebook 找到R了。很简单,使用IRkernel。
- 有一个小坑。首先以下代码是 R 里面运行的,前面两行能在 R studio 运行成功,但是第三行一定要在
R 本身
运行! - 建议在
Terminl
中输入R
运行,然后再运行下面的代码。 - 结果会将你
当前使用的 R 的版本
作为核(kernel)
。 - 以后打开 Jupyter notebook 就能选择 R 作为核了。
install.packages('devtools')
devtools::install_github('IRkernel/IRkernel')
# or devtools::install_local('IRkernel-master.tar.gz')
IRkernel::installspec() # to register the kernel in the current R installation
1.4 常见问题
1.4.1 不知道自己有没有安装成功
- 首先要区分
命令 command
和程序 app exe
。本质上 运行命令
运行的是命令
指向的程序
。命令
可以理解为放在环境变量
指向的位置 PATH
中的程序本身
,或者程序的超链接
。 - 例如:
R
本来装在/Library/Frameworks/R.framework
中,但是在/usr/local/bin/
里有一个R
的超链接,所以我们可以在任何地方 只输入R
就运行程序。比较下面的代码:- 运行的是
R命令
,通过 环境变量找到R程序
,然后打开。
- 运行的是
$R
* 运行的是 `当前路径下的R程序`,所以前面有 `./ `。如果所在路径没有 `R` 不能运行成功。
```
$./R
- 因此,在命令行模式中,通常输入
程序
的名字就能知是否安装成功。例如输入Java,Python,R 或 Jupyter
。
1.4.2 安装程序或修改环境变量后没有生效
- 例如安装了
miniconda
之后,conda
命令并没有马上被找到。因为其实有一条命令还没有生效。打开.bash_profile
。
vi ~/.bash_profile
看到里面写着如下命令。它在每次登陆的时候生效,所以需要再登陆一次。
# added by Miniconda3 installer
export PATH="/Users/YOURNAME/miniconda3/bin:$PATH"
1.4.3 环境变量设置出错
环境变量是什么?
环境变量 = PATH 也就是
路径
。一个系统帮助我们找到要运行的程序的路径
。
-
虽然是一样的安装程序,但是经常就有人的机器,安装了之后还是不能运行。其实就是安装的过程没有完成添加
环境变量 PATH
。我们可以自己添加环境变量。 -
大家都很不明白什么是环境变量。请看以下
Windows
的例子。 -
如果
blastn.exe
装在了D:\Blast+
中。直接在 CMD 中运行blastn
是不会成功的,因为我们没有把D:\Blast+
设置为让系统帮我们找可执行文件的位置 =
PATH 。
如何修改
- Mac 中详细说明见上一条。以下代码仅为例子。
echo $PATH
vi ~/.bash_profile
# added by Miniconda3 installer
export PATH="/Users/YOURNAME/Blast+/bin:$PATH"
-
Windows 我的电脑,右键,属性,高级设置,环境变量,在原有的环境变量基础上加上
;C:\Blast+
。 -
Windows 10 才能逐条显示环境变量中的路径,能用浏览的方式加入新的。
-
Windows 命令行方式添加。
set PATH=%PATH%;D:\Blast+
echo %PATH%
1.4.4 下载错了位(32 vs 64)或版本
- 如果不是从官网下载,常常已经不是最新的版本,有时候不能正常的支持所有的包。
- 目前还有一些笔记本是32位的,但是一些软件最新的版本已经没有32位了,比如Blast+。解决的方法是下载稍微老一些的版本。
1.4.5 缺少管理员权限
- 在图形界面安装,如果是因为没有管理员权限的问题,有时候是不会报错,只是一直安装不成功。
- 如果在命令行界面,安装失败才能看到返回的错误信息。
- Windows 可以用管理员权限打开 CMD。注意没有
sudo
命令。以下两个都是网上找的,没测试。来源。
runas /noprofile /user:Administrator cmd
ru
- Mac 里面可以用 sudo 来运行。例如
sudo conda install pandas
2 总结
2.1 最小安装
- Filezilla/Cyberduck
- minicoda
- R
- Rstudio
- Jupyter
2.2 跟不上进度的主要原因
- 不能理解绝对路径和相对路径 = 因为找不到文件报错
- 不习惯使用
table
补齐代码 = 输入错误 - 不能理解变量的作用域 = R里面不懂如何使用$
- 不知道
“
在不同语境下的含义,特别是在R
里面 = 弄混变量和字符串 - 不知道
[] ()
使用时候的不同含义 = R里面的函数和内容提取 - 不知道一般有哪几类错误
- 关键是不看错误信息说什么,特别是信息长又是英语的时候,更别说分析问题怎么解决
- 不知道怎么把大问题拆成小步骤,听指导的时候总是跳步骤。
有的学生会很积极的来上课,但一直跟不上,然后就一直问别人该怎么操作,发现代码运行出来,就很满意了,但是他们唯独不做的事情是理解问题和分析问题。也不在乎自己是不是获得了独立完成的能力。
以前我认为只要老师讲得够清楚就能解决问题。好像也不是这么回事。很多基础的概念和原理,很多人并不能按照我期待的理解。可能是每种语法还是需要一定的时间来记忆。知识也需要发酵。
比如,我希望大家从表格数据里提取一个列,做逻辑运算,再把结果添加到数据的新列里。需要使用 $
提取内容,>
做逻辑计算 , 最后通过 $
把计算结果赋值 <-
给原来的 不存在的列,完成添新列。我发现,大家不能完成不是单纯的不记得使用哪个命令,重要的是不能把这个任务线性化,不能分割为最小的步骤。我会一直努力拆解,然后提醒。最后发现,真的要精确到每一步,才有可能准确理解。
df$z <- df$x > 3
读出这个代码里面的数据流向也是入门的一道坎。
另外,我还是容易不淡定,嗯。
----ฅ(*ΦωΦ)ฅ---- cognata ad sidera tendit...