| | |
match data with another value in another file
![]() |
•
•
Join Date: Oct 2008
Posts: 1
Reputation:
Solved Threads: 0
hi,
I got this program from one of forums:
http://www.perlguru.com/gforum.cgi?post=32920
its something like this:
-------------------------------------------------------------------------
open(IN, "/path/outModified.pl") or die "$!";
while (my $line = <IN>) {
chomp($line);
my @array = (split (/\s+/, $line))[6, 7, 8];
# print "@array\n";
push @points, [ @array ];
}
close(IN);
print '@points : ', Dumper \@points;
open my $out_file, '>', "/path/dist_modified.pl" or die "cannot open: $!\n";
for my $i1 ( 0 .. $#points -1 ){
my ( $x1, $y1, $z1 ) = @{ $points[$i1] };
for my $i2 ( 1 .. $#points){
my ( $x2, $y2, $z2 ) = @{ $points[$i2] };
my $dist = sqrt(($x2 - $x1)**2 + ($y2 - $y1)**2 + ($z2 - $z1)**2);
print $out_file "153L.pdb: the distance between CA $i1 and CA $i2 = $dist\n";
}
}
close $out_file or die "cannot close file: $!\n";
========================================
Thanks to Shawnhcorey and KevinR.
my doubt is, if i have to compare the $dist with another file in the directory which has the data:
col1 col2
1 2.69
2 2.97032
3 3.25064
4 3.53096
5 3.81128
6 4.0916
7 4.37192
can I match the value of $dist with the column 2(col2) with its nearest higher value and retrieve the column1(col1) corresponding to it? I dont know how to write this in perl. Can you help...
To make it clear, if the value of $dist = 2.84, then the program should search for second row in the file [2 2.97032] and print only 2. that is the first column.it this possible. I think i have to use regular expressions?? or pattern matching??
I got this program from one of forums:
http://www.perlguru.com/gforum.cgi?post=32920
its something like this:
-------------------------------------------------------------------------
open(IN, "/path/outModified.pl") or die "$!";
while (my $line = <IN>) {
chomp($line);
my @array = (split (/\s+/, $line))[6, 7, 8];
# print "@array\n";
push @points, [ @array ];
}
close(IN);
print '@points : ', Dumper \@points;
open my $out_file, '>', "/path/dist_modified.pl" or die "cannot open: $!\n";
for my $i1 ( 0 .. $#points -1 ){
my ( $x1, $y1, $z1 ) = @{ $points[$i1] };
for my $i2 ( 1 .. $#points){
my ( $x2, $y2, $z2 ) = @{ $points[$i2] };
my $dist = sqrt(($x2 - $x1)**2 + ($y2 - $y1)**2 + ($z2 - $z1)**2);
print $out_file "153L.pdb: the distance between CA $i1 and CA $i2 = $dist\n";
}
}
close $out_file or die "cannot close file: $!\n";
========================================
Thanks to Shawnhcorey and KevinR.
my doubt is, if i have to compare the $dist with another file in the directory which has the data:
col1 col2
1 2.69
2 2.97032
3 3.25064
4 3.53096
5 3.81128
6 4.0916
7 4.37192
can I match the value of $dist with the column 2(col2) with its nearest higher value and retrieve the column1(col1) corresponding to it? I dont know how to write this in perl. Can you help...
To make it clear, if the value of $dist = 2.84, then the program should search for second row in the file [2 2.97032] and print only 2. that is the first column.it this possible. I think i have to use regular expressions?? or pattern matching??
Perl Syntax (Toggle Plain Text)
open(FILE,"<test.txt"); $compare=$ARGV[0]; # this takes the compare on the command line while(<FILE>){ chomp; $x++; next if($x==1); #this skips the label at the top ($n,$value)=split(/\s/); print "$n\n" if($compare>$last_value && $compare<=$value); $last_value=$value; }
mishel Offline
Newbie Poster
What does the community think of mishel?
Community Reputation Points: 10
Reputation-Altering Power: 0
How helpful is mishel at solving threads?
Solved Threads Replied To: 0
Last Activity: Oct 6th, 2008
I'm eager to help too, but posting code for a person that has not been here for months is probably something I wouldn't do. Its your decision though.
Welcome to DaniWeb, good to have another perl person around.
Newbie Poster
What does the community think of mishel?
Community Reputation Points: 10
Reputation-Altering Power: 0
How helpful is mishel at solving threads?
Solved Threads Replied To: 0
Last Activity: Oct 6th, 2008
I'm eager to help too, but posting code for a person that has not been here for months is probably something I wouldn't do. Its your decision though.
Welcome to DaniWeb, good to have another perl person around.
Last edited by KevinADC; Feb 5th, 2009 at 1:32 pm.
Thanks for the welcome. I was just looking through threads in which no one had posted an answer and wasn't looking at activity. I just joined Daniweb this week, because I had a system problem and posted in another forum. I appreciated the help so much I thought I'd come to the area where I have the most experience (which is perl - I've been using perl - probably poorly at times - for about 15 years). Just trying to give back a bit.
Mitchems
Mitchems
![]() |
Similar Threads
- Limiting grep searches to a given file type? (IT Professionals' Lounge)
- help me pls~~ data report data section does not match data source (Visual Basic 4 / 5 / 6)
- have some problems with pattern match hope you can help!! (Perl)
- A function which will transfer the data from a file to STL( vector or map) object. (C++)
- file open code in VB (Visual Basic 4 / 5 / 6)
- Help with comparing user input to a text file! (C++)
- Lines are being skipped in the input file. (Visual Basic 4 / 5 / 6)
Other Threads in the Perl Forum
- Previous Thread: number of regex match
- Next Thread: perl form problem
| Thread Tools | Search this Thread |





