Q client for J

QJ is a C extension for q, working as a frontend of J engine DLL, so we can use the J engine and the J Application Library within q. It has been tested on l64 with j701beta.
kxcontrib/zuoqianxu/qj

Install

  • In qj dir, run mkqjfe.sh, then copy qjfe.so to $QHOME/l64/
  • Install j701beta from j701a_linux64.sh
  • Install J Application Library: run jconsole
    load 'pacman'
    'update' jpkg ''
    'install' jpkg 'all'
    

Functions

function role
jeinit[x] Load libj.so from directory x
jefree[] Free libj.so
j2q[x] Get q data from J name x
q2j[x;y] Set q data y to J name x
jedo[x] Run J code x, then return result
jemv[x;y] Run J code x with right operand y, then return result
jedv[x;y;z] Run J code x with left operand x and right operand y ,then return result
initj[x] Load libj.so from directory x, then load profile.ijs from x– required for using libraries

Datatype map

J q
boolean boolean
char char
double double
int long
complex atom A 2-item double array (Re A;Im A)
complex array L 2-item list whose items are double arrays (Re L;Im L)
boxed array mixed list: items will be converted for supported datatypes

For convenience on l64, q int will be auto-converted to J int, but 0N 0W -0W will not be correctly converted

Sample usage

Start a q session, then load qj.q.

q)\l qj.q
Load J runtime:
q)initj["/opt/j64-701/bin"];
Set data to J:
q)q2j["a";(01b;2 3 4j;5;1 0n 0w -0w -2f;"abcd")]
Get data from J:
q)2jq["a"]
01b
2 3 4j
5j
1 0n 0w -0w -2
"abcd"
Eval J sentences:
q)jedo "i.2 3 4"
0 1 2  3    4 5 6  7    8 9 10 11
12 13 14 15 16 17 18 19 20 21 22 23
Call J monads:
q)jemv["q:"] 1234567890j
2 3 3 5 3607 3803j
Call J dyads:
q)jedv["e.";"cat";"abcd"]
110b
Use J plot library:
q)jedo "load 'plot'";
q)jemv["plot"] 100?1f;
q).q.plot:jedv["plot"];
q)"type bar" plot 10?1f;
Use J fftw library:
q)jedo "load 'math/fftw'";
q)jemv["fftw"]  til 8
28 -4       -4 -4       -4 -4        -4 -4
0  9.656854 4  1.656854 0  -1.656854 -4 -9.656854
Use J tara library to read Excel files:
q)jedo "load 'tables/tara'";
q)\wget http://www.iso15022.org/MIC/ISO10383_MIC_v1_78.xls -O /tmp/10383.xls
q){flip (`$x[0])!flip 1_x} trim jedo "\":>readexcel '/tmp/10383.xls'"
COUNTRY     CC   MIC    INSTITUTION DESCRIPTION              ACR     CITY    ..
-----------------------------------------------------------------------------..
"ALBANIA"   "AL" "XTIR" "TIRANA STOCK EXCHANGE"              ""      "TIRANA"..
"ALGERIA"   "DZ" "XALG" "ALGIERS STOCK EXCHANGE"             ""      "ALGIERS..
"ARGENTINA" "AR" "BACE" "BUENOS AIRES CEREAL EXCHANGE"       ""      "BUENOS ..
..