Skip to content

Commit

Permalink
Chore #159855401 - Add Javascript linter (#12)
Browse files Browse the repository at this point in the history
* Added JSLint config files.

* Linting files. Replaced single and double quotes with backticks, removed unused imports, added missing prop types.

* Added gene expression ESLint config as npm dependency.

* Removed unnecessary dependency.

* Updated ESLint config to v0.3. Fixed indentation.
  • Loading branch information
monicajianu authored and alfonsomunozpomer committed Mar 5, 2020
1 parent 232438a commit 4abb61c
Show file tree
Hide file tree
Showing 19 changed files with 1,144 additions and 259 deletions.
5 changes: 5 additions & 0 deletions packages/scxa-tsne-plot/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
webpack.config.js
coverage/
__mocks__/
lib/
dist/
3 changes: 3 additions & 0 deletions packages/scxa-tsne-plot/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "eslint-config-gene-expression"
}
7 changes: 1 addition & 6 deletions packages/scxa-tsne-plot/__test__/ClusterTSnePlot.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import renderer from 'react-test-renderer'
import Color from 'color'

import Enzyme from 'enzyme'
import {shallow, mount} from 'enzyme'
import {mount} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

import {_colourizeClusters} from '../src/ClusterTSnePlot'
Expand Down Expand Up @@ -34,12 +34,7 @@ describe(`ClusterTSnePlot colourize function`, () => {

test(`must not dim (i.e. add a color field) any series if all are highlighted`, () => {
const randomSeries = randomHighchartsSeriesWithNamesAndMaxPoints(seriesNames, maxPointsPerSeries)

randomSeries.forEach((series) => {
// console.log("series name", series.name)
})
_colourizeClusters(seriesNames, `lightgrey`)(randomSeries).forEach((series) => {
// console.log('which series am i looking at', series.name)
series.data.forEach((point) => {
expect(point).not.toHaveProperty(`color`)
})
Expand Down
42 changes: 22 additions & 20 deletions packages/scxa-tsne-plot/__test__/GeneExpressionTSnePlot.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import renderer from 'react-test-renderer'
import Color from 'color'

import Enzyme from 'enzyme'
import {shallow, mount} from 'enzyme'
import {mount} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

import {_colourizeExpressionLevel} from '../src/GeneExpressionTSnePlot'
Expand Down Expand Up @@ -47,17 +47,18 @@ describe(`GeneExpressionTSnePlot colourize function`, () => {
x: 0,
y: 0,
expressionLevel: 10000,
name: "Maximum overkill"
name: `Maximum overkill`
})

const allPoints = randomSeries.reduce((acc, series) => acc.concat(series.data), [])
const maxExpressionLevel = Math.round10(Math.max(...allPoints.map((point) => point.expressionLevel)), -2)

const maxExpressionLevelPoints = _colourizeExpressionLevel(gradientColourRanges(), [])(plotData(randomSeries)).reduce((acc, series) => {
acc.push(series.data.filter((point) => point.expressionLevel === maxExpressionLevel, -2))
return acc
}, [])
.reduce((acc, points) => points.length ? acc.concat(points) : acc, [])
const maxExpressionLevelPoints = _colourizeExpressionLevel(gradientColourRanges(), [])(plotData(randomSeries))
.reduce((acc, series) => {
acc.push(series.data.filter((point) => point.expressionLevel === maxExpressionLevel, -2))
return acc
}, [])
.reduce((acc, points) => points.length ? acc.concat(points) : acc, [])

expect(maxExpressionLevelPoints.length).toBeGreaterThanOrEqual(1)
maxExpressionLevelPoints.forEach((point) => {
Expand All @@ -71,21 +72,22 @@ describe(`GeneExpressionTSnePlot colourize function`, () => {
x: 0,
y: 0,
expressionLevel: 0,
name: "Minimum underkill"
name: `Minimum underkill`
})

const allPoints = randomSeries.reduce((acc, series) => acc.concat(series.data), [])
const minExpressionLevel = Math.round10(Math.min(...allPoints.map((point) => point.expressionLevel)), -2)

const minExpressionLevelPoints = _colourizeExpressionLevel(gradientColourRanges(), [])(plotData(randomSeries)).reduce((acc, series) => {
acc.push(series.data.filter((point) => point.expressionLevel === minExpressionLevel, -2))
return acc
}, [])
.reduce((acc, points) => points.length ? acc.concat(points) : acc, [])
const minExpressionLevelPoints = _colourizeExpressionLevel(gradientColourRanges(), [])(plotData(randomSeries))
.reduce((acc, series) => {
acc.push(series.data.filter((point) => point.expressionLevel === minExpressionLevel, -2))
return acc
}, [])
.reduce((acc, points) => points.length ? acc.concat(points) : acc, [])

expect(minExpressionLevelPoints.length).toBeGreaterThanOrEqual(1)
minExpressionLevelPoints.forEach((point) => {
expect(point).toHaveProperty(`color`, Color('lightgrey').alpha(0.65).rgb().toString())
expect(point).toHaveProperty(`color`, Color(`lightgrey`).alpha(0.65).rgb().toString())
})
})

Expand All @@ -94,10 +96,10 @@ describe(`GeneExpressionTSnePlot colourize function`, () => {

_colourizeExpressionLevel(gradientColourRanges(), [])(plotData(randomSeries)).forEach((series) => {
series.data.forEach((point) => {
if (String(point.expressionLevel).includes(`.`)) {
expect(String(point.expressionLevel).split(`.`)[1].length).toBeLessThanOrEqual(2)
}
})
if (String(point.expressionLevel).includes(`.`)) {
expect(String(point.expressionLevel).split(`.`)[1].length).toBeLessThanOrEqual(2)
}
})
})
})

Expand Down Expand Up @@ -134,8 +136,8 @@ describe(`GeneExpressionTSnePlot colourize function`, () => {
max: 100.0
}).forEach((series) => {
series.data.forEach((point) => {
expect(point).toHaveProperty(`color`, Color(`blue`).alpha(0.65).rgb().toString())
})
expect(point).toHaveProperty(`color`, Color(`blue`).alpha(0.65).rgb().toString())
})
})
})
})
Expand Down
2 changes: 1 addition & 1 deletion packages/scxa-tsne-plot/__test__/MultiStopGradient.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react'
import renderer from 'react-test-renderer'

import Enzyme from 'enzyme'
import {shallow, mount} from 'enzyme'
import {mount} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

import MultiStopGradient from '../src/MultiStopGradient'
Expand Down
19 changes: 9 additions & 10 deletions packages/scxa-tsne-plot/__test__/PlotSettingsDropdown.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@ import React from 'react'
import renderer from 'react-test-renderer'

import Enzyme from 'enzyme'
import {shallow, mount} from 'enzyme'
import {mount} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

import Select from 'react-select'

import PlotSettingsDropdown from '../src/PlotSettingsDropdown'
import {_formatDropdownOption} from '../src/PlotSettingsDropdown'

Enzyme.configure({ adapter: new Adapter() })

describe('PlotSettingsDropdown', () => {
describe(`PlotSettingsDropdown`, () => {
test(`with no data matches snapshot`, () => {
const onSelect = () => {}

Expand All @@ -23,23 +22,23 @@ describe('PlotSettingsDropdown', () => {
expect(tree).toMatchSnapshot()
})

test('contains Select component and label', () => {
test(`contains Select component and label`, () => {
const onSelect = () => {}

const options = [
{
value: 'hello',
label: 'hello'
value: `hello`,
label: `hello`
},
{
value: 'world',
label: 'world'
value: `world`,
label: `world`
}
]

const wrapper = mount(<PlotSettingsDropdown labelText={'Test dropdown'} defaultValue={'world'} options={options} onSelect={onSelect}/>)
const wrapper = mount(<PlotSettingsDropdown labelText={`Test dropdown`} defaultValue={`world`} options={options} onSelect={onSelect}/>)

expect(wrapper.find('label').text()).toBe('Test dropdown')
expect(wrapper.find(`label`).text()).toBe(`Test dropdown`)
expect(wrapper.find(Select).length).toBe(1)
})
})
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React from 'react'
import renderer from 'react-test-renderer'
import Enzyme from 'enzyme'
import {shallow, mount, render} from 'enzyme'
import {shallow} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

Enzyme.configure({ adapter: new Adapter() })
Expand Down
2 changes: 1 addition & 1 deletion packages/scxa-tsne-plot/__test__/util/MathRound.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ describe(`Mozilla’s round util`, () => {
})

test(`defaults to Math’s rounding methods if exp is 0 or undefined`, () => {
const value = Math.random() * 100;
const value = Math.random() * 100
expect(Math.round10(value, 0)).toEqual(Math.round(value))
expect(Math.floor10(value, 0)).toEqual(Math.floor(value))
expect(Math.ceil10(value, 0)).toEqual(Math.ceil(value))
Expand Down
83 changes: 42 additions & 41 deletions packages/scxa-tsne-plot/html/Demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ const perplexities = [1, 5, 10, 15, 20]
const ks = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
const metadata = [
{
value: "characteristic_inferred_cell_type",
label: "Inferred cell type"
value: `characteristic_inferred_cell_type`,
label: `Inferred cell type`
},
{
value: "factor_sampling_site",
label: "Sampling site"
value: `factor_sampling_site`,
label: `Sampling site`
},
{
value: "factor_time",
label: "Time"
value: `factor_time`,
label: `Time`
}]

class Demo extends React.Component {
Expand Down Expand Up @@ -68,41 +68,42 @@ class Demo extends React.Component {
</form>
</div>

<TsnePlotView atlasUrl={`http://localhost:8080/gxa/sc/`}
suggesterEndpoint={`json/suggestions`}
experimentAccession={this.state.experimentAccession}
wrapperClassName={`row expanded`}
clusterPlotClassName={`small-12 large-6 columns`}
expressionPlotClassName={`small-12 large-6 columns`}
perplexities={perplexities}
selectedPerplexity={this.state.perplexity}
ks={ks}
metadata={metadata}
selectedColourBy={this.state.selectedColourBy}
selectedColourByCategory={this.state.selectedColourByCategory} // Is the plot coloured by clusters or metadata
highlightClusters={this.state.highlightClusters}
geneId={this.state.geneId}
speciesName={'Homo sapiens'}
onChangePerplexity={
(perplexity) => { this.setState({perplexity: perplexity}) }
}
onChangeColourBy={
(colourByCategory, colourByValue) => {
this.setState({
selectedColourBy : colourByValue,
selectedColourByCategory : colourByCategory,
})
this._resetHighlightClusters()
}
}
onSelectGeneId={
(geneId) => {
this.setState({
geneId: geneId,
})
this._resetHighlightClusters()
}
}
<TsnePlotView
atlasUrl={`http://localhost:8080/gxa/sc/`}
suggesterEndpoint={`json/suggestions`}
experimentAccession={this.state.experimentAccession}
wrapperClassName={`row expanded`}
clusterPlotClassName={`small-12 large-6 columns`}
expressionPlotClassName={`small-12 large-6 columns`}
perplexities={perplexities}
selectedPerplexity={this.state.perplexity}
ks={ks}
metadata={metadata}
selectedColourBy={this.state.selectedColourBy}
selectedColourByCategory={this.state.selectedColourByCategory} // Is the plot coloured by clusters or metadata
highlightClusters={this.state.highlightClusters}
geneId={this.state.geneId}
speciesName={`Homo sapiens`}
onChangePerplexity={
(perplexity) => { this.setState({perplexity: perplexity}) }
}
onChangeColourBy={
(colourByCategory, colourByValue) => {
this.setState({
selectedColourBy : colourByValue,
selectedColourByCategory : colourByCategory,
})
this._resetHighlightClusters()
}
}
onSelectGeneId={
(geneId) => {
this.setState({
geneId: geneId,
})
this._resetHighlightClusters()
}
}
/>
</div>
)
Expand Down
Loading

0 comments on commit 4abb61c

Please sign in to comment.