eg for Ric Sherlock’s example, modified for unequal sample sizes:
Apologies for non-alignment, as seen on iPad anyway.
]'X Y'=: 'actg' {~ 2 30 ?@$ 4
catctaagtcgataatccacttacttccgg
cagcaaggacaggtgctaatacacactcgc
[X =: 'actg' {~ 40?@$ 4
ttagcacttccctcagagttacccacactagctggtgcag
fr1 each X;Y Nb. Absolute frequencies, using sorted nubs as base
+---------+--------+
|9 13 8 10|10 9 7 4|
+---------+--------+
rfr1 each X;Y. NB. Relative freqs
+--------------------+------------------------------+
|0.225 0.325 0.2 0.25|0.333333 0.3 0.233333 0.133333|
+--------------------+------------------------------+
NB. Comparisons
crfr X;Y Nb. Absolute
9 13 8 10
10 9 7 4
load'~/user/temp.ijs'
crfr X;Y. NB. Relative
0.225 0.325 0.2 0.25
0.333333 0.3 0.233333 0.133333
You can supply your “alphabet” as Left argument..
'tagc' fr1 X NB. In your preferred order!
10 9 8 13
fns below sign off,
Mike
NB. absolute frequencies for one set
fr1 =: 3 : 0
y fr1~ /:~ ~. y
:
alf =. x
ser =. y
<:@#/.~ alf, ser
)
NB. relative frequencies for one set
rfr1 =: (%+/)@:fr1
NB. compare frequencies
cfr =: 3 : 0
y cfr~ /:~ ~.;y
:
alf =. x
sers=. y
alf&fr1 every y
)
NB. compare relative frequencies
crfr =: 3 : 0
y crfr~ /:~ ~.;y NB. Default base is sorted nub of all inputs.
:
alf =. x
sers=. y
alf&rfr1 every y
)
Sent from my iPad
NB ... lost previous posts here!
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm