Skip to content

Commit 5001922

Browse files
committed
Misc
1 parent dc491e8 commit 5001922

16 files changed

Lines changed: 227 additions & 69 deletions

.prettierrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
"semi": false,
33
"trailingComma": "all",
44
"singleQuote": true,
5-
"arrowParens": "avoid"
5+
"arrowParens": "avoid",
6+
"proseWrap": "always"
67
}

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
# 0.1.1
1818

19-
- Adds refName to the feature ID to avoid collisions for code that cares about unique ID
19+
- Adds refName to the feature ID to avoid collisions for code that cares about
20+
unique ID
2021

2122
# 0.1.0
2223

README.md

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,26 @@ import NCList from '@gmod/nclist'
4949

5050
### NCListStore
5151

52-
Sequence feature store using nested containment
53-
lists held in JSON files that are lazily read.
52+
Sequence feature store using nested containment lists held in JSON files that
53+
are lazily read.
5454

5555
#### Parameters
5656

57-
- `args` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** constructor args
58-
59-
- `args.baseUrl` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** base URL for resolving relative URLs
60-
- `args.urlTemplate` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Template string for
61-
the root file of each reference sequence. The reference sequence
62-
name will be interpolated into this string where `{refseq}` appears.
63-
- `args.readFile` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** function to use for reading remote from URLs.
57+
- `args`
58+
**[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
59+
constructor args
60+
61+
- `args.baseUrl`
62+
**[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
63+
base URL for resolving relative URLs
64+
- `args.urlTemplate`
65+
**[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
66+
Template string for the root file of each reference sequence. The reference
67+
sequence name will be interpolated into this string where `{refseq}`
68+
appears.
69+
- `args.readFile`
70+
**[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)**
71+
function to use for reading remote from URLs.
6472
- `args.cacheSize` (optional, default `10`)
6573

6674
#### getRegionFeatureDensities
@@ -69,16 +77,28 @@ fetch binned counts of feature coverage in the given region.
6977

7078
##### Parameters
7179

72-
- `query` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
73-
74-
- `query.refName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** reference sequence name
75-
- `query.start` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** region start
76-
- `query.end` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** region end
77-
- `query.numBins` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** number of bins desired in the feature counts
78-
- `query.basesPerBin` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** number of bp desired in each feature counting bin
79-
80-
Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** as:
81-
`{ bins: hist, stats: statEntry }`
80+
- `query`
81+
**[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
82+
83+
- `query.refName`
84+
**[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
85+
reference sequence name
86+
- `query.start`
87+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
88+
region start
89+
- `query.end`
90+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
91+
region end
92+
- `query.numBins`
93+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
94+
number of bins desired in the feature counts
95+
- `query.basesPerBin`
96+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
97+
number of bp desired in each feature counting bin
98+
99+
Returns
100+
**[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
101+
as: `{ bins: hist, stats: statEntry }`
82102

83103
#### getFeatures
84104

@@ -87,8 +107,15 @@ yielding feature objects.
87107

88108
##### Parameters
89109

90-
- `args` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
91-
92-
- `args.refName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** reference sequence name
93-
- `args.start` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** start of region. 0-based half-open.
94-
- `args.end` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** end of region. 0-based half-open.
110+
- `args`
111+
**[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
112+
113+
- `args.refName`
114+
**[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
115+
reference sequence name
116+
- `args.start`
117+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
118+
start of region. 0-based half-open.
119+
- `args.end`
120+
**[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
121+
end of region. 0-based half-open.

index.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,16 @@
3030
"docs": "documentation readme --shallow src/feature_store.ts --section API",
3131
"clean": "rimraf dist esm",
3232
"prebuild": "yarn docs && yarn clean && yarn lint",
33-
"build:esm": "tsc --target es2018 --outDir esm",
34-
"build:es5": "tsc --target es2015 --module commonjs --outDir dist",
33+
"build:esm": "tsc --outDir esm",
34+
"build:es5": "tsc --module commonjs --outDir dist",
3535
"build": "yarn build:esm && yarn build:es5",
3636
"prepublishOnly": "yarn test --run && yarn build",
3737
"postversion": "git push --follow-tags"
3838
},
3939
"devDependencies": {
4040
"@typescript-eslint/eslint-plugin": "^8.18.0",
4141
"@typescript-eslint/parser": "^8.18.0",
42+
"@vitest/coverage-v8": "^2.1.8",
4243
"cross-fetch": "^3.0.2",
4344
"documentation": "^14.0.1",
4445
"eslint": "^9.5.0",

src/feature_store.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export default class NCListStore {
9090

9191
const { histograms } = trackInfo
9292
if (histograms?.meta) {
93+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
9394
for (let i = 0; i < histograms.meta.length; i += 1) {
9495
histograms.meta[i].lazyArray = new LazyArray(
9596
{ ...histograms.meta[i].arrayParams, readFile: this.readFile },
@@ -159,16 +160,19 @@ export default class NCListStore {
159160
const statEntry = stats.find(entry => entry.basesPerBin >= basesPerBin)
160161

161162
// The histogramMeta array describes multiple levels of histogram detail,
162-
// going from the finest (smallest number of bases per bin) to the
163-
// coarsest (largest number of bases per bin).
164-
// We want to use coarsest histogramMeta that's at least as fine as the
165-
// one we're currently rendering.
166-
// TODO: take into account that the histogramMeta chosen here might not
167-
// fit neatly into the current histogram (e.g., if the current histogram
168-
// is at 50,000 bases/bin, and we have server histograms at 20,000
169-
// and 2,000 bases/bin, then we should choose the 2,000 histogramMeta
170-
// rather than the 20,000)
163+
// going from the finest (smallest number of bases per bin) to the coarsest
164+
// (largest number of bases per bin).
165+
//
166+
// We want to use coarsest histogramMeta that's at least as fine as the one
167+
// we're currently rendering.
168+
//
169+
// TODO: take into account that the histogramMeta chosen here might not fit
170+
// neatly into the current histogram (e.g., if the current histogram is at
171+
// 50,000 bases/bin, and we have server histograms at 20,000 and 2,000
172+
// bases/bin, then we should choose the 2,000 histogramMeta rather than the
173+
// 20,000)
171174
let histogramMeta = data._histograms.meta[0]
175+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
172176
for (let i = 0; i < data._histograms.meta.length; i += 1) {
173177
if (basesPerBin >= data._histograms.meta[i].basesPerBin) {
174178
histogramMeta = data._histograms.meta[i]

src/lazy_array.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ export default class LazyArray {
5454
for (let chunk = firstChunk; chunk <= lastChunk; chunk += 1) {
5555
chunkreadFiles.push(this.chunkCache.get(chunk, chunk))
5656
}
57-
for (let i = 0; i < chunkreadFiles.length; i += 1) {
58-
const [chunkNumber, chunkData] = await chunkreadFiles[i]
57+
for (const elt of chunkreadFiles) {
58+
const [chunkNumber, chunkData] = await elt
5959
yield* this.filterChunkData(start, end, chunkNumber, chunkData)
6060
}
6161
}

src/nclist.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ export default class NCList {
9393
}
9494
}
9595

96-
for (let i = 0; i < pendingPromises.length; i += 1) {
97-
const [item, chunkNum] = await pendingPromises[i]
96+
for (const p of pendingPromises) {
97+
const [item, chunkNum] = await p
9898
if (item) {
9999
yield* this.iterateSublist(item, from, to, inc, searchGet, testGet, [
100100
...path,

src/util.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import resolve from '@jridgewell/resolve-uri'
33

44
export async function readJSON(url, readFile, options = {}) {
55
const { defaultContent = {} } = options
6-
let str
76
try {
8-
str = await readFile(url, { encoding: 'utf8' })
9-
return JSON.parse(str)
7+
const str = await readFile(url, { encoding: 'utf8' })
8+
const decoder = new TextDecoder('utf8')
9+
return JSON.parse(decoder.decode(str))
1010
} catch (error) {
1111
if (
1212
error.code === 'ENOENT' ||
@@ -20,8 +20,6 @@ export async function readJSON(url, readFile, options = {}) {
2020
}
2121
}
2222

23-
export function foo() {}
24-
2523
export function newURL(arg: string, base = '.') {
2624
return resolve(arg, base)
2725
}

test/__snapshots__/ensembl_genes.test.ts.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Jest Snapshot v1, https://goo.gl/fbAQLP
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3-
exports[`ensembl genes read with generic-filehandle RemoteFile with http urls small feature queries 1`] = `
3+
exports[`ensembl genes > read with generic-filehandle2 RemoteFile with http urls small feature queries 1`] = `
44
{
55
"bins": [
66
1,
@@ -22,7 +22,7 @@ exports[`ensembl genes read with generic-filehandle RemoteFile with http urls sm
2222
}
2323
`;
2424

25-
exports[`ensembl genes read with generic-filehandle RemoteFile with http urls small feature queries 2`] = `
25+
exports[`ensembl genes > read with generic-filehandle2 RemoteFile with http urls small feature queries 2`] = `
2626
{
2727
"bins": [
2828
86,
@@ -1034,7 +1034,7 @@ exports[`ensembl genes read with generic-filehandle RemoteFile with http urls sm
10341034
}
10351035
`;
10361036

1037-
exports[`ensembl genes read with generic-filehandle RemoteFile with http urls whole dataset 1`] = `
1037+
exports[`ensembl genes > read with generic-filehandle2 RemoteFile with http urls whole dataset 1`] = `
10381038
[
10391039
[
10401040
1,

0 commit comments

Comments
 (0)