生物信息电脑运行环境搭建-Python R Linux

TOP

# 0 题记 从2018-7-16日开始,我讲了四天课(实际3天半,共21个小时),内容包括Linux入门、Python入门和R入门。目的是让大家能在自己的PC和服务器上进行生物信息学分析相关的实践。去年我用了差不多21小时只讲了R入门。今年为什么添加了Linux和Python?因为去年我自己这两个都还没有入门,也没有任何实践操作经验,去年有基因所的老师来教这个部分。今年,我更希望大家能从基因所老师那里学到 `生物信息` 相关的东西,不要因为`系统操作`跟不上,一直云里雾里,所以讲了这个课程的 `pre course`。
本文总结了一个没有什么计算机知识的学生要入门生物信息,完成个人 `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=)

  1. 与服务器连接

  2. 编译语言

    • R 3.5.1:先安装,再装Rstudio
    • Python 3.6:Conda顺带安装
    • Java:由于有些软件会用到,不是所有人都安了,所以也让大家装了
  3. 环境管理

  4. 代码编辑器/IDE

    • Jupyter: 以前叫 ipython notebook:支持Python,R等,代码+注释的编辑方式,使可读性强,适合教学用。
    • Sublime Text 3:轻量,免费,多种语言高亮支持,也能提供编译。需要自己进行进一步配置。个人很喜欢 ST3。不仅快,功能丰富,而且打开大的数据也不卡。但是,ST3有本事能让你用的得心应手,前提也是你得花时间配置。思考了下,认为这篇,不适合展开细讲,所以留一个坑吧。

1.3 安装

1.3.1 文件传输 Filezilla | Cyberduck

本来以为最没有问题的是这个部分,不过还是出了点小问题。

  • Filezilla 下载成了 Filezilla server
  • Cyberduck 连接的时候应该选择 SFTP 类型。

1.3.2 远程登录 Powershell | Terminal

Windows

  • Powershell Windows 8.1 之后自带,有就能直接运行 ssh 命令。
  • 没有可以下载,或者下 PuttyOpenssh
  • 不想安装可以在 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有三个硬伤:

  1. 内存不够开起来慢,就这么说吧,拖家带口,跑不动。
  2. Anaconda没有提供最新的R环境。目前支持的是 R3.4.3 可是已经有一些包要求不是R3.5.1就不准装,目前,我随便搜了下,并不知道怎么在 Anaconda里面让R的核更新。
  3. 如果想自定义,里面的关系盘根错节,不知道怎么改。
    比如我自己下一个 R3.5.1 然后再修改依赖关系,但是我发现其实 bin 里面放的是一个 Wrapper,我不知道怎么改,即使我知道自己的新R在哪里,我尝试了各种简单的拖动,替换,并没有成功。

所以,我决定把 Anaconda 卸了,安装 miniconda,然后通过 Conda 来安装 Jupyter

安装过程
  1. 下载文件,例如 Miniconda3-latest-MacOSX-x86_64.sh
  2. 运行。

注意,这里是 .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 读出这个代码里面的数据流向也是入门的一道坎。

另外,我还是容易不淡定,嗯。

posted @ 2018-07-21 18:34  Xeonilian  阅读(1698)  评论(0编辑  收藏  举报