Skip to content

Instantly share code, notes, and snippets.

@phobson
Last active August 10, 2016 18:02
Show Gist options
  • Save phobson/76d286ec8e33ef81277798efcfdc72f7 to your computer and use it in GitHub Desktop.
Save phobson/76d286ec8e33ef81277798efcfdc72f7 to your computer and use it in GitHub Desktop.
Sort function for regressing on order statistics
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"raw data\n",
"[ { res: 1, cen: true },\n",
" { res: 2, cen: true },\n",
" { res: 3, cen: false },\n",
" { res: 4, cen: false },\n",
" { res: 5, cen: false },\n",
" { res: 6, cen: true },\n",
" { res: 7, cen: false },\n",
" { res: 8, cen: true } ]\n",
"\n",
"fancy sorted data\n",
"[ { res: 1, cen: true },\n",
" { res: 2, cen: true },\n",
" { res: 6, cen: true },\n",
" { res: 3, cen: false },\n",
" { res: 4, cen: false },\n",
" { res: 5, cen: false },\n",
" { res: 7, cen: false } ]\n"
]
},
{
"data": {
"text/plain": [
"undefined"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"var _ = require('lodash');\n",
"\n",
"var data = [\n",
" {'res': 1, 'cen': true},\n",
" {'res': 2, 'cen': true},\n",
" {'res': 3, 'cen': false},\n",
" {'res': 4, 'cen': false},\n",
" {'res': 5, 'cen': false},\n",
" {'res': 6, 'cen': true},\n",
" {'res': 7, 'cen': false},\n",
" {'res': 8, 'cen': true},\n",
"];\n",
"\n",
"function ros_sort(data) {\n",
" // censored (non-detect) data\n",
" var censored = _.filter(data, function(row) {return row.cen});\n",
" var max_cen = _.maxBy(censored, function(row) {return row.res});\n",
" \n",
" // uncensored (observed) data\n",
" var uncensored = _.filter(data, function(row) {return !row.cen});\n",
" var max_uncen = _.maxBy(uncensored, function(row) {return row.res});\n",
" \n",
" // remove censored rows where the value is greater\n",
" // than the maximum uncensored value\n",
" if (max_cen.res > max_uncen.res) {\n",
" censored = _.filter(censored, function(row) {\n",
" return row.res <= max_uncen.res\n",
" })\n",
" }\n",
" return _.concat(censored, uncensored);\n",
"};\n",
"\n",
"\n",
"console.log('raw data')\n",
"console.log(data)\n",
"\n",
"console.log('\\nfancy sorted data')\n",
"console.log(ros_sort(data))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Javascript (Node.js)",
"language": "javascript",
"name": "javascript"
},
"language_info": {
"file_extension": ".js",
"mimetype": "application/javascript",
"name": "javascript",
"version": "4.4.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment