Skip to content

Commit c6876e4

Browse files
committed
add a blog
1 parent b4dbc99 commit c6876e4

13 files changed

Lines changed: 118 additions & 35 deletions

File tree

config/_default/menus.cn.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ name = "介绍"
1111
url = "/about"
1212
weight = 2
1313

14-
# [[main]]
15-
# name = "新闻"
16-
# url = "/news"
17-
# weight = 3
18-
1914
[[main]]
2015
name = "团队成员"
2116
url = "/team"
@@ -41,6 +36,11 @@ name = "联系我们"
4136
url = "/contact"
4237
weight = 8
4338

39+
[[main]]
40+
name = "博客"
41+
url = "/blog"
42+
weight = 9
43+
4444
# footer menu
4545
[[footer]]
4646
name = "重庆医科大学"

config/_default/menus.en.toml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ name = "About"
1111
url = "/about"
1212
weight = 2
1313

14-
# [[main]]
15-
# name = "News"
16-
# url = "/news"
17-
# weight = 3
18-
1914
[[main]]
2015
name = "Team"
2116
url = "/team"

config/_default/params.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ navbar_fixed = true
1818
theme_switcher = false
1919
theme_default = "system" # available options [light/dark/system]
2020
# Main Sections
21-
mainSections = ["news"]
21+
mainSections = ["blog"]
2222
# contact form action
2323
contact_form_action = "#" # contact form works with [https://airform.io/] or [https://formspree.io]
2424
# google tag manager, see https://developers.google.com/tag-manager/
@@ -27,7 +27,7 @@ google_adsense = "" # example: ca-pub-xxxxxxxxxxxxxxxx
2727
# custom script on header, example: custom_script= "<script>console.log(\"Hello World\")</script>"
2828
custom_script = ""
2929
# copyright
30-
copyright = "@2025 Wei Shen"
30+
copyright = "@2025-2026 Wei Shen"
3131

3232
# Preloader
3333
# preloader module: https://github.com/gethugothemes/hugo-modules/tree/master/components/preloader
@@ -46,7 +46,7 @@ link = "contact"
4646
[search]
4747
enable = false
4848
primary_color = "#121212"
49-
include_sections = ["news"]
49+
include_sections = ["blog"]
5050
show_image = true
5151
show_description = true
5252
show_tags = true

content/cn/blog/_index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: "博客"
3+
meta_title: ""
4+
description: "blog, 博客, 随笔, 新闻"
5+
---
6+
7+

content/cn/blog/post-01.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: "如何学习和练习生物信息学算法,并提高编程能力"
3+
meta_title: ""
4+
description: "学习和练习生物信息学算法设计相关的经验"
5+
date: 2026-01-13T05:00:00Z
6+
categories: ["经验分享"]
7+
author: "Wei Shen"
8+
tags: ["经验", "算法", "数据结构"]
9+
draft: false
10+
---
11+
12+
## 如何学习算法
13+
14+
就像学习现有软件的使用方法一样,去官网看英文文档是最准确的方式。
15+
中文文档读起来更快,但往往不全面,或存在翻译问题。
16+
学习算法,最好的方式也是去读文献。
17+
不过,如果是比较基础和应用广泛的算法,看中英文介绍也可以。
18+
其实我看文献和长篇介绍也头大,所以有时候直接看代码,反而能更快地理解算法。
19+
20+
如今,大家喜欢都看视频来学习,也是一种不错的方式。
21+
但是千万不要局限于中文视频,英文的高质量视频也很多的,多搜总有收获。
22+
比如油管上Ben Langmead (Bowtie2 作者)的系列视频,
23+
如 Algorithms for DNA Sequencing (其实我也没看,不过我看其内容挺广的),
24+
Burrows-Wheeler Indexing (我看了,但没看完)。
25+
26+
最后就是,可以在Google Scholar上关注感兴趣的同行,获得特定领域的文献推送,长期关注自己感兴趣的方向,持续学习。
27+
28+
## 如何提高编程能力
29+
30+
首先,如果可以,请选择一门编译型语言,比如C/C++/Go/Rust。
31+
当然Python也是可以的,只是性能稍差(如果不用其他语言写底层代码的话)。
32+
33+
接着,除了掌握基础的语法、标准库、常见数据结构之外,最好的方式是通过重写经典数据结构和算法来练手。
34+
我重写过CountMinSketch、BWT和FM-index、Minimizer、FracMinHash、Kmers编辑码等,
35+
后来根据兴趣或需求从文献复现的有StrobeMers、LexicHash、WFA等。
36+
WFA是做LexicMap的中途,花了4周全身心投入实现的,后续断断续续做了一些优化。
37+
上述的包都在[Github](https://github.com/shenwei356?tab=repositories)开源了的,都能直接拿来用。
38+
39+
重新发明轮子其实是个很好的锻炼机会。
40+
一是锻炼编程(算法、数据结构、性能优化)能力。甚至很多人看不上的、简单的FASTA/Q文件解析,我都迭代过很多版本,从中学到很多。
41+
二是启发新的方向,比如[LexicMap](https://bioinf.shenwei.me/LexicMap/)核心算法基于LexicHash,但是我们做了很多大的改进。
42+
而其中很多细节和灵感又源自于先前多个项目的积累,包括SeqKit、kmers、unikmer、TaxonKit、KMCP等。
43+
44+
我为什么要发明那么多轮子?
45+
因为Go语言缺少很多生物信息学的库;为了保证跨平台编译,又不想使用其他语言的库,所以只能自己写。
46+
渐渐的,时间长了,自己也得到了锻炼。
47+
如果大家使用的语言有现成的优秀的库,直接用就可以了。不过,原创的算法还是得自己写。
48+
49+
至于如何进一步提高编程能力呢,这里推荐一本书,《深入理解计算机系统》,我每读一次都能获得一些性能改进的灵感。
50+
另外,可以结合一些性能分析软件,比如go的pprof工具,就能更快地优化软件性能。
51+
不过有时候,还需要更复杂的技术,比如SIMD。
52+
Go语言不支持SIMD指令,但支持Go汇编语言,我还为此花了几周时间从头学汇编语言,来优化一个[函数](https://github.com/shenwei356/pand)
53+
54+
最后,一切都要源于兴趣,喜欢并投入大量的精力学习和练习,一定有收获。念念不忘(甚至游戏、洗澡、跑步的时候),必有回响。

content/cn/news/_index.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

content/cn/news/post-2.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

content/cn/pages/join.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ draft: false
3030
- **生物信息学/数学/物理/计算机等专业**,或有较强的算法设计/数学分析/软件开发能力。
3131
- **有编程经验**,会使用一门编程语言(如Python, C/C++/Go/Rust)解决问题,最好是编译语言。
3232
- **有独立完整的科研项目经验**,发表专业相关SCI论著或已有公开的preprint。
33-
- **较强英语水平**,CET6及以上。
33+
- **较强英语水平**,CET6及以上(招生简章要求)
3434

3535

3636
##### 2. 硕士研究生

content/cn/t.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
1. 关于算法学习
2+
3+
就像学习现有软件的使用方法一样,去官网看英语文档是最准确的方式。中文文档读起来更快,但往往不全面,或存在翻译问题。学习算法,最好也是去读文献。如果是比较基础和应用广泛的算法,看中英文介绍也可以。其实我看文献和长篇介绍也头大,所以有时候直接看代码,或许能更快的理解算法。
4+
5+
现在,大家喜欢看视频来学习,也可以理解。但是千万不要局限于中文视频,英文的高质量视频也很多的,多搜总有收获。比如油管上 Ben Langmead (Bowtie2作者) 的系列视频,如 Algorithms for DNA Sequencing (其实我也没看,不过我看内容挺广的), Burrows-Wheeler Indexing (我看了,但没看完)。
6+
7+
最后就是,可以在Google Scholar上关注感兴趣的同行,获得特定领域的文献推送,长期关注自己感兴趣的方向,持续学习。
8+
9+
2. 关于编程能力的提高
10+
11+
首先,如果可以,请选择一门编译型语言,比如C/C++/Go/Rust。当然Python也是可以的,只是性能稍差(如果不用其他语言写底层代码的话)。
12+
13+
接着,除了掌握基础的语法、标准库、常见数据结构之外,最好的方式是通过重写经典数据结构和算法来练手。我重写过CountMinSketch、BWT和FM-index、Minimizer、FracMinHash、Kmers编辑码等,后面根据兴趣从文献复现的有StrobeMers、LexicHash、WFA等。
14+
15+
重新发明轮子其实是很好的锻炼机会。一是锻炼编程(算法、数据结构、性能优化)能力。甚至很多人看不上的、简单的FASTA/Q文件解析,我都迭代过很多版本,从中学到很多。二是启发新的方向,比如LexicMap核心算法是LexicHash,但是我做了很多大的改进,其中很多细节和灵感又源自于先前多个项目的积累:kmers、unikmer、TaxonKit、KMCP等。所以LexicMap从零开始到投稿NBT和送审,一年时间都不到(当然也有其他因素,比如这个研究的方向在确定后目标非常明确)。
16+
17+
题外话:我为什么要发明那么多轮子?因为Go语言缺少很多库,只能自己写,无意中锻炼了自己~。如果大家的语言有现成的优秀的库,直接用就可以了,不过原创的算法还是得自己写。
18+
19+
推荐一本书:《深入理解计算机系统》,我每读一次都能获得一些性能改进的灵感。
20+
21+
最后,一切都要源于兴趣,喜欢并投入大量的精力学习和练习,一定有收获。念念不忘(甚至游戏、洗澡、跑步的时候),必有回响。

content/english/pages/join.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ draft: false
1212

1313
#### Positions
1414

15-
1. Master students, [details in Chinese](/cn/join).
15+
1. PhD students, [details in Chinese](/cn/join).
16+
2. Master students, [details in Chinese](/cn/join).

0 commit comments

Comments
 (0)