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

2021-02-24 生信寶典
生物信息領域常用語言

個人認為:是否能熟悉使用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。優點是可配置模板,可直接編輯伺服器腳本(省略上傳步驟),高效的代碼調試。

編程模板

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

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



use POSIX qw(strftime);
use Getopt::Std;
use File::Basename;





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});








































open INPUT,"<$opts{i}";


open OUTPUT,">$opts{o}";



my %count;

while ($opts{h}>0) {
   <INPUT>;
   $opts{h}--;
}

while (<INPUT>) {
   chomp;
   my @tmp=split/\t/;
   print OUTPUT "$tmp[0]\t$tmp[1]\n";
}
close INPUT;
close OUTPUT;





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";





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/

相關焦點

  • 生物信息之程序學習
    想想自己大學開始自學生信的時候,可以說是一頭霧水,只知道先學習編程,查了查資料,是要學習 perl語言,但是不知道要在什麼地方寫,怎麼去運行。費了些勁,在windows上安裝好perl,寫個文本文件,改下後綴,發現文件的圖標變成了perl的圖標,雙擊就可以運行了,不會寫命令行參數,不會輸出重定向,一種傻呵呵的體驗。
  • 【生信菜鳥經】如何系統入門Perl
    node_id=738558,就是需要理解你寫的程序是如何判斷你的變量的,你以為的不一定是你以為的。內建變量 就是perl語言設計的時候定義了一大堆的全局變量($_ $, $0 $> $< $! $. @ARGV @F @_ @INC %ENV %SIG) 。外表上看起來都是一個$ @ %符號後面加上一大堆的奇奇怪怪的字符,表示一些特殊變量,這也是perl語言飽受詬病的原因。但是有些非常重要,懂了它之後寫程序會方便。
  • 【Perl語言進階筆記(一)】Getopt::Long模塊 + Perl單行命令
    廢話不多說,喊完就跑1.用Getopt::Long模塊傳參每種程式語言幾乎都有自己的參數解析解決方案,而在Perl中,我們基本選擇使用Getopt::Long,它既可以解析單個字母的短選項(以一個連字符-開頭,例如:-l),也可以解析長選項(以兩個連字符--開頭,例如:--long)use Getopt::Long;my $data   = "file.dat"; my $length = 24;
  • Perl語言學習筆記05:子程序
    /my_program fred barney betty這條命令的含義:執行當前目錄的my_program程序,讓它依次處理文件fred、barney和betty(當然,這樣寫的話,文件也要在程序執行的目錄下)▲若不提供任何參數,程序會從標準輸入流採集數據(也就是
  • perl語言十分鐘入門【零基礎可入】
    零基礎,perl語言,10分鐘入門
  • 生信人也要學學拉丁文
    對每一位生信人來說,從邁入生信門檻時開始,就開始同各種語言打交道。除了各種計算機語言外,就是英語了。相信大家在語言上一定都做了不少功課。
  • 實例解析Perl substr函數應用
    實例解析Perl substr函數應用 本文向大家簡單介紹一下Perl substr函數應用,在編寫perl程序的時候,我們有時需要截取一個字符串中的部分內容,Perl substr函數就可以實現此功能。
  • 生信人的R語言視頻教程-語法篇-第一章:與R的第一次相親
    MedBioInfoCloud:對於生物信息學專業的同學來說,R,Python,perl,Linux估計都不陌生,感覺都很難,不知如何入手,這裡給點個人意見,生物信息學專業的同學大多數都是生物學或者醫學專業出身,對計算機可能會產生一種恐懼,感覺會很難,那是一開始別人告訴你要學的太多了。
  • Perl 6 真的太煩人了?
    主要應用於 Unix 系統維護功能、CGI 腳本、Web站點維護自動化等場景的 Perl,是一種功能非常豐富的電腦程式語言。它像 C 一樣強大,像 awk、sed 等腳本描述語言一樣方便。不過,還記得曾於 2015 年發布的 Perl 6,是歷經 15 年時間開發的最終成果,為何會這麼長?
  • MySQL 事務預編譯查詢和Perl DBI簡化
    許多WEB應用程式內部通常重複運行帶不同自變量的相同資料庫查詢,或以全有或全無塊的形式執行一組相關查詢。要滿足這些要求,大多數資料庫系統(包括MySQL)支持預編譯查詢與事務,多數腳本語言(如PHP和Perl)也擁有內置函數訪問這些資料庫特性。
  • PostgreSQL連接Perl
    安裝PostgreSQL可以用Perl使用Perl DBI模塊,這是一個Perl程式語言的資料庫訪問模塊集成。它定義了一套方法,變數和約定,提供一個標準的資料庫接口。
  • Perl教程 - 正則表達式
    Perl教程 - 標量Perl教程 - 數組Perl教程 - 哈希Perl教程 - 文件操作Perl在IC設計中有廣泛的應用,而Perl的正則表達式則由其常見,它與Tcl等語言中的正則表達式有一定的相似之處
  • 你不知道c語言寫的程序要多塊——以NGS fastq文件reads計數為例
    本人 以fastq.gz文件計數為例分別以perl語言和c語言實現了代碼,具體如下:#!
  • 送你一個超級簡單但很實用的程序模板,用於收集C語言知識點
    以前我剛開始學習C語言的時候經常需要驗證一些比較模糊的知識點,或則想要驗證一些函數時,所以我每次都會建一個test.c文件,然後在這個文件裡寫我的測試代碼,測試完畢後常常會刪掉該文件。下次再遇到同樣的問題的時候,可能又是記不清楚了,常常又需要測試一遍,這是件很浪費時間的事情。
  • 第10節:一個用來學習C語言的模板程序
    但是現在我要提出另外一種方法,學習單片機的C語言,不一定非要用VC調試軟體,也可以直接在堅鴻51學習板上學習和上機練習的。我可以做一個調試模板程序給初學者使用,利用8位數碼管和16個LED燈來顯示不同的變量結果,利用3個按鍵來切換顯示不同的變量,這樣就能達到類似在VC平臺下用printf語句來觀察變量的效果。
  • 大數據之Hive安裝配置
    配置完成hiveSQL的元資料庫之後再開始安裝、配置hive。The followingadditional packages will be installed:libaio1 libevent-core-2.0-5 libhtml-template-perl mysql-client-5.7
  • 11 種程式語言的常用按鍵
    (點擊上方公眾號,可快速關注)來源:伯樂在線 - 張秀君我經常會在程式語言之間來迴轉換;我總是想知道,如果使用不同的語法會怎樣
  • 1萬字!徹底看懂微信小程序
    小程序寫的時候用的是javascript這種網頁開發語言,首次運行會把這個「網頁」緩存到本地,所以不是不用下載,而是下載的包比較小而已。app.json是可以配置整個程序的底部導航tab、導航欄的背景顏色(貌似不能弄成圖片,如果希望做成京東app超級品牌日那種全屏氛圍渲染,建議banner圖片上半部分使用漸變色過渡到你配置的狀態欄背景顏色)、導航欄標題、導航欄顏色、是否支持下拉刷新等。app.js是全局的一些方法,比如獲取用戶信息,全局數據的配置地方。