這又是個matlab程式,上次幫同學寫了個提取序列的函數,這次要能自動將檔案夾中所有檔案自動的識別並建立對應的檔案夾,檔案夾名要和檔案中某個欄位相同。
好人做到底吧,首先上網搜怎麼樣建立檔案夾,百度下,立刻出來了,用system()函數。如下
tmp1=['mkdir ' dir_final]; system(tmp1); %檔案夾建立完成
我試了下,用下面的函數系統就自動關機了,,哈哈,
fun='shutdown -s';system(fun);
你運行了?哈哈,別急趕緊在運行裡輸入shutdown -a 就取消自動關機了,不過要快,就30秒時間。
不扯了,趕緊做正事。
這次的檔案內容如下
LOCUS HUMHOX4A 5834 bp DNA PRI 26-NOV-1992DEFINITION Human homeobox HOX 4A gene for homeodomain protein, complete cds.ACCESSION D11117NID g219879KEYWORDS HOX 4A homeodomain protein; homeobox.SOURCE Human peripheral lymphocytes, cell line AKIBA, AKIBA genomic cosmid library, DNA. ORGANISM Homo sapiens Eukaryotae; mitochondrial eukaryotes; Metazoa; Chordata; Vertebrata; Eutheria; Primates; Catarrhini; Hominidae; Homo.REFERENCE 1 (bases 1 to 5834) AUTHORS Taniguchi,Y., Fujii,A. and Moriuchi,T. TITLE Cloning and sequencing of the human homeobox gene HOX4A JOURNAL Biochim. Biophys. Acta 1132, 332-334 (1992) MEDLINE 93041940COMMENT Submitted (14-MAY-1992) to DDBJ by: Yasushi Taniguchi Dept. of Cell Biology Tokai University Schoo
不同的是這次有n個這樣的檔案,要建立n個檔案夾,對應的檔案夾名如欄位ACCESSION後面的6個字串所示,
毫無疑問又要用大迴圈了,而且這個大迴圈外面還要套個遍曆放這寫檔案的檔案夾中內容的迴圈,(把這句一定要讀懂),matlab內建的dir函數就有這個功能。
DIRS=dir([SCR_DIR,'*.txt']);bit_flag=0;n=length(DIRS);for i=1:nif ~DIRS(i).isdir
這就起到了遍曆的功能。
接下來要開啟檔案了,並找對應的欄位,因為這個欄位總是在前面,所以少讀點內容就可以了。
file_name=SCR_DIR; file_name=strcat(file_name,DIRS(i).name); file_id=fopen(file_name,'r'); file_content=fread(file_id,500); fclose(file_id); for i=1:480 switch file_content(i) case {'A'} if(strncmp(char(file_content(i:i+9))','ACCESSION',9))
讀取了欄位就可以建立檔案夾了,
dir_tmp=char(file_content(i+12:i+13+5)); dir_tmp=dir_tmp(1:6); dir_final=[DIR_NAME_PART,dir_tmp']; tmp1=['mkdir ' dir_final]; system(tmp1); %檔案夾建立完成 bit_flag=1;
全部遍曆完就可以了。