Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Matching position and output neighbors within 500 distant Post 302884169 by fat on Saturday 18th of January 2014 03:12:38 AM
Old 01-18-2014
Quote:
Originally Posted by migurus
awk based solution
Code:
 
 $ cat test.sh
 awk '
{
        if (NR == FNR)  ### reading 1st file
                        ### accumulate 2nd column values in array of key values
        {
                arr[NR] = $2;
        }
        else            ### reading 2nd file and check for value of 2nd column
                        ### to be within +/- 500 of any accumulated key values
        {
                maxval = $2 + 500;
                minval = $2 - 500;
                for ( x in arr )
                {
                        if(minval <= arr[x] && arr[x] <= maxval)
                                print $0;
                }
         }
}
' $1 $2

Here is how I ran it
Code:
 
 $ cat a
1       11567687        snpid20
1       153881  snpid1
2       56768799        snpid7
3       3156760 snpid4
3       1567687 snpid7
$ cat b
1       11567600        snpid20
3       1000000 snpid7
 $ test.sh b a
 1       11567687        snpid20

hope this is what you were looking for

Thanks
This almost works except that it outputs all +/- 500 range of the keys. for example when searching for +/- 500 of the key 11567687 in "1 11567687 snpid20" it should output all values +/- 500 from second file that have their column 1 as 1, when searching for +/- 500 of key 3156760 "3 3156760 snpid4" it should output all values +/- 500 from second file that have their column 1 as 3.
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

View file on distant machine

Hello everybody, I have a program that connects to a distant machine using a specific port. Then inetd executes a command on that distant machine (M2). What I'd like to do is write a scipt that, given the port, it gives me the command executed. (The script should be launched on the local... (5 Replies)
Discussion started by: Majid
5 Replies

2. Shell Programming and Scripting

Cut output to same byte position

Hi folks I have a file with thousands of lines with fixed length fields: sample (assume x is a blank space) 111333xx444TTTLKOPxxxxxxxxx I need to make a copy of this file but with only some of the field positions, for example I'd like to copy the sample to the follwing: so I'd like to... (13 Replies)
Discussion started by: HealthyGuy
13 Replies

3. Shell Programming and Scripting

Fill the values between -500 to 500 -awk

input -200 2.4 0 2.6 30 2.8 output -500 0 -499 0 -488 0 .......... .......... .... -200 2.4 .... ... 0 2.6 (6 Replies)
Discussion started by: quincyjones
6 Replies

4. Shell Programming and Scripting

loop with OK or NOK output at the same position

Hi This is my script $ cat ./openldap_test.sh #!/bin/bash for ldap_srv in 'testserver1' 'server2' 'server3' 'server4' 'testserver5' 'server6' 'server7' 'server8' 'server9' 'testserver10'; do ldapsearch -LLL -x -H ldap://$ldap_srv '(cn=examplebox)' memberNisNetgroup > /dev/null if ; then... (1 Reply)
Discussion started by: slashdotweenie
1 Replies

5. Shell Programming and Scripting

Find the position of lines matching string

I have a file with the below format, GS*8***** ST*1******** A* B* E* RMR*123455(This is the unique number to locate this row) F* SE*1*** GE** GS*9***** ST*2 H* J* RMR*567889(This is the unique number to locate this row) L* SE* GE***** (16 Replies)
Discussion started by: Muthuraj K
16 Replies

6. UNIX for Dummies Questions & Answers

Help with finding matching position on strings

I have a DNA file like below and I am able to write a short program which finds/not an input motif, but I dont understand how I can include in the code to report which position the motif was found. Example I want to find the first or all "GAT" motifs and want the program to report which position... (12 Replies)
Discussion started by: pawannoel
12 Replies

7. UNIX for Dummies Questions & Answers

Process on distant server

Hello, I have a question regarding how to manage a process on a distant unix server. I perform calculations on a dedicated Unix server (RedHat ELS5.5) using Matlab (installed on the server). The commands are written in a terminal session (via ssh) on my laptop (MacBook Pro6,2 - MacOS X 10.6.7).... (1 Reply)
Discussion started by: antonino_ch
1 Replies

8. Shell Programming and Scripting

Shell script to retrieve first degree neighbors

I have a file with two columns and each pair in the rows denote 2 connected nodes in the network file, edge_list.txt. Given a query file, input.txt, I want to retrieve the nodes that are directly connected (first degree neighbors) to the nodes present in the input.txt. Kindly help. ... (3 Replies)
Discussion started by: Sanchari
3 Replies

9. Shell Programming and Scripting

awk usage for position matching

i have a requirement like this if the line contains from position 294 to 299 is equal to "prabhu" ,then print entire line . i want to use awk awk '{if(substr(294-299) == 'prabhu') print "line" }' filename (1 Reply)
Discussion started by: ptappeta
1 Replies

10. UNIX for Dummies Questions & Answers

String pattern matching and position

I am not an expert with linux, but following various posts on this forum, I have been trying to write a script to match pattern of charters occurring together in a file. My file has approximately 200 million characters (upper and lower case), with about 50 characters per line. I have merged all... (5 Replies)
Discussion started by: biowizz
5 Replies
Algorithm::Munkres(3pm) 				User Contributed Perl Documentation				   Algorithm::Munkres(3pm)

NAME
Algorithm::Munkres - Perl extension for Munkres' solution to classical Assignment problem for square and rectangular matrices This module extends the solution of Assignment problem for square matrices to rectangular matrices by padding zeros. Thus a rectangular matrix is converted to square matrix by padding necessary zeros. SYNOPSIS
use Algorithm::Munkres; @mat = ( [2, 4, 7, 9], [3, 9, 5, 1], [8, 2, 9, 7], ); assign(@mat,@out_mat); Then the @out_mat array will have the output as: (0,3,1,2), where 0th element indicates that 0th row is assigned 0th column i.e value=2 1st element indicates that 1st row is assigned 3rd column i.e.value=1 2nd element indicates that 2nd row is assigned 1st column.i.e.value=2 3rd element indicates that 3rd row is assigned 2nd column.i.e.value=0 DESCRIPTION
Assignment Problem: Given N jobs, N workers and the time taken by each worker to complete a job then how should the assignment of a Worker to a Job be done, so as to minimize the time taken. Thus if we have 3 jobs p,q,r and 3 workers x,y,z such that: x y z p 2 4 7 q 3 9 5 r 8 2 9 where the cell values of the above matrix give the time required for the worker(given by column name) to complete the job(given by the row name) then possible solutions are: Total 1. 2, 9, 9 20 2. 2, 2, 5 9 3. 3, 4, 9 16 4. 3, 2, 7 12 5. 8, 9, 7 24 6. 8, 4, 5 17 Thus(2) is the optimal solution for the above problem. This kind of brute-force approach of solving Assignment problem quickly becomes slow and bulky as N grows, because the number of possible solution are N! and thus the task is to evaluate each and then find the optimal solution.(If N=10, number of possible solutions: 3628800 !) Munkres' gives us a solution to this problem, which is implemented in this module. This module also solves Assignment problem for rectangular matrices (M x N) by converting them to square matrices by padding zeros. ex: If input matrix is: [2, 4, 7, 9], [3, 9, 5, 1], [8, 2, 9, 7] i.e 3 x 4 then we will convert it to 4 x 4 and the modified input matrix will be: [2, 4, 7, 9], [3, 9, 5, 1], [8, 2, 9, 7], [0, 0, 0, 0] EXPORT
"assign" function by default. INPUT
The input matrix should be in a two dimensional array(array of array) and the 'assign' subroutine expects a reference to this array and not the complete array. eg:assign(@inp_mat, @out_mat); The second argument to the assign subroutine is the reference to the output array. OUTPUT
The assign subroutine expects references to two arrays as its input paramenters. The second parameter is the reference to the output array. This array is populated by assign subroutine. This array is single dimensional Nx1 matrix. For above example the output array returned will be: (0, 2, 1) where 0th element indicates that 0th row is assigned 0th column i.e value=2 1st element indicates that 1st row is assigned 2nd column i.e.value=5 2nd element indicates that 2nd row is assigned 1st column.i.e.value=2 SEE ALSO
1. http://216.249.163.93/bob.pilgrim/445/munkres.html 2. Munkres, J. Algorithms for the assignment and transportation Problems. J. Siam 5 (Mar. 1957), 32-38 3. FranA~Xois Bourgeois and Jean-Claude Lassalle. 1971. An extension of the Munkres algorithm for the assignment problem to rectangular matrices. Communication ACM, 14(12):802-804 AUTHOR
Anagha Kulkarni, University of Minnesota Duluth kulka020 <at> d.umn.edu Ted Pedersen, University of Minnesota Duluth tpederse <at> d.umn.edu COPYRIGHT AND LICENSE
Copyright (C) 2007-2008, Ted Pedersen and Anagha Kulkarni This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. perl v5.10.0 2008-10-22 Algorithm::Munkres(3pm)
All times are GMT -4. The time now is 11:29 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy