KX Community

Find answers, ask questions, and connect with our KX Community around the world.
KX Community Guidelines

Home Forums kdb+ Climate Data Re: Climate Data

  • rocuinneagain

    Member
    September 29, 2023 at 12:00 am

    Yes it could be used.

     

    To test you could look at PyKX for an easy Python interface.

    A 2 minute example of passing in a Dataset to q in shown below.

    PyKX allows Registering Custom Conversions so you could create a function to pass the Dataset in exactly the form you wish to q instead of passing it all as a dictionary in my example.

     

    import pykx as kx 
    import xarray as xr 
    import numpy as np 
    import pandas as pd 
    ds = xr.Dataset(     
          {"foo": (("x", "y"), np.random.rand(5, 5))},     
          coords={         "x": [10, 20, 30, 40, 50],         
                           "y": pd.date_range("2000-01-01", periods=5),         
                           "z": ("x", list("abcde")),     }, ) 
    kx.q['ds'] = kx.toq(ds.to_dict()) 
    kx.q('ds') 
    pykx.Dictionary(pykx.q(' 
    coords   | `x`y`z!+`dims`attrs`data!((,`x;,`y;,`x);(()!();()!();()!());(10 20.. attrs    | ()!() dims     | `x`y!5 5 data_vars| (,`foo)!+`dims`attrs`data!(,`x`y;,()!();,(0.7412575 0.2054306 0.10.. ')) 
    kx.q('flip ds[`coords;;`data]') 
    pykx.Table(pykx.q(' 
    x  y                             z 
    ---------------------------------- 
    10 2000.01.01D00:00:00.000000000 a 
    20 2000.01.02D00:00:00.000000000 b 
    30 2000.01.03D00:00:00.000000000 c 
    40 2000.01.04D00:00:00.000000000 d 
    50 2000.01.05D00:00:00.000000000 e ')) 
    kx.q('ds[`data_vars;`foo;`data]') 
    pykx.List(pykx.q(' 0.7412575 0.2054306   0.1009393 0.8792678 0.04105999 0.1811459 0.01659637  0.2406029 0.4900055 0.551788   0.6303767 0.0702013   0.6831359 0.5961667 0.3722388  0.9255059 0.9202499   0.5055902 0.9767793 0.7440498  0.7331576 0.003197568 0.4939932 0.5433492 0.01175784 '))