예제 #1
0
def pyq_predict(n):
	q('.debug.ST:.z.P')
	print('generating knn prediction using kdb+ and python')
	qpreds=q("{knn[pyedist2;training.features;training.labels;5;x#'testing.features]}",n)
	print('done, time taken:')
	print(q('.z.P-.debug.ST'))
	return qpreds
예제 #2
0
def run(q_prompt=False):
    if len(sys.argv) > 1:
        try:
            q(r'\l %s' % sys.argv[1])
        except kerr:
            pass
        else:
            del sys.argv[1]
    if q_prompt:
        q()
    ptp.run()
예제 #3
0
파일: magic.py 프로젝트: xbsd/pyq
def q(line, cell=None, _ns=None):
    """Run q code.

    Options:
       -l (dir|script) - pre-load database or script
       -h host:port - execute on the given host
       -o var - send output to a variable named var.
       -i var1,..,varN - input variables
    """
    if _ns is None:
        _ns = vars(sys.modules['__main__'])
    input = output = None
    preload = []
    try:
        if cell is None:
            r = pyq.q(line)
        else:
            h = pyq.q('0i')
            if line:
                for opt, value in getopt(line.split(), "h:l:o:i:")[0]:
                    if opt == '-l':
                        preload.append(value)
                    elif opt == '-h':
                        h = pyq.K(str(':' + value))
                    elif opt == '-o':
                        output = str(value)  # (see #673)
                    elif opt == '-i':
                        input = str(value).split(',')
            r = None
            for script in preload:
                h(pyq.kp(r"\l " + script))
            if input is not None:
                for chunk in logical_lines(cell):
                    func = "{[%s]%s}" % (';'.join(input), chunk)
                    args = tuple(_ns[i] for i in input)
                    r = h((pyq.kp(func),) + args)
            else:
                for chunk in logical_lines(cell):
                    r = h(pyq.kp(chunk))
    except pyq.kerr as e:
        print("'%s" % e)
    else:
        if output is not None:
            if output.startswith('q.'):
                pyq.q('@[`.;;]', output[2:], r)
            else:
                _ns[output] = r
        else:
            if r != Q_NONE:
                return r
예제 #4
0
def test_inside_ci():
    # Test designed for Gitlab CI
    if 'GITLAB_CI' not in os.environ:
        pytest.skip("This test designed for Gitlab CI only.")

    qver, qmin = os.environ.get('KDB_VER', '0.0').split('.')
    assert q(".z.K") == int(qver) + 0.1 * int(qmin)
예제 #5
0
def test_k0a(q, shape):
    size = numpy.prod(shape)
    x = 1.0 + q.til(size)
    z = q('#', list(shape), x)
    a = numpy.empty(shape)
    _n.k0a(a, z)
    while z._t == 0:
        z = z.raze
    assert z == a.flatten()
예제 #6
0
파일: test_ci.py 프로젝트: zjc5415/pyq
def test_inside_ci():
    # Test designed for Gitlab CI
    if 'GITLAB_CI' not in os.environ:
        pytest.skip("This test designed for Gitlab CI only.")

    qmin = int(os.environ.get('QMIN', '0'))
    qver = int(os.environ.get('QVER', '0'))

    assert q(".z.K") == qver + 0.1 * qmin
예제 #7
0
def py_predict(n):
	q('.debug.ST:.z.P')			#start a timer in q 
	features_train=np.array(q('flip training.features'))
	features_test=np.array(q('{x#flip testing.features}',n))
	labels_train=np.array(q('training.labels'))
	labels_test=np.array(q('{x#testing.labels}',n))
	classifier=build_classifier(features_train,labels_train)
	print('generating prediction using sklearn nearest neighbors')
	preds=classifier.predict(features_test)     	#TODO, respect N
	print('done time taken:')
	print(q('.z.P-.debug.ST'))
	return preds
예제 #8
0
파일: _pt_run.py 프로젝트: sashkab/pyq
def run(q_prompt=False):
    lines, columns = console_size()
    q(r'\c %d %d' % (lines, columns))
    if len(sys.argv) > 1:
        try:
            q(r'\l %s' % sys.argv[1])
        except kerr as e:
            print(e)
            raise SystemExit(1)
        else:
            del sys.argv[1]
    if q_prompt:
        q()
    ptp.run()
예제 #9
0
파일: magic.py 프로젝트: zjc5415/pyq
import os
from tempfile import mkstemp
import pyq
from io import StringIO
from getopt import getopt
import sys

STD_STREAM = [sys.stdin, sys.stdout, sys.stderr]


try:
    string_types = (str, unicode)
except NameError:
    string_types = (str,)

Q_NONE = pyq.q('::')


def logical_lines(lines):
    if isinstance(lines, string_types):
        lines = StringIO(lines)
    buf = []
    for line in lines:
        if buf and not line.startswith(' '):
            chunk = ''.join(buf).strip()
            if chunk:
                yield chunk
            buf[:] = []

        buf.append(line)
    chunk = ''.join(buf).strip()
예제 #10
0
def test_pypath():
    assert q('::', py.path.local('/abc/def')) == q("`:/abc/def")
예제 #11
0
 def connect(self):
     q.connectTp = q(
         '{hopen hsym x}'
     )  #Takes string as input, eg q.connectTp("localhost:5000") < the q interpreter will see this as a symbol
     self.handle = q.connectTp(self.tp)
예제 #12
0
from pyq import q, K

q.set(
    ':alpha/HDB/',
    q(
        '.Q.en', ':alpha',
        q('([]Name:`$(); Ask:`float$(); Bid:`float$(); Last:`float$(); Volume:`float$(); Time:`timestamp$())'
          )))
예제 #13
0
#	-------		------------------	-------------------------------
#	15Aug17		Joel Oliveira		Original version

from pyq import q
import math
import pandas as pd
import time
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn import preprocessing, cross_validation
import datetime
import os

# Make sure python and Kdb are running on the same process
print "Python process: ", os.getpid()
print "Kdb process: ", q('.z.i,.z.f')

# Load data from the file
q('trade:("DFFFFFFFFFFFF"; enlist ",")0:`:aapl.csv')

#q.trade.show()

# Create a new column HL_PCT
q('trade:update Hl_Pct:((Adj_High - Adj_Low) % Adj_Close) * 100.0 from trade')

# Create a new column PCT_CHANGE
q('trade:update Pct_Change:((Adj_Close - Adj_Open) % Adj_Open) * 100.0 from trade'
  )

# Remove non-used columns
q('trade: select Date, Adj_Close, Hl_Pct, Pct_Change, Adj_Volume from trade')
예제 #14
0
## usage pyq csv_drops/csv_loader.py -dir csv_drops/trade.csv
import pandas as pd
import numpy as np
from pyq import q
import sys

dir = sys.argv[
    1 + sys.argv.index('--dir')]  ## read csv directory from cmd line args
dt = pd.read_csv(dir)  #use of pandas read_csv
q.dt = [np.array(dt[x]) for x in dt.columns]  #convert dt columns into arrays
q.dt = q.dt.flip  # flip to the correct format for upsert
h = q.hopen('::5010')  # hopen to tickerplant
upsert2 = q('{[x;y].at.d:(x;y); y[;0] : "N"$string y[;0]; x upsert y}'
            )  # create function to update symbol timespan column
h((upsert2, 'trade', (q.dt)))
예제 #15
0
파일: magic.py 프로젝트: vishalbelsare/pyq
def q(line, cell=None, _ns=None):
    """Run q code.

    Options:
       -l (dir|script) - pre-load database or script
       -h host:port - execute on the given host
       -o var - send output to a variable named var.
       -i var1,..,varN - input variables
       -1/-2 - redirect stdout/stderr
    """
    if cell is None:
        return pyq.q(line)

    if _ns is None:
        _ns = vars(sys.modules['__main__'])
    input = output = None
    preload = []
    outs = {}
    try:
        h = pyq.q('0i')
        if line:
            for opt, value in getopt(line.split(), "h:l:o:i:12")[0]:
                if opt == '-l':
                    preload.append(value)
                elif opt == '-h':
                    h = pyq.K(str(':' + value))
                elif opt == '-o':
                    output = str(value)  # (see #673)
                elif opt == '-i':
                    input = str(value).split(',')
                elif opt in ('-1', '-2'):
                    outs[int(opt[1])] = None
        if outs:
            if int(h) != 0:
                raise ValueError("Cannot redirect remote std stream")
            for fd in outs:
                tmpfd, tmpfile = mkstemp()
                try:
                    pyq.q(r'\%d %s' % (fd, tmpfile))
                finally:
                    os.unlink(tmpfile)
                    os.close(tmpfd)
        r = None
        for script in preload:
            h(pyq.kp(r"\l " + script))
        if input is not None:
            for chunk in logical_lines(cell):
                func = "{[%s]%s}" % (';'.join(input), chunk)
                args = tuple(_ns[i] for i in input)
                if r != Q_NONE:
                    r.show()
                r = h((pyq.kp(func), ) + args)
                if outs:
                    _forward_outputs(outs)
        else:
            for chunk in logical_lines(cell):
                if r != Q_NONE:
                    r.show()
                r = h(pyq.kp(chunk))
                if outs:
                    _forward_outputs(outs)
    except pyq.kerr as e:
        print("'%s" % e)
    else:
        if output is not None:
            if output.startswith('q.'):
                pyq.q('@[`.;;:;]', output[2:], r)
            else:
                _ns[output] = r
        else:
            if r != Q_NONE:
                return r
예제 #16
0
def test_array(q):
    x = q('([]d:"d"$0 1;t:"t"$0 1)')
    a = _n.array(x)
    assert x.d == a['d']
예제 #17
0
def test_k2a_date(q, unit, x, y):
    dtype = 'M8[%s]' % unit
    a = numpy.empty([1], dtype)
    x = q(x).enlist
    _n.k2a(a, x)
    assert numpy.array_equiv(a, numpy.array([y], dtype))
예제 #18
0
def q_types(q):
    return q("{{key x$()}'[x t]!`short$t:where not null x}.Q.t")
예제 #19
0
def test_issue_615(q):
    x = q('0#`')
    a = _n.array(x)
    assert a.dtype == numpy.dtype('O')
예제 #20
0
파일: magic.py 프로젝트: zjc5415/pyq
def q(line, cell=None, _ns=None):
    """Run q code.

    Options:
       -l (dir|script) - pre-load database or script
       -h host:port - execute on the given host
       -o var - send output to a variable named var.
       -i var1,..,varN - input variables
       -1/-2 - redirect stdout/stderr
    """
    if cell is None:
        return pyq.q(line)

    if _ns is None:
        _ns = vars(sys.modules['__main__'])
    input = output = None
    preload = []
    outs = {}
    try:
        h = pyq.q('0i')
        if line:
            for opt, value in getopt(line.split(), "h:l:o:i:12")[0]:
                if opt == '-l':
                    preload.append(value)
                elif opt == '-h':
                    h = pyq.K(str(':' + value))
                elif opt == '-o':
                    output = str(value)  # (see #673)
                elif opt == '-i':
                    input = str(value).split(',')
                elif opt in ('-1', '-2'):
                    outs[int(opt[1])] = None
        if outs:
            if int(h) != 0:
                raise ValueError("Cannot redirect remote std stream")
            for fd in outs:
                tmpfd, tmpfile = mkstemp()
                try:
                    pyq.q(r'\%d %s' % (fd, tmpfile))
                finally:
                    os.unlink(tmpfile)
                    os.close(tmpfd)
        r = None
        for script in preload:
            h(pyq.kp(r"\l " + script))
        if input is not None:
            for chunk in logical_lines(cell):
                func = "{[%s]%s}" % (';'.join(input), chunk)
                args = tuple(_ns[i] for i in input)
                if r != Q_NONE:
                    r.show()
                r = h((pyq.kp(func),) + args)
                if outs:
                    forward_outputs(outs)
        else:
            for chunk in logical_lines(cell):
                if r != Q_NONE:
                    r.show()
                r = h(pyq.kp(chunk))
                if outs:
                    forward_outputs(outs)
    except pyq.kerr as e:
        print("'%s" % e)
    else:
        if output is not None:
            if output.startswith('q.'):
                pyq.q('@[`.;;:;]', output[2:], r)
            else:
                _ns[output] = r
        else:
            if r != Q_NONE:
                return r
예제 #21
0
파일: magic.py 프로젝트: vishalbelsare/pyq
import io
import os
from tempfile import mkstemp
import pyq
from getopt import getopt
import sys

StringIO = io.StringIO  # LGTM.com does not like double import
STD_STREAM = [sys.stdin, sys.stdout, sys.stderr]

try:
    string_types = (str, unicode)
except NameError:
    string_types = (str, )

Q_NONE = pyq.q('::')


def logical_lines(lines):
    """Merge lines into chunks according to q rules"""
    if isinstance(lines, string_types):
        lines = StringIO(lines)
    buf = []
    for line in lines:
        if buf and not line.startswith(' '):
            chunk = ''.join(buf).strip()
            if chunk:
                yield chunk
            buf[:] = []

        buf.append(line)
예제 #22
0
from pyq import q
from datetime import datetime
import argparse
import csv

#Defining kdb/q helper functions
q.connect = q('{hopen hsym x}')
q.typeMap = q(
    '`time`sym`price`size`bid`ask`asize`bsize`max_price`min_price`volume!("NSFIFFIIFFI")'
)
q.tradeTbl = q('([]time:"n"$(); sym:`symbol$();price:`float$();size:`int$())')
q.quoteTbl = q(
    '([]time:"n"$(); sym:`symbol$();bid:`float$();ask:`float$(); bsize:`int$();asize:`int$())'
)
q.aggTbl = q(
    '([]time:"n"$(); sym:`symbol$() ; max_price:`float$() ; min_price: `float$(); volume:`int$())'
)
q.header = q('{`$"," vs raze system raze "head -1 ",string x  }')
q.createTbl = q('{[datatypes;header]flip datatypes$header!()}')
q.row_data = q('{[datatypes;row] (raze string datatypes)$(string row) }')
q.send_update = q('{[handle;tbl;data] handle(`.u.upd;tbl;data)}')


def parseArgs():
    print("Parsing command line arguments")
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "-csv",
        help=
        "The filepath to the csv you want to publish to the kdb TP instance ",
        type=str)
예제 #23
0
from bittrex.bittrex import Bittrex, API_V2_0
from datetime import datetime
import time, dictKDB
from pyq import q, K

get_bittrex = Bittrex(None, None)
starttime = time.time()

q.load(':alpha/HDB/')

while True:
    market_result = get_bittrex.get_market_summaries()['result']
    for res in market_result:
        market_name = res['MarketName']
        ask = float(res['Ask'])
        bid = float(res['Bid'])
        last = float(res['Last'])
        volume = float(res['Volume'])
        dt = res['TimeStamp']
        if market_name in [
                'USDT-BTC', 'USDT-ETH', 'USDT-LTC', 'USDT-XRP', 'USDT-NEO',
                'USDT-BCC', 'USDT-ZEC', 'USDT-XMR', 'USDT-DASH'
        ]:
            ts = datetime.strptime(dt, '%Y-%m-%dT%H:%M:%S.%f')
            data = [market_name[5:], ask, bid, last, volume, ts]
            data[0] = q('`:alpha/sym?', data[0])
            q.insert(':alpha/HDB/', data)
            q.get(':alpha/HDB/').show()
    time.sleep(30.0)
예제 #24
0
    # def __del__(self):
    #     self.my_client.close_connection()


if __name__ == "__main__":
    # df = pd.read_csv("~/github/kdbLearn/companylist.csv")

    # c=pyq.q.conn(host="127.0.0.1",port=12345)
    # print(c('1+1'))
    # print(dir(q))

    # pyq.q.symbols.show()
    # pyq.q("\l /home/acer/github/kdbLearn/companylist")
    T0 = time.time()
    pyq.q(
        "symbols:(\"SSFSISS\";enlist\",\")0:`:/home/acer/github/kdbLearn/companylist.csv"
    )

    pyq.q(
        "quotes:(\"DSEEE\";enlist\",\")0:`:/home/acer/github/kdbLearn/quotes.csv"
    )

    # pyq.q("`sym`date xkey `quotes")
    # pyq.q("`Symbol xkey `symbols")

    pyq.q("getallsymbols:{`Symbol xasc select Symbol from symbols}")
    quotes = pyq.q("showquotes:{`show quotes}")
    quotes.show()

    x = pyq.q.getallsymbols()
    # x.show()
예제 #25
0
from pyq import q
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

#load the training data in q
print('loading data')
q('system"l knn.q"')
print('ready')
def build_classifier(X,y):
	neighbors=KNeighborsClassifier(n_neighbors=5,algorithm='brute',metric='euclidean')
	neighbors.fit(X,y)
	return neighbors
def py_predict(n):
	q('.debug.ST:.z.P')			#start a timer in q 
	features_train=np.array(q('flip training.features'))
	features_test=np.array(q('{x#flip testing.features}',n))
	labels_train=np.array(q('training.labels'))
	labels_test=np.array(q('{x#testing.labels}',n))
	classifier=build_classifier(features_train,labels_train)
	print('generating prediction using sklearn nearest neighbors')
	preds=classifier.predict(features_test)     	#TODO, respect N
	print('done time taken:')
	print(q('.z.P-.debug.ST'))
	return preds
def q_predict(n):
	q('.debug.ST:.z.P')
	print('generating knn prediction using kdb+')
	qpreds=q("{knn[edist2;training.features;training.labels;5;x#'testing.features]}",n)
	print('done, time taken:')
	print(q('.z.P-.debug.ST'))
	return qpreds
예제 #26
0
def test_symbol_enum_mix(q):
    x = q('(`sym?`a`b;`x`y)')
    a = _n.array(x)
    assert a.tolist() == [['a', 'b'], ['x', 'y']]
예제 #27
0
import time
import pandas as pd
import pyq
from datetime import date
from polygon import WebSocketClient, STOCKS_CLUSTER
import numpy as np

if __name__ == "__main__":
    df = pd.read_csv("~/github/kdbLearn/companylist.csv")

    # c=pyq.q.conn(host="127.0.0.1",port=12345)
    # print(c('1+1'))
    # print(dir(q))
    print("=============")
    # pyq.q.symbols.show()
    pyq.q("\l /home/acer/github/kdbLearn/companylist")
    pyq.q("getallsymbols:{select Symbol from symbols}")
    # pyq.q("getallsymbols:{select Symbol from symbols where Symbol=`MSFT}")
    x = pyq.q.getallsymbols()
    # x.show()

    for name in x:
        # name.show()
        # print(name, type(name))
        # print(name.Symbol, type(name.Symbol))
        sym = str(name.Symbol)
        print(sym, type(sym))

    # print("type(x)", type(x))
    # print(list(x))
예제 #28
0
def test_pypath():
    p = py.path.local('/abc/def')
    assert q('::', p) == ':' + p.strpath