次のようなサイトの表から、各 G タンパク質共役受容体の情報を抽出しようとしています。
http://www.iuphar-db.org/DATABASE/ObjectDisplayForward?objectId=1&familyId=1
より具体的には、列 (Ligand、Sp.、Action、Affinity、Units) から情報を取得したいと考えています。現在、抽出から空のファイルを出力しているため、指定したテーブルをモジュールが認識していないようです。これまでに書いたコードは、各 G タンパク質共役受容体の情報に対応する各 HTML ファイルを通過するように設計されています。
use warnings;
use strict;
use HTML::TableExtract;
my @names = `ls /home/wallakin/LINDA/ligands/iuphar/data/html`;
foreach (@names)
{
#Delete empty lines in HTML
open (IN, "</home/wallakin/LINDA/ligands/iuphar/data/html/$_") or die "Can't open html";
my @htmllines = <IN>;
close IN;
for (@htmllines)
{
s/^\s*$// or s/^\s*//;
}
open (OUT, ">/home/wallakin/LINDA/ligands/iuphar/data/html2/$_");
print OUT @htmllines;
close OUT;
#Extract data from HTML tables based on column headers
my $te = HTML::TableExtract->new (
headers => [ qw(Ligand Sp. Action Affinity Units) ],
depth => 1,
count => 1
);
$te->parse_file("/home/wallakin/LINDA/ligands/iuphar/data/html2/$_");
my $output = $_;
$output =~ s/\.html/\.txt/g;
open (RESET, ">/home/wallakin/LINDA/ligands/iuphar/data/ligands/$output");
close RESET;
open (DATA, ">>/home/wallakin/LINDA/ligands/iuphar/data/ligands/$output");
binmode (DATA, ":utf8");
binmode (STDOUT, ":utf8");
foreach my $ts ($te->tables)
{
print "Table (", join(',', $ts->coords), "):\n";
foreach my $row ($te->rows)
{
foreach ( grep {defined} @$row)
{
$_ =~ s/\n/\ /g;
$_ =~ s/\r//g;
#$_ =~ s/\s+/ /g;
}
#Each column's data separated by tabs
print DATA join ("\t", grep {defined} @$row),"\n";
}
}
close DATA;
}
私は、各 G タンパク質共役受容体のそれぞれの HTML ファイルをすべて取得し、それをこのプログラムに渡している以前のプログラム (ありがたいことに動作しました) を作成しました。正しいヘッダー、深さ、またはカウントを使用したかどうかはわかりません。
この投稿が馬鹿げているように聞こえる場合は申し訳ありませんが、私はバイオインフォマティクスとプログラミング全般に不慣れです。助けてくれてありがとう!