Sponsored Content
Full Discussion: Venn Data Maker
Homework and Emergencies Emergency UNIX and Linux Support Venn Data Maker Post 302979857 by RudiC on Friday 19th of August 2016 06:32:32 PM
Old 08-19-2016
OK, try this:
Code:
awk '
NR==1   {print "Name", $0
         CC = NF
         for (i=1; i<2^CC; i++) Set[i] = 0
         next
        }
        {for (i=1; i<=CC; i++)  {T[$i]
                                 R[$i,i] = 1
                                }
        }
END     {delete T[""]
         for (t in T)   {printf "%s", t
                         for (i=1; i<=CC; i++)  printf ",%s", R[t,i]+0
                         printf RS
                         TMP = 0
                         for (i=1; i<=CC; i++)  TMP = TMP + 2^(i-1)*R[t,i]
                         Set[TMP]++
                        }
         for (i=1; i<2^CC; i++) {printf "Set"; for (j=0; j<CC; j++) if (int(i/2^j)%2) printf "%d", j+1; printf "=%d%s", Set[i], RS }
        }
' FS=,  file
Name,Set1,Set2,Set3,Set4,S5,S6
g1,1,1,1,1,1,1
g2,1,1,0,0,1,1
g3,0,0,1,0,1,1
g4,1,0,0,1,0,0
g5,1,1,1,1,1,1
g6,1,1,0,0,1,1
g7,0,1,0,1,1,0
g8,0,0,1,1,0,0
Set1=0
Set2=0
Set12=0
Set3=0
Set13=0
Set23=0
Set123=0
Set4=0
Set14=1
Set24=0
Set124=0
Set34=1
.
.
.
Set145=0
Set245=1
Set1245=0
.
.
.
Set256=0
Set1256=2
Set356=1
Set1356=0
.
.
.
Set23456=0
Set123456=2

Lines: 63 ( = 2^6 -1 )
Sum (set-values): 8 (8 different genes)

A bit complicated as awk doesn't provide binary operations nor print formats.

Last edited by RudiC; 08-19-2016 at 07:37 PM..
These 2 Users Gave Thanks to RudiC For This Post:
 

2 More Discussions You Might Find Interesting

1. Programming

maker

how can i remake a program to crash a harddrive using unix:rolleyes: (2 Replies)
Discussion started by: flomper
2 Replies

2. Shell Programming and Scripting

Venn diagram results using awk

Hi, I have the following files 1.txt a 10 b 11 c 12 d 13 e 14 f 15 g 16 h 17 i 18 j 19 k 20 2.txt a 21 b 22 (15 Replies)
Discussion started by: jacobs.smith
15 Replies
Sort::Key::Maker(3pm)					User Contributed Perl Documentation				     Sort::Key::Maker(3pm)

NAME
Sort::Key::Maker - multikey sorter creator SYNOPSYS
# create a function that sorts strings by length: use Sort::Key::Maker sort_by_length => sub { length $_}, qw(integer); # create a multikey sort function; # first key is integer sorted in descending order, # second key is a string in default (ascending) order: use Sort::Key::Maker ri_s_keysort => qw(-integer string); # some sample data... my @foo = qw(foo bar t too tood mama); # and now, use the sorter functions previously made: # get the values on @foo sorted by length: my @sorted = sort_by_length @foo; # sort @foo inplace by its length and then by its value: ri_s_keysort_inplace { length $_, $_ } @foo; DESCRIPTION
Sort::Key::Maker is a pragmatic module that provides an easy to use interface to Sort::Key multikey sorting functionality. It creates multikey sorting functions on the fly for any key type combination and exports them to the caller package. The key types natively accepted are: string, str, locale, loc, integer, int, unsigned_integer, uint, number, num and support for other types can be added via Sort::Key::Register (or also via Sort::Key::register_type()). USAGE use Sort::Key::Maker foo_sort => @keys; exports two subroutines to the caller package: "foo_sort (&@)" and "foo_sort_inplace (&@)". Those two subroutines require a sub reference as their first argument and then respectively, the list to be sorted or an array. For instance: use Sort::Key::Maker bar_sort => qw(int int str); @bar=qw(doo tomo 45s tio); @sorted = bar_sort { unpack "CCs", $_ } @bar; # or sorting @bar inplace bar_sort_inplace { unpack "CCs", $_ } @bar; use Sort::Key::Maker foo_sort => &genmultikey, @keys; when the first argument after the sorter name is a reference to a subroutine it is used as the multikey extraction function. The generated sorter functions doesn't require neither accept one, i.e.: use Sort::Key::Maker sort_by_length => sub { length $_ }, 'int'; my @sorted = sort_by_length qw(foo goo h mama picasso); SEE ALSO
Sort::Key, Sort::Key::Register. Sort::Maker also available from CPAN provides similar functionality. AUTHOR
Salvador Fandin~o, <sfandino@yahoo.com> COPYRIGHT AND LICENSE
Copyright (C) 2005 by Salvador Fandin~o This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available. perl v5.14.2 2010-04-16 Sort::Key::Maker(3pm)
All times are GMT -4. The time now is 02:47 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy