{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# GNSS-only localization using WLS\n\nHere I demonstrate how to improve the position estimation from the original baseline provided by Kaggle Team. \nBefore going into the code, I would like to thank [@YangLiu](https://www.kaggle.com/foreveryoung) for [the great notebook[1]](https://www.kaggle.com/foreveryoung/least-squares-solution-from-gnss-derived-data)! Also, I am new to GNSS field, so feel free to let me know if you find any mistakes in the notebook.\n\nThe major problem in GNSS is a multi-path problem.\nAs most of the competitors would observed, WLS solution from raw GNSS in city areas such as 2021-04-XX-US-SJC-Y are significantly worse compared to other areas. This noise is mainly due to the satellite signals reflected by the surrounding buildings. Since WLS algorithm calculate the optimal position based on the (pseudo-)range between the GNSS receiver and the satellites, this reflection can have a large impact on the estimation accuracy.\n\nTo mitigate the adverse effects of this multi-path phenomena, I introduced the following techniques in the estimation algorithm.\n1. cauchy loss in least-square optimization (instead of linear loss)\n2. elevation mask\n\nThe score was **LB: 8.179** before introducing these two algorithms. By adopting these techniques, the score improved to **LB: 6.776**. By ensembling with the provided baseline, the score further improved to **LB: 6.665**.\n\n## 1. cauchy loss in least-square optimization\nCauchy loss is a function defined as\n    rho(z) = ln(1 + z)\n. This function can weaken the effect of outliers in least-square optimization.\n\n## 2. elevation mask\nElevation mask is a frequently used filtering in GNSS-based localization based on elevation angle (= angle from the GNSS receiver to the satellite with respect to the ground surface). The idea here is very simple: the filter masks out a signal from which the satellite is close to the ground from the GNSS receiver perspective. In other words, the algorithm ignores the satellite signal if the elevation angle of the satellite is close to 0.\n\nIn this notebook, I increased the uncertainty of pseudorange of the low-angle satellites instead of ignoring them (for some reason, I found it is more effective through some experiments).\n\n![elvmask.png](attachment:149cbf19-7559-451f-a42a-07cff5bf4071.png)\n\n\n## What did not work\nI spent some time investigating RTKLIB. The software incorporates elevation mask as well as plenty of other algorithms (SNR-mask, Real-time kineamtics, etc). I thought that RTK can further improve the estimation, but the results were worse than that of this notebook.\n","metadata":{},"attachments":{"149cbf19-7559-451f-a42a-07cff5bf4071.png":{"image/png":"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"}}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd \nimport scipy.optimize as opt\nimport math\nfrom pathlib import Path\nfrom tqdm.notebook import tqdm\nimport pyproj\nimport matplotlib.pyplot as plt\nfrom scipy import stats\nimport plotly.express as px\nimport copy\nimport plotly.graph_objects as go\nimport json\nimport pickle","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-07-11T02:52:09.835045Z","iopub.execute_input":"2021-07-11T02:52:09.835494Z","iopub.status.idle":"2021-07-11T02:52:12.271838Z","shell.execute_reply.started":"2021-07-11T02:52:09.835439Z","shell.execute_reply":"2021-07-11T02:52:12.270996Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with open('../input/region-classification/region_type_train.json') as f:\n    region_type_train = json.load(f)\nwith open('../input/region-classification/region_type_test.json') as f:\n    region_type_test = json.load(f)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:12.273243Z","iopub.execute_input":"2021-07-11T02:52:12.273662Z","iopub.status.idle":"2021-07-11T02:52:12.293288Z","shell.execute_reply.started":"2021-07-11T02:52:12.273629Z","shell.execute_reply":"2021-07-11T02:52:12.292298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def visualize_trafic(df, center={\"lat\":37.423576, \"lon\":-122.094132}, zoom=9):\n    fig = px.scatter_mapbox(df,\n                            \n                            # Here, plotly gets, (x,y) coordinates\n                            lat=\"latDeg\",\n                            lon=\"lngDeg\",\n                            \n                            #Here, plotly detects color of series\n                            color=\"phoneName\",\n                            labels=\"phoneName\",\n                            \n                            zoom=zoom,\n                            center=center,\n                            height=400,\n                            width=600)\n    fig.update_layout(mapbox_style='stamen-terrain')\n    fig.update_layout(margin={\"r\": 0, \"t\": 0, \"l\": 0, \"b\": 0})\n    fig.update_layout(title_text=\"GPS trafic\")\n    fig.show()\n    \ndef visualize_collection(df, collection, center={\"lat\":37.423576, \"lon\":-122.094132}):\n    df_traj = df[df['collectionName'] == collection]\n    center = {\"lat\":37.423576, \"lon\":-122.094132}\n    visualize_trafic(df_traj, center)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.067112Z","iopub.execute_input":"2021-07-11T02:52:13.06755Z","iopub.status.idle":"2021-07-11T02:52:13.07855Z","shell.execute_reply.started":"2021-07-11T02:52:13.06751Z","shell.execute_reply":"2021-07-11T02:52:13.077469Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def calc_haversine(lat1, lon1, lat2, lon2):\n    \"\"\"Calculates the great circle distance between two points\n    on the earth. Inputs are array-like and specified in decimal degrees.\n    \"\"\"\n    RADIUS = 6_367_000\n    lat1, lon1, lat2, lon2 = map(np.radians, [lat1, lon1, lat2, lon2])\n    dlat = lat2 - lat1\n    dlon = lon2 - lon1\n    a = np.sin(dlat/2)**2 + \\\n          np.cos(lat1) * np.cos(lat2) * np.sin(dlon/2)**2\n    dist = 2 * RADIUS * np.arcsin(a**0.5)\n    return dist\n\ndef percentile50(x):\n    return np.percentile(x, 50)\ndef percentile95(x):\n    return np.percentile(x, 95)\n\ndef get_train_score(df, gt):\n    gt = gt.rename(columns={'latDeg':'latDeg_gt', 'lngDeg':'lngDeg_gt'})\n    df = df.merge(gt, on=['collectionName', 'phoneName', 'millisSinceGpsEpoch'], how='inner')\n    # calc_distance_error\n    df['err'] = calc_haversine(df['latDeg_gt'], df['lngDeg_gt'], df['latDeg'], df['lngDeg'])\n    # calc_evaluate_score\n    df['phone'] = df['collectionName'] + '_' + df['phoneName']\n    res = df.groupby('phone')['err'].agg([percentile50, percentile95])\n    res['p50_p90_mean'] = (res['percentile50'] + res['percentile95']) / 2 \n    score = res['p50_p90_mean'].mean()\n    return score\n\ndef eval_all(df_pred, df_gt):\n    scores = []\n    compared_cols = [\"latDeg_truth\",\"lngDeg_truth\",\"latDeg_pred\",\"lngDeg_pred\"]\n    collections = sorted(df_gt['collectionName'].unique())\n    for collection in collections:\n        df_pred_col = df_pred[df_pred['collectionName'] == collection]\n        df_gt_col = df_gt[df_gt['collectionName'] == collection]\n        \n        score = get_train_score(df_pred_col, df_gt_col)\n        \n        df_merged = pd.merge_asof(df_gt_col.sort_values('millisSinceGpsEpoch'), df_pred_col.sort_values('millisSinceGpsEpoch'), \n                                  on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], \n                                  direction='nearest',tolerance=100000, suffixes=('_truth', '_pred'))\n        df_merged = df_merged.sort_values(by=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"], ignore_index=True)\n\n        haversine = calc_haversine(*df_merged[compared_cols].to_numpy().transpose()).mean()\n        scores.append([collection, haversine, score])\n        \n    score = get_train_score(df_pred, df_gt)\n    df_merged = pd.merge_asof(df_gt.sort_values('millisSinceGpsEpoch'), df_pred.sort_values('millisSinceGpsEpoch'), \n                              on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], \n                              direction='nearest',tolerance=100000, suffixes=('_truth', '_pred'))\n    haversine = calc_haversine(*df_merged[compared_cols].to_numpy().transpose()).mean()\n    scores.append(['all', haversine, score])\n    \n    df_scores = pd.DataFrame(scores, columns=['collection', 'haversine', 'score'])\n    return df_scores","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.273884Z","iopub.execute_input":"2021-07-11T02:52:13.274285Z","iopub.status.idle":"2021-07-11T02:52:13.29548Z","shell.execute_reply.started":"2021-07-11T02:52:13.274252Z","shell.execute_reply":"2021-07-11T02:52:13.294195Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def ecef2lla(x, y, z):\n    # x, y and z are scalars or vectors in meters\n    x = np.array([x]).reshape(np.array([x]).shape[-1], 1)\n    y = np.array([y]).reshape(np.array([y]).shape[-1], 1)\n    z = np.array([z]).reshape(np.array([z]).shape[-1], 1)\n\n    a=6378137\n    a_sq=a**2\n    e = 8.181919084261345e-2\n    e_sq = 6.69437999014e-3\n\n    f = 1/298.257223563\n    b = a*(1-f)\n\n    # calculations:\n    r = np.sqrt(x**2 + y**2)\n    ep_sq  = (a**2-b**2)/b**2\n    ee = (a**2-b**2)\n    f = (54*b**2)*(z**2)\n    g = r**2 + (1 - e_sq)*(z**2) - e_sq*ee*2\n    c = (e_sq**2)*f*r**2/(g**3)\n    s = (1 + c + np.sqrt(c**2 + 2*c))**(1/3.)\n    p = f/(3.*(g**2)*(s + (1./s) + 1)**2)\n    q = np.sqrt(1 + 2*p*e_sq**2)\n    r_0 = -(p*e_sq*r)/(1+q) + np.sqrt(0.5*(a**2)*(1+(1./q)) - p*(z**2)*(1-e_sq)/(q*(1+q)) - 0.5*p*(r**2))\n    u = np.sqrt((r - e_sq*r_0)**2 + z**2)\n    v = np.sqrt((r - e_sq*r_0)**2 + (1 - e_sq)*z**2)\n    z_0 = (b**2)*z/(a*v)\n    h = u*(1 - b**2/(a*v))\n    phi = np.arctan((z + ep_sq*z_0)/r)\n    lambd = np.arctan2(y, x)\n\n    return phi*180/np.pi, lambd*180/np.pi, h","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.47704Z","iopub.execute_input":"2021-07-11T02:52:13.479164Z","iopub.status.idle":"2021-07-11T02:52:13.494332Z","shell.execute_reply.started":"2021-07-11T02:52:13.477502Z","shell.execute_reply":"2021-07-11T02:52:13.493042Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nEARTH_ROTATION_RATE = 7.2921151467e-005\nSPEED_OF_LIGHT = 2.99792458e8\nEARTH_RADIUS = 6_371_000\n\ndef calc_pos_fix(sat_pos, pr, weights=1, x0=[-2.69456739e+06, -4.29648247e+06,  3.85481182e+06, 0], loss='cauchy'):\n    '''\n    Calculates gps fix with WLS optimizer\n    returns:\n    0 -> list with positions\n    1 -> pseudorange errs\n    '''\n    n = len(pr)\n    if n < 3:\n        return x0, []\n    Fx_pos = pr_residual(sat_pos, pr, weights=weights)\n    opt_pos = opt.least_squares(Fx_pos, x0, loss=loss).x\n    return opt_pos, Fx_pos(opt_pos, weights=1)\n\ndef pr_residual(sat_pos, pr, weights=1):\n    # solve for pos\n    def Fx_pos(x_hat, weights=weights):\n        theta = EARTH_ROTATION_RATE * (pr - x_hat[3]) / SPEED_OF_LIGHT\n        # theta = EARTH_ROTATION_RATE * (pr) / SPEED_OF_LIGHT\n        dx = np.sqrt(\n            (sat_pos[:, 0] * np.cos(theta) + sat_pos[:, 1] * np.sin(theta) - x_hat[0])**2 + \n            (-sat_pos[:, 0] * np.sin(theta) + sat_pos[:, 1] * np.cos(theta) - x_hat[1])**2 +\n            (sat_pos[:, 2] - x_hat[2]) ** 2\n        )\n        rows = weights * (dx - pr + x_hat[3])\n        return rows\n    return Fx_pos","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.622039Z","iopub.execute_input":"2021-07-11T02:52:13.622583Z","iopub.status.idle":"2021-07-11T02:52:13.634049Z","shell.execute_reply.started":"2021-07-11T02:52:13.622535Z","shell.execute_reply":"2021-07-11T02:52:13.632732Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def estimation_pipeline(df_trails, region_type, eldeg_high = 50, eldeg_mid = 25, eldeg_low = 15):\n    \"\"\" simple pipeline to estimate the GNSS receiver location by least square\n    Args:\n    df_trails: the df read from derived file\n\n    Returns:\n    result df with estimated degrees and heights\n    \"\"\"\n    \n    elev_deg_a_downtown = 10\n    elev_deg_b_downtown = 45\n    elev_deg_a_tree = 10\n    elev_deg_b_tree = 10\n    \n    df_trails[\"correctedPrM\"] = df_trails[\"rawPrM\"] + df_trails[\"satClkBiasM\"] - df_trails[\"isrbM\"] - df_trails[\"ionoDelayM\"] - df_trails[\"tropoDelayM\"]\n\n    results = []\n    results_loss = []\n    x = [0, 0, 0, 0]\n\n    df_epochs = df_trails.groupby([\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"])\n    for i, (indices, df_epoch) in enumerate(tqdm(df_epochs, desc=\"Estimate location by LS for epoch\")):\n        sat_pos = df_epoch[[\"xSatPosM\",\"ySatPosM\",\"zSatPosM\"]].to_numpy()\n        pseudoranges = np.squeeze(df_epoch[[\"correctedPrM\"]].to_numpy())\n        pseudoranges_sigma = np.squeeze(df_epoch[[\"rawPrUncM\"]].to_numpy())\n        x, _ = calc_pos_fix(sat_pos, pseudoranges, 1/pseudoranges_sigma, x)\n        \n        phone2sat_pos = sat_pos - x[:3]\n        theta = np.arccos(np.sum(x[:3] * phone2sat_pos, axis=1) / np.linalg.norm(phone2sat_pos, axis=1) / np.linalg.norm(x[:3]))\n\n        # downtown\n        if 'downtown' in region_type[indices[0]]:\n            lane_vec = df_epoch[['dx', 'dy', 'dz']].values[0]\n            cond = ~ get_sat_ids(sat_pos, x[:3], lane_vec, elev_deg_a = elev_deg_a_downtown, elev_deg_b = elev_deg_b_downtown)\n            # while np.sum(cond) < sat_pos.shape[0] * 0.6: # iterate until the phone can see enough satellites.\n            #     elev_deg_b_downtown -= 5\n            #     cond = ~ get_sat_ids(sat_pos, x[:3], lane_vec, elev_deg_a = elev_deg_a_downtown, elev_deg_b = elev_deg_b_downtown)\n        # tree\n        elif 'tree' in region_type[indices[0]]:\n            lane_vec = df_epoch[['dx', 'dy', 'dz']].values[0]\n            cond = ~ get_sat_ids(sat_pos, x[:3], lane_vec, elev_deg_a = elev_deg_a_tree, elev_deg_b = elev_deg_b_tree)\n        # highway & \"other\"\n        else:\n            elevation_deg = eldeg_low\n            threshold_theta = (90 - elevation_deg) * np.pi / 180\n            cond = np.abs(theta) > threshold_theta\n\n        pseudoranges_sigma += cond * 10\n        x, loss = calc_pos_fix(sat_pos, pseudoranges, 1/pseudoranges_sigma, x)\n\n        values = np.squeeze(ecef2lla(*x[:3]))\n        results.append([*indices, *values])\n        results_loss.append([*indices, loss])\n    df_estimate = pd.DataFrame(results, columns=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\", \"latDeg\", \"lngDeg\", \"heightAboveWgs84EllipsoidM\"])\n    df_residuals = pd.DataFrame(results_loss, columns=['collectionName', 'phoneName', 'millisSinceGpsEpoch', 'residual'])\n    return df_estimate, results_loss","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.782293Z","iopub.execute_input":"2021-07-11T02:52:13.782876Z","iopub.status.idle":"2021-07-11T02:52:13.799266Z","shell.execute_reply.started":"2021-07-11T02:52:13.782839Z","shell.execute_reply":"2021-07-11T02:52:13.798169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_sat_ids(pos_sat, pos_phone, vec_lane, elev_deg_a = 15, elev_deg_b = 15):\n    pos_phone = pos_phone[:3]\n    e_a = vec_lane / np.linalg.norm(vec_lane)\n    e_b = np.cross(e_a, pos_phone / np.linalg.norm(pos_phone))\n    pos_sat2phone = pos_sat - pos_phone\n    a = np.dot(pos_sat2phone, e_a.reshape(-1, 1))\n    b = np.dot(pos_sat2phone, e_b.reshape(-1, 1))\n    l = np.dot(pos_sat2phone, pos_phone) / np.linalg.norm(pos_phone)\n    theta_a = (90 - elev_deg_a) * np.pi / 180\n    theta_b = (90 - elev_deg_b) * np.pi / 180\n    cond = (a.reshape(-1)/np.tan(theta_a))**2 + (b.reshape(-1)/np.tan(theta_b))**2 <= l**2\n    \n    return cond","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:13.966599Z","iopub.execute_input":"2021-07-11T02:52:13.967024Z","iopub.status.idle":"2021-07-11T02:52:13.97641Z","shell.execute_reply.started":"2021-07-11T02:52:13.966989Z","shell.execute_reply":"2021-07-11T02:52:13.975345Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def add_dxyz(df):\n    ecef = pyproj.Proj(proj='geocent', ellps='WGS84', datum='WGS84')\n    lla = pyproj.Proj(proj='latlong', ellps='WGS84', datum='WGS84')\n    x, y, z = pyproj.transform(lla, ecef, *df[['lngDeg', 'latDeg', 'heightAboveWgs84EllipsoidM']].values.transpose(), radians=False)\n    df[['x', 'y', 'z']] = np.array([x, y, z]).transpose()\n\n    ans = []\n    for (collection, phone), df_traj in df.groupby(['collectionName', 'phoneName']):\n        # if 'SJC' not in collection:\n        #     continue\n        positions = df_traj[['x', 'y', 'z']].values\n        times = df_traj['millisSinceGpsEpoch'].values\n        for idx, pos in enumerate(positions):\n            i = 1\n            dist = np.linalg.norm(positions[max(idx - i, 0)] - positions[min(idx + i, len(positions)-1)])\n            while dist < 1e1:\n                i += 1\n                dist = np.linalg.norm(positions[max(idx - i, 0)] - positions[min(idx + i, len(positions)-1)])\n            ans.append([collection, phone, times[idx], *(positions[max(idx - i, 0)] - positions[min(idx + i, len(positions)-1)])])\n    dxyz = pd.DataFrame(ans, columns=['collectionName', 'phoneName', 'millisSinceGpsEpoch', 'dx', 'dy', 'dz'])\n    df = df.merge(dxyz, how='left')\n    return df","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:14.129787Z","iopub.execute_input":"2021-07-11T02:52:14.13018Z","iopub.status.idle":"2021-07-11T02:52:14.142213Z","shell.execute_reply.started":"2021-07-11T02:52:14.130147Z","shell.execute_reply":"2021-07-11T02:52:14.141268Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4724789","metadata":{"execution":{"iopub.status.busy":"2021-06-29T05:51:43.764344Z","iopub.execute_input":"2021-06-29T05:51:43.764658Z","iopub.status.idle":"2021-06-29T05:51:43.769493Z","shell.execute_reply.started":"2021-06-29T05:51:43.764631Z","shell.execute_reply":"2021-06-29T05:51:43.768492Z"}}},{"cell_type":"markdown","source":"# Visualize some examples","metadata":{}},{"cell_type":"code","source":"datapath = Path(\"../input/google-smartphone-decimeter-challenge/\")\n\ncollection = '2021-04-29-US-SJC-2'\nphone = 'SamsungS20Ultra'\nepoch_time = 1303758010000\n\n# collection = '2021-04-28-US-SJC-1'\n# phone = 'Pixel4'\n# epoch_time = 1303676004438\n\n# collection = '2020-05-14-US-MTV-1'\n# phone = 'Pixel4'\n# epoch_time = 1273529477442\n\ndf_baseline = pd.read_csv(datapath/\"baseline_locations_train.csv\")\ndf_sample_trail_gt = pd.read_csv(datapath/\"train/{0}/{1}/ground_truth.csv\".format(collection, phone))\ndf_sample_trail_gt = add_dxyz(df_sample_trail_gt)\n# print(df_sample_trail_gt.millisSinceGpsEpoch[1000:1010])\ndf_sample_trail = pd.read_csv(datapath/\"train/{0}/{1}/{1}_derived.csv\".format(collection, phone))\ndf_sample_trail[\"correctedPrM\"] = df_sample_trail[\"rawPrM\"] + df_sample_trail[\"satClkBiasM\"] - df_sample_trail[\"isrbM\"] - df_sample_trail[\"ionoDelayM\"] - df_sample_trail[\"tropoDelayM\"] \n\ndf_sample_epoch = df_sample_trail[df_sample_trail.millisSinceGpsEpoch == epoch_time]\ndf_sample_epoch_gt = df_sample_trail_gt[df_sample_trail_gt.millisSinceGpsEpoch == epoch_time]\ndf_sample_epoch_baseline = df_baseline[(df_baseline.collectionName == collection) & (df_baseline.phoneName == phone) & (df_baseline.millisSinceGpsEpoch == epoch_time)]\n\nsat_pos = df_sample_epoch[[\"xSatPosM\",\"ySatPosM\",\"zSatPosM\"]].to_numpy()\npseudoranges = np.squeeze(df_sample_epoch[[\"correctedPrM\"]].to_numpy())\npseudoranges_sigma = np.squeeze(df_sample_epoch[[\"rawPrUncM\"]].to_numpy())\n\nvisualize_trafic(df_sample_epoch_gt)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:14.639333Z","iopub.execute_input":"2021-07-11T02:52:14.639883Z","iopub.status.idle":"2021-07-11T02:52:16.928461Z","shell.execute_reply.started":"2021-07-11T02:52:14.639847Z","shell.execute_reply":"2021-07-11T02:52:16.927298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x, dp = calc_pos_fix(sat_pos, pseudoranges, 1.0 / pseudoranges_sigma, loss='linear')\ngt = df_sample_epoch_gt[[\"latDeg\",\"lngDeg\",\"heightAboveWgs84EllipsoidM\"]].to_numpy()[0]\nest = np.array([hoge[0][0] for hoge in ecef2lla(*x[:3])])\nprint(\"Ground truth:\", gt)\nprint(\"Simple Least Square Estimation:\", est)\nprint(\"Baseline:\", df_sample_epoch_baseline[[\"latDeg\",\"lngDeg\",\"heightAboveWgs84EllipsoidM\"]].to_numpy())\nprint(\"Error: \", np.linalg.norm(gt[:2]-est[:2]))\nprint(\"normalized loss\", np.sqrt(np.sum((np.linalg.norm(x[:3] - sat_pos, axis=1) - pseudoranges)**2) / (len(sat_pos) - 4)))\n\ndf_satellites = df_sample_epoch[['constellationType', 'svid', 'signalType', 'rawPrUncM']]\ndf_satellites['residual'] = np.linalg.norm(sat_pos - x[:3], axis=1) - pseudoranges + x[3]\nphone2sat_pos = sat_pos - x[:3]\ndf_satellites['theta'] = np.arccos(np.sum(x[:3] * phone2sat_pos, axis=1) / np.linalg.norm(phone2sat_pos, axis=1) / np.linalg.norm(x[:3]))\ndf_satellites","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:16.930525Z","iopub.execute_input":"2021-07-11T02:52:16.930986Z","iopub.status.idle":"2021-07-11T02:52:16.989962Z","shell.execute_reply.started":"2021-07-11T02:52:16.930921Z","shell.execute_reply":"2021-07-11T02:52:16.988907Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_next = x + np.array([-20, 20, 25, 0])\ne_a = df_sample_epoch_gt[['dx', 'dy', 'dz']].values[0]\nmarker_small = dict(\n        size=1,\n        colorscale='Viridis',   # choose a colorscale\n        opacity=0.8\n    )\nmarker = dict(\n        size=4,\n        colorscale='Viridis',   # choose a colorscale\n        opacity=0.8\n    )\nmarker_large = dict(\n        size=16,\n        colorscale='Viridis',   # choose a colorscale\n        opacity=0.8\n    )\n\n# theta = np.arccos(np.sum(x[:3] * (sat_pos - x[:3]), axis=1) / np.linalg.norm((sat_pos - x[:3]), axis=1) / np.linalg.norm(x[:3]))\n# threshold_theta = (90 - 25) * np.pi / 180\n# sat_ids_chosen = np.abs(theta) < threshold_theta\n\nsat_ids_chosen = get_sat_ids(sat_pos, x[:3], df_sample_epoch_gt[['dx', 'dy', 'dz']].values[0], elev_deg_a = 10, elev_deg_b = 45)\n# residual = np.linalg.norm(sat_pos - x[:3], axis=1) - pseudoranges + x[3]\n# sat_ids_chosen = np.abs(residual) < 40\n\nfig = go.Figure(data=[\n    go.Scatter3d(x=sat_pos[sat_ids_chosen, 0], y=sat_pos[sat_ids_chosen, 1], z=sat_pos[sat_ids_chosen, 2],\n                 mode='markers', opacity=0.9, name='satellite', marker=marker),\n    go.Scatter3d(x=sat_pos[~sat_ids_chosen, 0], y=sat_pos[~sat_ids_chosen, 1], z=sat_pos[~sat_ids_chosen, 2],\n                 mode='markers', opacity=0.9, name='satellite (not chosen)', marker=marker),\n    go.Scatter3d(x=[x[0]], y=[x[1]], z=[x[2]], mode='markers', opacity=1, name='phone', marker=marker),\n    go.Scatter3d(x=[x[0], x[0] + e_a[0]*1000000 ], y=[x[1], x[1] + e_a[1]*1000000 ], z=[x[2], x[2] + e_a[2]*1000000 ], opacity=1, name='lane', marker=marker_small),\n    go.Scatter3d(x=[0], y=[0], z=[0], mode='markers', opacity=0.5, name='Center of the Earth', marker=marker_large),\n])\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:16.991969Z","iopub.execute_input":"2021-07-11T02:52:16.992271Z","iopub.status.idle":"2021-07-11T02:52:17.034729Z","shell.execute_reply.started":"2021-07-11T02:52:16.992242Z","shell.execute_reply":"2021-07-11T02:52:17.033569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"residual = pseudoranges - np.linalg.norm(sat_pos - x[:3], axis=1) - x[3]\nx, dp = calc_pos_fix(sat_pos[sat_ids_chosen], pseudoranges[sat_ids_chosen], 1.0 / (pseudoranges_sigma[sat_ids_chosen]), loss='linear')\n\ngt = df_sample_epoch_gt[[\"latDeg\",\"lngDeg\",\"heightAboveWgs84EllipsoidM\"]].to_numpy()[0]\nest = np.array([hoge[0][0] for hoge in ecef2lla(*x[:3])])\nprint(\"Ground truth:\", gt)\nprint(\"Simple Least Square Estimation:\", est)\nprint(\"Error: \", np.linalg.norm(gt[:2]-est[:2]))\nprint(\"normalized loss\", np.sqrt(np.sum((np.linalg.norm(x[:3] - sat_pos[sat_ids_chosen], axis=1) - pseudoranges[sat_ids_chosen])**2) / (len(sat_pos[sat_ids_chosen]) - 4)))","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:17.036364Z","iopub.execute_input":"2021-07-11T02:52:17.036686Z","iopub.status.idle":"2021-07-11T02:52:17.053438Z","shell.execute_reply.started":"2021-07-11T02:52:17.036655Z","shell.execute_reply":"2021-07-11T02:52:17.052375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Estimation (train data)","metadata":{}},{"cell_type":"code","source":"datapath = Path(\"../input/google-smartphone-decimeter-challenge/\")\nground_truths = (datapath / \"train\").rglob(\"ground_truth.csv\")\ndrived_files = (datapath / \"train\").rglob(\"*_derived.csv\")\n\ndf_gt = pd.concat([pd.read_csv(filepath) for filepath in tqdm(ground_truths, total=73, desc=\"Reading ground truth data\")], ignore_index=True)\ndf_baseline_train = pd.read_csv(datapath / 'baseline_locations_train.csv')\ndf_derived_train = pd.concat([pd.read_csv(filepath) for filepath in tqdm(drived_files, total=73, desc=\"Reading drived data\")], ignore_index=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:17.055005Z","iopub.execute_input":"2021-07-11T02:52:17.055351Z","iopub.status.idle":"2021-07-11T02:52:42.985333Z","shell.execute_reply.started":"2021-07-11T02:52:17.055316Z","shell.execute_reply":"2021-07-11T02:52:42.984251Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_gt[\"receivedSvTimeInGpsNanos\"] = df_gt.millisSinceGpsEpoch*int(1e6)\ndf_derived_raw_train = df_derived_train.drop(\"millisSinceGpsEpoch\", axis=1)\ndf_gt = add_dxyz(df_gt)\n\ndf_merge_train = pd.merge_asof(df_derived_raw_train.sort_values('receivedSvTimeInGpsNanos'), df_gt.sort_values('receivedSvTimeInGpsNanos'), \n                                           on=\"receivedSvTimeInGpsNanos\", by=[\"collectionName\", \"phoneName\"], direction='nearest',tolerance=int(1e8))\ndf_merge_train = df_merge_train.sort_values(by=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"], ignore_index=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:52:42.987229Z","iopub.execute_input":"2021-07-11T02:52:42.987656Z","iopub.status.idle":"2021-07-11T02:53:13.696167Z","shell.execute_reply.started":"2021-07-11T02:52:42.98761Z","shell.execute_reply":"2021-07-11T02:53:13.695244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"delta_millis = df_merge_train['millisSinceGpsEpoch'] - df_merge_train['receivedSvTimeInGpsNanos'] / 1e6\nwhere_good_signals = (0 < delta_millis) & (delta_millis < 300)\ndf_merge_train_filtered = df_merge_train[where_good_signals].copy()","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:52.673674Z","iopub.execute_input":"2021-07-10T08:38:52.674322Z","iopub.status.idle":"2021-07-10T08:38:53.737973Z","shell.execute_reply.started":"2021-07-10T08:38:52.674279Z","shell.execute_reply":"2021-07-10T08:38:53.737092Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# df_estimate_train = estimation_pipeline_iterative_version(df_merge_train, region_type_train, 10, 10, 10)","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:53.739913Z","iopub.execute_input":"2021-07-10T08:38:53.740191Z","iopub.status.idle":"2021-07-10T08:38:53.744917Z","shell.execute_reply.started":"2021-07-10T08:38:53.740154Z","shell.execute_reply":"2021-07-10T08:38:53.743951Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_estimate_train, df_residuals_train = estimation_pipeline(df_merge_train_filtered, region_type_train, 10, 10, 10)","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:53.746358Z","iopub.execute_input":"2021-07-10T08:38:53.74674Z","iopub.status.idle":"2021-07-10T08:38:56.013365Z","shell.execute_reply.started":"2021-07-10T08:38:53.746683Z","shell.execute_reply":"2021-07-10T08:38:56.010798Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_estimate_train.millisSinceGpsEpoch = df_estimate_train.millisSinceGpsEpoch.astype(np.int64)","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:56.01462Z","iopub.status.idle":"2021-07-10T08:38:56.015433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_merged_baseline_train = pd.merge_asof(df_gt.sort_values('millisSinceGpsEpoch'),\n                                         df_baseline_train.sort_values('millisSinceGpsEpoch'), \n                                         on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], \n                                         direction='nearest',tolerance=100000, suffixes=('_truth', '_pred'))\ndf_merged_baseline_train = df_merged_baseline_train.sort_values(by=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"], ignore_index=True)\n\ndf_merged_SL_train = pd.merge_asof(df_gt.sort_values('millisSinceGpsEpoch'), \n                                   df_estimate_train.sort_values('millisSinceGpsEpoch'), \n                                   on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], \n                                   direction='nearest',tolerance=100000, suffixes=('_truth', '_pred'))\ndf_merged_SL_train = df_merged_SL_train.sort_values(by=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"], ignore_index=True)\n\ncompared_cols = [\"latDeg_truth\",\"lngDeg_truth\",\"latDeg_pred\",\"lngDeg_pred\"]\n# print(\"Weighted Least Square (baseline) haversine distance (M):\", calc_haversine(*df_merged_baseline_train[compared_cols].to_numpy().transpose()).mean())\nprint(\"Weighted Least Square haversine distance (M):\", calc_haversine(*df_merged_SL_train[compared_cols].to_numpy().transpose()).mean())","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:56.016717Z","iopub.status.idle":"2021-07-10T08:38:56.01751Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# df_pred_tmp = pd.DataFrame(df_merged_baseline_train[['latDeg_pred', 'lngDeg_pred']].values, columns=['latDeg', 'lngDeg'])\n# df_pred_tmp['collectionName'] = df_merged_baseline_train['collectionName']\n# df_pred_tmp['phoneName'] = df_merged_baseline_train['phoneName']\n# df_pred_tmp['millisSinceGpsEpoch'] = df_merged_baseline_train['millisSinceGpsEpoch']\neval_all(df_baseline_train, df_gt)","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:56.018698Z","iopub.status.idle":"2021-07-10T08:38:56.01951Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_pred_tmp = pd.DataFrame(df_merged_SL_train[['latDeg_pred', 'lngDeg_pred']].values, columns=['latDeg', 'lngDeg'])\ndf_pred_tmp['collectionName'] = df_merged_SL_train['collectionName']\ndf_pred_tmp['phoneName'] = df_merged_SL_train['phoneName']\ndf_pred_tmp['millisSinceGpsEpoch'] = df_merged_SL_train['millisSinceGpsEpoch']\neval_all(df_gt, df_pred_tmp)","metadata":{"execution":{"iopub.status.busy":"2021-07-10T08:38:56.020675Z","iopub.status.idle":"2021-07-10T08:38:56.021453Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_estimate_train['millisSinceGpsEpoch'] = df_estimate_train['millisSinceGpsEpoch'].astype(np.int64)\n\ndf_baseline_train = df_baseline_train.drop([\"latDeg\",\"lngDeg\",\"heightAboveWgs84EllipsoidM\"], axis=1)\ndf_merged = pd.merge_asof(df_baseline_train.sort_values('millisSinceGpsEpoch'), \n                        df_estimate_train.sort_values('millisSinceGpsEpoch'), \n                        on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], direction='nearest', tolerance=100000)\ndf_merged = df_merged.sort_values(by=[\"phone\", \"millisSinceGpsEpoch\"], ignore_index=True)\n\ndf_submission = df_merged[[\"phone\", \"millisSinceGpsEpoch\", \"latDeg\", \"lngDeg\"]].copy()\ndf_submission.to_csv('train_submission.csv', index=False)\nwith open('residuals_train.pickle', 'wb') as f:\n    pickle.dump(df_residuals_train, f)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:53:13.697908Z","iopub.execute_input":"2021-07-11T02:53:13.698386Z","iopub.status.idle":"2021-07-11T02:53:13.844673Z","shell.execute_reply.started":"2021-07-11T02:53:13.698337Z","shell.execute_reply":"2021-07-11T02:53:13.843482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_baseline_train_onlysanjose = df_baseline_train.copy()\nis_sjc = lambda x: 'SJC' in x\ndf_baseline_train_onlysanjose[df_baseline_train.phone.apply(is_sjc)] = df_submission[df_submission.phone.apply(is_sjc)]\ndf_baseline_train_onlysanjose.to_csv('train_submission_sanjose_estimated.csv')","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:53:13.84583Z","iopub.status.idle":"2021-07-11T02:53:13.846432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Estimation (test data)","metadata":{}},{"cell_type":"code","source":"from pathlib import Path\n# from tqdm import tqdm\nfrom tqdm.notebook import tqdm\n\n# datapath = Path(\"./data\")\ndrived_files = (datapath / \"test\").rglob(\"*_derived.csv\")\n\ndf_baseline_test = pd.read_csv('../input/210706-state-of-the-art/submission.csv')\ndf_baseline_test['collectionName'] = df_baseline_test['phone'].apply(lambda x: x.split('_')[0])\ndf_baseline_test['phoneName'] = df_baseline_test['phone'].apply(lambda x: x.split('_')[1])\ndf_baseline_test['heightAboveWgs84EllipsoidM'] = pd.read_csv('../input/google-smartphone-decimeter-challenge/baseline_locations_test.csv')['heightAboveWgs84EllipsoidM']\ndf_derived_test = pd.concat([pd.read_csv(filepath) for filepath in tqdm(drived_files, total=48, desc=\"Reading drived data\")], ignore_index=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:58:46.935704Z","iopub.execute_input":"2021-07-11T02:58:46.936165Z","iopub.status.idle":"2021-07-11T02:59:03.576583Z","shell.execute_reply.started":"2021-07-11T02:58:46.93613Z","shell.execute_reply":"2021-07-11T02:59:03.575695Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_baseline_test[\"receivedSvTimeInGpsNanos\"] = df_baseline_test.millisSinceGpsEpoch*int(1e6)\ndf_raw_test = df_derived_test.drop(\"millisSinceGpsEpoch\", axis=1)\ndf_baseline_test = add_dxyz(df_baseline_test)\ndf_merge_test = pd.merge_asof(df_raw_test.sort_values('receivedSvTimeInGpsNanos'), df_baseline_test.sort_values('receivedSvTimeInGpsNanos'), \n                                           on=\"receivedSvTimeInGpsNanos\", by=[\"collectionName\", \"phoneName\"], direction='nearest',tolerance=int(1e9))\ndf_merge_test = df_merge_test.sort_values(by=[\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"], ignore_index=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T02:59:03.578291Z","iopub.execute_input":"2021-07-11T02:59:03.578894Z","iopub.status.idle":"2021-07-11T02:59:20.070355Z","shell.execute_reply.started":"2021-07-11T02:59:03.578852Z","shell.execute_reply":"2021-07-11T02:59:20.069209Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_estimate_test, df_residuals_test = estimation_pipeline(df_merge_test, region_type_test, 10, 10, 10)\n# df_estimate_test = estimation_pipeline_iterative_version(df_merge_test, region_type_test, 10, 10, 10)","metadata":{"execution":{"iopub.status.busy":"2021-06-27T11:19:43.931835Z","iopub.execute_input":"2021-06-27T11:19:43.932122Z","iopub.status.idle":"2021-06-27T11:19:50.330318Z","shell.execute_reply.started":"2021-06-27T11:19:43.932091Z","shell.execute_reply":"2021-06-27T11:19:50.328294Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_estimate_test['millisSinceGpsEpoch'] = df_estimate_test['millisSinceGpsEpoch'].astype(np.int64)\n\ndf_baseline_test = df_baseline_test.drop([\"latDeg\",\"lngDeg\",\"heightAboveWgs84EllipsoidM\"], axis=1)\ndf_merged_test = pd.merge_asof(df_baseline_test.sort_values('millisSinceGpsEpoch'), \n                        df_estimate_test.sort_values('millisSinceGpsEpoch'), \n                        on=\"millisSinceGpsEpoch\", by=[\"collectionName\", \"phoneName\"], direction='nearest', tolerance=100000)\ndf_merged_test = df_merged_test.sort_values(by=[\"phone\", \"millisSinceGpsEpoch\"], ignore_index=True)\n\ndf_submission_test = df_merged_test[[\"phone\", \"millisSinceGpsEpoch\", \"latDeg\", \"lngDeg\"]].copy()\ndf_submission_test.to_csv('submission.csv', index=False)\nwith open('residuals_test.pickle', 'wb') as f:\n    pickle.dump(df_residuals_test, f)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_baseline_test_kaggle = pd.read_csv('../input/google-smartphone-decimeter-challenge/baseline_locations_test.csv')\ndf_baseline_test_kaggle = df_baseline_test_kaggle[['phone', 'millisSinceGpsEpoch', 'latDeg', 'lngDeg']]\nis_sjc = lambda x: 'SJC' in x\ndf_baseline_test_kaggle[df_baseline_test.phone.apply(is_sjc)] = df_submission_test[df_submission_test.phone.apply(is_sjc)]\ndf_baseline_test_kaggle.to_csv('submission_sanjose_estimated.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2021-06-27T11:22:57.017908Z","iopub.execute_input":"2021-06-27T11:22:57.018354Z","iopub.status.idle":"2021-06-27T11:22:57.929304Z","shell.execute_reply.started":"2021-06-27T11:22:57.018313Z","shell.execute_reply":"2021-06-27T11:22:57.928523Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"visualize_trafic(df_merged_test)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_merge_train.groupby([\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"]).size().reset_index().groupby([\"collectionName\"]).size()\n# df_merge_train.groupby([\"collectionName\"]).size()","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:01:42.778696Z","iopub.execute_input":"2021-07-11T03:01:42.779128Z","iopub.status.idle":"2021-07-11T03:01:43.700219Z","shell.execute_reply.started":"2021-07-11T03:01:42.779093Z","shell.execute_reply":"2021-07-11T03:01:43.699091Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.read_csv('../input/google-smartphone-decimeter-challenge/baseline_locations_train.csv').groupby([\"collectionName\"]).size()","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:01:27.266964Z","iopub.execute_input":"2021-07-11T03:01:27.26743Z","iopub.status.idle":"2021-07-11T03:01:27.464159Z","shell.execute_reply.started":"2021-07-11T03:01:27.267394Z","shell.execute_reply":"2021-07-11T03:01:27.462863Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_merge_test.groupby([\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"]).size().reset_index().groupby([\"collectionName\"]).size()\n# df_merge_test.groupby([\"collectionName\"]).size()","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:01:58.654203Z","iopub.execute_input":"2021-07-11T03:01:58.654579Z","iopub.status.idle":"2021-07-11T03:01:59.309199Z","shell.execute_reply.started":"2021-07-11T03:01:58.654549Z","shell.execute_reply":"2021-07-11T03:01:59.308018Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"publics = ['2020-05-28-US-MTV-2',\n'2020-06-10-US-MTV-1',\n'2020-06-10-US-MTV-2',\n'2020-08-13-US-MTV-1',\n'2021-03-16-US-MTV-2',\n'2021-04-02-US-SJC-1',\n'2021-04-21-US-MTV-1',\n'2021-04-26-US-SVL-2',\n'2021-04-28-US-MTV-2', \n'2021-04-29-US-MTV-2',\n'2021-04-29-US-SJC-3']","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:06:44.843614Z","iopub.execute_input":"2021-07-11T03:06:44.844292Z","iopub.status.idle":"2021-07-11T03:06:44.849657Z","shell.execute_reply.started":"2021-07-11T03:06:44.844236Z","shell.execute_reply":"2021-07-11T03:06:44.848958Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hoge = pd.DataFrame()\nhoge['original'] = pd.read_csv('../input/google-smartphone-decimeter-challenge/baseline_locations_test.csv').groupby([\"collectionName\"]).size()\nhoge['gnss_available_points'] = df_merge_test.groupby([\"collectionName\", \"phoneName\", \"millisSinceGpsEpoch\"]).size().reset_index().groupby([\"collectionName\"]).size()\nhoge['null_points'] = hoge['original'] - hoge['gnss_available_points']\nhoge['is_public'] = hoge.index.isin(publics)","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:07:18.091674Z","iopub.execute_input":"2021-07-11T03:07:18.092098Z","iopub.status.idle":"2021-07-11T03:07:18.872564Z","shell.execute_reply.started":"2021-07-11T03:07:18.092064Z","shell.execute_reply":"2021-07-11T03:07:18.870972Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hoge","metadata":{"execution":{"iopub.status.busy":"2021-07-11T03:07:20.559719Z","iopub.execute_input":"2021-07-11T03:07:20.56012Z","iopub.status.idle":"2021-07-11T03:07:20.577446Z","shell.execute_reply.started":"2021-07-11T03:07:20.560089Z","shell.execute_reply":"2021-07-11T03:07:20.576284Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}