生信人寫程序1. Perl語言模板及配置

生物信息領域常用語言

個人認為:是否能熟悉使用Shell(項目流程搭建)+R(數據統計與可視化)+Perl/Python/Java…(膠水語言,數據格式轉換,軟件間銜接)三門語言是一位合格生物信息工程師的標準。

生物信息常用語言非常廣泛,我常用的有Perl, R, Shell,此外參與網頁制作還用過PhP+mySQL,寫博客用Markdown。這些其實都是非常小眾的語言,如果和計算機專業的人交流,對方可能沒聽過這些語言。本系列“生信人寫程序”主要以Perl為主,并伴隨一些零星的R和Shell編程的經驗和技巧。對于生信Perl使用人員有個交流和互相提高的平臺,讓新人少走點彎路。對于沒有任何Perl基礎強例建議別入坑,想學生信找Python教程吧,不解釋看下圖。

TIOBE世界編程語言使用排行
在這里插入圖片描述

我們可以看到世界前三是Java, C, C++,大家都聽說過;第四是Python,目前在生領領域有取代Perl地位的趨勢,目前Perl列第9(世界十大語言之一)下降一位。R語言的數據分析領域有應用越來越廣泛,今年上升兩位至14名;Shell由于版本和各類較多,在50-100名間有4種,此語言只建議快速解決小問題,不建議寫太長的任務,很容易跨平臺不兼容。

總結:

生信常用語言:Shell+R+Python/Perl

世界三大語言:Java, C, C++

生信語言的排名:Python 4th, Perl 9th, R 16th

Perl寫作環境模板推薦

很多人三行兩行或直接命令行用perl直接解決問題,雖然快,但是不容重用和別人使用。因此,良好的寫作環境和模板是效率和專業的體現,即提高自己的代碼重用性,也方便交流和他人使用。

編程環境IDE

推薦使用:Editplus 4.0,網上到處都是注冊機和序列號,隨便用,下載址搜不到可以點鏈接:http://pan.baidu.com/s/1jHJJ1qe 密碼:6xm6。優點是可配置模板,可直接編輯服務器腳本(省略上傳步驟),高效的代碼調試。

編程模板

是解決常用功能的寫作模板,如幫助文檔部分(提高代碼重用和版本管理,方便其他人使用),命令行參數管理(可讀性的命令行是程序的基礎),程序運行時間統計(項目時間管理),常用文件讀取數據結構樣式(方便修改文件輸入和輸出)等;

下面是實現這樣功能的模板:

#!/usr/bin/perl -w
# 加載時間管理,參數管理,文件名和路徑處理的基礎包,無須安裝
use POSIX qw(strftime);
use Getopt::Std;
use File::Basename;###############################################################################
#命令行參數據的定義和獲取,記錄程序初始時間,設置參數默認值
#Get the parameter and provide the usage.
###############################################################################
my %opts;
getopts( 'i:o:d:h:', \%opts );
&usage unless ( exists $opts{i} && exists $opts{o} );
my $start_time=time;
print strftime("Start time is %Y-%m-%d %H:%M:%S\n", localtime(time));
print "Input file is $opts{i}\nOutput file is $opts{o}\n";
print "Database file is $opts{d}\n" if defined($opts{d});
$opts{h}=1 unless defined($opts{h});###############################################################################
#讀入的數據或注釋文件,用于與輸入文件比較或注釋(可選),提供三種方式
#Read the database in memory(opt)
###############################################################################
#open DATABASE,"<$opts{d}";
# 1. 散列結構數據庫,要求數據文件有唯一ID并且無順序要求
#my %database; #database in hash
#while (<DATABASE>) {
#    chomp;
#    my @tmp=split/\t/;
#    $database{$tmp[1]}=$tmp[2];
#}
# 2. 數組結構數據庫,無唯一ID,但有順序要求
#my (@tmp1,@tmp2); #database in array
#while (<DATABASE>) {
#    chomp;
#    my @tmp=split/\t/;
#    push @tmp1,$tmp[1];
#    push @tmp2,@tmp[2];
#}
#close DATABASE;
# 3. 批量數據文件,讀取一批有相似結構的文件
#open a list file
#my %list;
#my @filelist=glob "$opts{i}";
#foreach $file(@filelist){
#    open DATABASE,"<$file";
#    $file=basename($file);
#    while (<DATABASE>) {
#        my @tmp=split/\t/;
#        $list{$file}{nr}++;
#    }
#    close DATABASE;
#}###############################################################################
#Main text.
###############################################################################
# 正文部分,讀取輸入文件,列出輸入和輸入文件的三行作為示例,方便編程處理數據
open INPUT,"<$opts{i}";
#chrm0    snppos1          ref2     mat_gtyp3        pat_gtyp4        c_gtyp5  phase6   mat_all7 pat_all8 cA9      cC10      cG11      cT12      winning SymCls  SymPval BindingSite     cnv
#1       4648    C       A       C       M       PHASED  C       A       0       11      0       0       M       Asym    0.0009765625    -1      0.902113
open OUTPUT,">$opts{o}";
#chrm    snppos          ref     mat_gtyp        pat_gtyp        c_gtyp  phase   mat_all pat_all cA      cC      cG      cT      winning SymCls  SymPval BindingSite     cnv
#1       4648    C       A       C       M       PHASED  C       A       0       11      0       0       M       Asym    0.0009765625    -1      0.902113my %count;
# h參數用于去除有文件頭的行
while ($opts{h}>0) { #filter header<INPUT>;$opts{h}--;
}
# 輸入和輸入處理部分,常用按行讀取處理并輸入,默認按tab分割數據
while (<INPUT>) {chomp;my @tmp=split/\t/;print OUTPUT "$tmp[0]\t$tmp[1]\n";
}
close INPUT;
close OUTPUT;###############################################################################
#Record the program running time!
# 輸出程序運行時間
###############################################################################
my $duration_time=time-$start_time;
print strftime("End time is %Y-%m-%d %H:%M:%S\n", localtime(time));
print "This compute totally consumed $duration_time s\.\n";###############################################################################
#Scripts usage and about.
# 程序的幫助文檔,良好的描述是程序重用和共享的基礎,也是程序升級和更新的前提
###############################################################################
sub usage {die(qq!
Usage:    template.pl -i inpute_file -o output_file -d database -h header num
Function: Template for Perl
Command:  -i inpute file name (Must)-o output file name (Must)-d database file name-h header line number,s default 0
Author:   Liu Yong-Xin, liuyongxin_bio\@163.com, QQ:42789409
Version:  v1.0
Update:   2017/6/2
Notes:    
\n!)
}

模板導入Editplus

將上述代碼保存為template.pl,在editplus中選擇Tools — Preference — Template — Perl,點擊template.pl右邊的…按鍵,選擇你自己的template.pl即可,以后選擇perl腳本會自己加載該模板。 希望對大家有幫助!

Reference

  1. https://www.tiobe.com/tiobe-index/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10194.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在macOS中開發的Django項目部署到局域網的Win10服務器上

由于windows10是日常辦公電腦&#xff0c;沒有服務器基本環境&#xff0c;部署工程耗費不少時間&#xff0c;記錄一下。 1、安裝Python 訪問Python官方下載頁面&#xff1a;Python Downloads&#xff0c;下載適用于Windows的安裝程序并按照提示進行安裝。開發環境python版本是…

Python可以自學但是千萬不要亂學,避免“埋頭苦學”的陷阱!

前言 Python可以自學但是千萬不要亂學&#xff01; 歸根結底因為學習是個反人性的過程&#xff01; 復盤沒學下去的網課&#xff0c;都有以下特點&#xff1a; &#x1f605; 臣妾聽不懂啊&#xff01; 初次接觸編程遇到太多抽象高深的概念&#xff0c;不了解老師口中的一個…

基于51單片機的二氧化碳檢測及調節系統仿真

基于51單片機的二氧化碳檢測及調節系統 &#xff08;仿真&#xff0b;程序&#xff09; 功能介紹 具體功能&#xff1a; 1.二氧化碳傳感器測得二氧化碳數據后經過單片機處理。 2.LCD1602實時顯示&#xff0c;第一行顯示測得的濃度值&#xff0c;第二行顯示報警閾值。 3.測…

棱鏡七彩參編《網絡安全技術 軟件供應鏈安全要求》國家標準發布

據全國標準信息公共服務平臺消息顯示&#xff0c;《網絡安全技術 軟件供應鏈安全要求》&#xff08;GB/T 43698-2024&#xff09;國家標準已于2024年4月25日正式發布&#xff0c;并將于2024年11月1日正式實施。棱鏡七彩作為主要編制單位之一參與該國家標準的編制&#xff0c;為…

Taro 快速開始

大家好我是蘇麟 , 今天聊聊Trao. 官網 : Taro 介紹 | Taro 文檔 (jd.com) 點擊快速開始 全局安裝 CLI 初始化一個項目 選擇配置 : 根據自己需求選擇 安裝失敗先不用管 , 用前端工具打開項目 npm install 安裝 , 顯示安裝失敗 怎么解決 ? : 查看報錯信息 百度 , 問 AI 工具 運…

算法練習第六十天|84. 柱狀圖中最大的矩形

84. 柱狀圖中最大的矩形 柱狀圖中最大的矩形 class Solution {public int largestRectangleArea(int[] heights) {int[] newHeight new int[heights.length 2];System.arraycopy(heights, 0, newHeight, 1, heights.length);newHeight[heights.length1] 0;newHeight[0] 0;…

算法學習筆記(最短路——spfa)

前置&#xff1a;bellman-ford s p f a spfa spfa是 B e l l m a n ? F o r d Bellman-Ford Bellman?Ford算法的改進。在 B e l l m a n ? F o r d Bellman-Ford Bellman?Ford中&#xff0c;我們在每一輪中枚舉了每一條邊&#xff0c;但是實際上&#xff0c;在上一輪中沒有…

睿爾曼機械臂ROS控制

下載git工程 git clone https://github.com/RealManRobot/rm_robot.git安裝配置 catkin build rm_msgs source devel/setup.bash catkin build source setup.bash這里注意&#xff0c;如果采用setup.sh多半不會成功&#xff0c;必須要source setup.bash文件&#xff0c;ros才…

train_gpt2_fp32.cu

源程序 llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <assert.h> #include <float.h> #include <string.h> #include…

二叉樹的最小深度和二叉樹的節點數

二叉數的最小深度&#xff1a; 思路&#xff1a;和最大深度一樣需要用到回溯遞歸的方法 代碼大致內容 判斷函數是否為空&#xff0c;如果是空return 0&#xff1b; 定義一個變量接收遞歸函數返回的值&#xff08;左&#xff09; 定義一個變量接收遞歸函數返回的值&#xf…

力扣每日一題-收集垃圾的最少總時間-2024.5.11

力扣題目&#xff1a;收集垃圾的最少總時間 題目鏈接: 2391.收集垃圾的最少總時間 題目描述 代碼純享版 class Solution {public int garbageCollection(String[] garbage, int[] travel) {int sum 0;int last_M -1,last_P -1, last_G -1;for(int i 0; i < garbage.…

以Azure為例的SSO

由于文章的篇幅有限&#xff0c;無法將全部的代碼貼上來&#xff0c;如想要看完整案例&#xff0c;請在公眾號文章中留言(其他平臺很少看…畢竟最近印度同事的UI組件庫搞得我好煩) 1.關于SSO 單點登錄又稱之為SSO,全稱為 Single Sign On &#xff0c;一般在多個應用系統中&…

Github2024-05-10開日報 Top10

根據Github Trendings的統計&#xff0c;今日(2024-05-10統計)共有10個項目上榜。根據開發語言中項目的數量&#xff0c;匯總情況如下&#xff1a; 開發語言項目數量Python項目4TypeScript項目4JavaScript項目1Lua項目1C項目1Rust項目1Dart項目1 RustDesk: 用Rust編寫的開源遠…

U盤文件剪切丟失怎么辦?揭秘原因并給出恢復方法

在日常生活和工作中&#xff0c;U盤已成為我們不可或缺的數據存儲和傳輸工具。但有時候&#xff0c;我們在對U盤中的文件進行剪切操作時&#xff0c;會遇到文件丟失的情況。這種突如其來的數據消失往往會讓人感到驚慌和困惑。那么&#xff0c;為什么U盤剪切時文件會丟失呢&…

運營模型—歸因分析(Attribution Analysis)

運營模型—歸因分析(Attribution Analysis) 隨著互聯網技術和業務的發展,廣告投放相關的業務也隨之興起。那么廣告投放的效果評估也就隨之而來。廣告的投放一般都是收費模式,所以選中的渠道商的好壞直接和自己的利益掛鉤。于是,「歸因分析」便最早應用在了廣告投放行業。(…

IDEA 常見設置問題

OutOfMemoryError IDEA 第一次運行項目時&#xff0c;會報錯誤 - java.lang.OutOfMemoryError: Java heap space / insufficient memory&#xff0c;解決辦法是&#xff1a; 將圖示部分由默認的 700 改為 2048。 import * 工程lint檢查時不允許使用import *&#xff0c;IDE…

Python中如何讀取文件夾及其文件:使用os模塊詳解

路徑os Python中如何讀取文件夾及其文件&#xff1a;使用os模塊詳解引入os模塊讀取文件夾獲取當前工作目錄更改工作目錄列出目錄內容 讀取文件夾下的文件檢查是文件還是目錄使用os.path.join()**重點內容**&#xff1a;**使用os模塊來讀取和管理文件及目錄&#xff0c;特別是os…

使用Selenium自動化操作瀏覽器!

Selenium可以自動化操作瀏覽器&#xff0c;例如&#xff1a;選擇元素&#xff0c;輸入&#xff0c;點擊等&#xff0c;可以用于軟件自動化測試&#xff0c;爬蟲等工作&#xff0c;也可以做你想做的任何事情。 本文環境&#xff1a; Python3.12&#xff0c;Windows10&#xff0…

python實現星號打印出金字塔

#編程實現下列圖形的打印 a input() for i in range(int(a)//21): num * * ((i1)*2-1) print(num.center(int(a), )) 編譯后通過。輸入20后得到下面的星號金字塔

拓撲排序——數據結構

拓撲排序是對有向無環圖&#xff08;DAG&#xff09;的頂點進行線性排序的方法。關鍵在于每個頂點代表了一個任務&#xff0c;而每條有向邊代表了任務間的先后依賴關系。這個排序保證了每個任務只在它依賴的任務完成后才開始。 拓撲排序的本質是這樣的&#xff1a;你有一堆任務…