使用 PHP 解析 fasta 文件
Parse a fasta file using PHP
我有一个 fasta 文件 input.fa 看起来像这样:
>KJH325_Org_name_strain
ANNTTHWQLPMCVREEDFSC
>IJA254.1_Org_name
HITYYPQLKSSCMART
>ASDL658_Org_name_str
TTILPQWYERSAASMNCFGHDKLCC
and so on.
我想使用 PHP 将这些短序列输入到 Mysql table 中,这样 KJH325
(即第一个下划线 '_' 之后的 ID ) 进入 ID 列,其余 Org_name or Org_name_strain
进入 orgname 列,下一行中的短序列进入 sequence 列。
我试过这个:
<?php
$servername = "localhost";
$dbname = "shortseqdb";
// Create connection
$conn = mysqli_connect($servername, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";
$fasta_file = 'input.fa';
$header='';
$id = '';
$org_name = '';
$lines = file($fasta_file) or die("Unable to open file!");
foreach ($lines as $line) {
$header = strpos($line, '>'); <---- UPDATED
if ($header!==false) {
$key = trim(substr($line, 0, $header));
$value = trim(substr($line, $header+1));
list($id, $org_name) = explode("_",$key);
$sql = "INSERT INTO `seqs` (`ID`, `org_name`, `sequence`) VALUES ($id, $org_name, $value)";
}
}
if (mysqli_query($conn, $sql)) {
echo "Values inserted successfully in the table seqs\n";
} else {
echo "Error inserting values: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
连接成功,但出现以下错误:
Connected successfully
Notice: Undefined offset: 1 in C:\xampp\htdocs\test.php on line 26
Error inserting values: No database selected
谁能帮我看看这个脚本哪里错了?谢谢!
我发现问题出在用户名和密码上。我查看了同一数据库中 XAMPP 的权限,结果发现我还必须指定用户名和密码。
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "shortseqdb";
// Create connection
$conn = mysqli_connect($servername, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";
// select a db
mysqli_select_db($conn,"shortseqdb") or die("Could not select the specified database");
并用mysqli_db_connect($connect,dbname)
到select指定的数据库。然后完美运行。
感谢您的评论。
我有一个 fasta 文件 input.fa 看起来像这样:
>KJH325_Org_name_strain
ANNTTHWQLPMCVREEDFSC
>IJA254.1_Org_name
HITYYPQLKSSCMART
>ASDL658_Org_name_str
TTILPQWYERSAASMNCFGHDKLCC
and so on.
我想使用 PHP 将这些短序列输入到 Mysql table 中,这样 KJH325
(即第一个下划线 '_' 之后的 ID ) 进入 ID 列,其余 Org_name or Org_name_strain
进入 orgname 列,下一行中的短序列进入 sequence 列。
我试过这个:
<?php
$servername = "localhost";
$dbname = "shortseqdb";
// Create connection
$conn = mysqli_connect($servername, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";
$fasta_file = 'input.fa';
$header='';
$id = '';
$org_name = '';
$lines = file($fasta_file) or die("Unable to open file!");
foreach ($lines as $line) {
$header = strpos($line, '>'); <---- UPDATED
if ($header!==false) {
$key = trim(substr($line, 0, $header));
$value = trim(substr($line, $header+1));
list($id, $org_name) = explode("_",$key);
$sql = "INSERT INTO `seqs` (`ID`, `org_name`, `sequence`) VALUES ($id, $org_name, $value)";
}
}
if (mysqli_query($conn, $sql)) {
echo "Values inserted successfully in the table seqs\n";
} else {
echo "Error inserting values: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
连接成功,但出现以下错误:
Connected successfully
Notice: Undefined offset: 1 in C:\xampp\htdocs\test.php on line 26
Error inserting values: No database selected
谁能帮我看看这个脚本哪里错了?谢谢!
我发现问题出在用户名和密码上。我查看了同一数据库中 XAMPP 的权限,结果发现我还必须指定用户名和密码。
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "shortseqdb";
// Create connection
$conn = mysqli_connect($servername, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";
// select a db
mysqli_select_db($conn,"shortseqdb") or die("Could not select the specified database");
并用mysqli_db_connect($connect,dbname)
到select指定的数据库。然后完美运行。
感谢您的评论。