logo       

[ruby-list:42427] Re: 空白行を除くための行数の数え方: msg#00081

lang.ruby.japanese

Subject: [ruby-list:42427] Re: 空白行を除くための行数の数え方

神戸さま 片山さま

遠藤です

もうしおくれました。GENBANKのデータを処理しようとしています。

レスポンスが遅くてすみません。
まず、
1
% sed -e '/^\/\//q' (元のファイル) > (加工されたファイル)
は、うまくいきました。ただし、とうこうではぬけていた問題として複数レコードで
は、二番め以降がなくなってしまいました。

first record
----
----
//

second record
---
----
//

2
片山さんからのほうほうは、最初はうまくいったのですが、下記のBioRubyのコード
の実行を試みた後は、以下のエラーが返されてしまい、実行できなくなりました。

getgb.rb:8: undefined method `strip!' for #<Bio::GenBank:0x2aaaab3c7198> (NoMethodError)
from getgb.rb:7:in `each_entry'
from getgb.rb:7

filestrip2.rb:4: warning: regex literal in condition

コード
getgb.rb>>>>>>>>>>>>

#!/usr/bin/env ruby

require 'bio'

ff=Bio::FlatFile.new(Bio::GenBank, ARGF)
sgb=[]
ff.each_entry do |gb|
gb.strip!
p gb.definition
p gb.organism
p gb.taxonomy
gb.features.each do |feature|
p feature.feature
# p feature.position
end
# p gb.features
end

---------------------------
filestrip2.rb>>>>>>>>>

#!/usr/bin/env ruby

ARGF.each do |line|
print line unless /^$/
end

---------------
何度もすみませんが、お知恵をいただけるとさいわいです。



> 遺伝子のデータを処理しています。
> ダウンロードしたデータは
> //
> という記号で終わるのですが、その下に二行余計な行が入っているために、処理
がう
> まく行きません。
目的の「処理」は、トライされているRubyのスクリプトとはまったく別物なの
でしょうか?

> 下記のやり方を取ろうと考えているのですが、もっとエレガントな方法を御存知
の方
> がいらっしゃれば、御助言いただけないでしょうか。
行の番号に捕らわれすぎている気がします。

> 1ファイルの行数を調べる
> 2'//'で始まる行の行番号を調べ、その最大数を求める
> 3ファイルのうち2で決めた行数のみを新たに保存する。
"//"の行が来た時点で、ファイルを読むのを止めては、どうでしょう? Ruby
じゃありませんが、

% sed -e '/^\/\//q' (元のファイル) > (加工されたファイル)

といったことがされたい気がします。

--
神戸 隆博(かんべ たかひろ) at 仕事場


_________________________________________________________________
迷惑メールやウイルスへの対策も万全「MSN Hotmail」 http://promotion.msn.co.jp/hotmail/




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise