I usually write a small basic program for such problems.
post/send the file, I send the result ?
post/send the file, I send the result ?
You are currently viewing the SEQanswers forums as a guest, which limits your access. Click here to register now, and join the discussion
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;
my $usage = "perl ".basename($0)." seqsi.fas seqsj.fas > seqs_out.fas";
my $infilei = shift or die $usage;
my $infilej = shift or die $usage;
my %hash;
open my $ini, '<', $infilei or die $!;
while (my ($id, $seq) = fasta_it(\*$ini)) {
$hash{$seq} = $id;
}
close $ini;
open my $inj, '<', $infilej or die $!;
while (my ($id, $seq) = fasta_it(\*$inj)) {
if (exists $hash{$seq}) {
print join "\n", ">".$hash{$seq}, "$seq\n";
}
}
close $inj;
sub fasta_it {
my ($fh) = @_;
local $/ = "\n>";
return unless my $entry = $fh->getline;
chomp $entry;
my ($id, $seq) = split /\n/, $entry, 2;
defined $id && $id =~ s/>//g;
return ($id, $seq);
}
perl fetch_by_seq.pl i.fas j.fas >1123-11234 aaaaaa >232-23424 tttttt >416-2 gggggg >13424241234-23423 cccccc
$ while read i ; do grep -B 1 $i original.fas ; done < sequence_file > out.fas
return unless my $entry = $fh->getline;
return unless my $entry = <$fh>;
return unless my $entry = $fh->getline;
return unless my $entry = <$fh>;
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;
my $usage = "perl ".basename($0)." seqsi.fas seqsj.fas > seqs_out.fas";
my $infilei = shift or die $usage;
my $infilej = shift or die $usage;
my $hash = index_seq($infilei);
open my $inj, '<', $infilej or die $!;
{
local $/ = '>';
while (my $line = <$inj>) {
chomp $line;
my ($seqid, @seqparts) = split /\n/, $line;
my $seq = join '', @seqparts;
next unless defined $seqid && defined $seq;
if (exists $hash->{$seq}) {
print join "\n", ">".$hash->{$seq}, "$seq\n";
}
}
}
close $inj;
sub index_seq {
my ($file) = @_;
open my $in, '<', $file or die $!;
my %hash;
{
local $/ = '>';
while (my $line = <$in>) {
chomp $line;
my ($seqid, @seqparts) = split /\n/, $line;
my $seq = join '', @seqparts;
next unless defined $seqid && defined $seq;
$hash{$seq} = $seqid;
}
}
close $in;
return \%hash;
}
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;
my $usage = "perl ".basename($0)." seqsi.fas seqsj.fas > seqs_out.fas";
my $infilei = shift or die $usage;
my $infilej = shift or die $usage;
my $hash = index_seq($infilei);
open my $inj, '<', $infilej or die $!;
{
local $/ = '>';
while (my $line = <$inj>) {
chomp $line;
my ($seqid, @seqparts) = split /\n/, $line;
my $seq = join '', @seqparts;
next unless defined $seqid && defined $seq;
if (exists $hash->{$seq}) {
print join "\n", ">".$hash->{$seq}, "$seq\n";
}
}
}
close $inj;
sub index_seq {
my ($file) = @_;
open my $in, '<', $file or die $!;
my %hash;
{
local $/ = '>';
while (my $line = <$in>) {
chomp $line;
my ($seqid, @seqparts) = split /\n/, $line;
my $seq = join '', @seqparts;
next unless defined $seqid && defined $seq;
$hash{$seq} = $seqid;
}
}
close $in;
return \%hash;
}
$ /bin/bash $ while read i ; do grep -B 1 $i original.fas ; done < sequence_file > out.fas
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by SEQadmin2, Yesterday, 12:03 PM
|
0 responses
19 views
0 reactions
|
Last Post
by SEQadmin2
Yesterday, 12:03 PM
|
||
|
Started by SEQadmin2, Yesterday, 11:40 AM
|
0 responses
14 views
0 reactions
|
Last Post
by SEQadmin2
Yesterday, 11:40 AM
|
||
|
Started by SEQadmin2, 05-28-2026, 11:40 AM
|
0 responses
29 views
0 reactions
|
Last Post
by SEQadmin2
05-28-2026, 11:40 AM
|
||
|
Started by SEQadmin2, 05-26-2026, 10:12 AM
|
0 responses
31 views
0 reactions
|
Last Post
by SEQadmin2
05-26-2026, 10:12 AM
|
Comment