@jbrowse/plugin-sequence 2.6.1 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js +0 -1
  2. package/dist/BgzipFastaAdapter/configSchema.js +0 -1
  3. package/dist/BgzipFastaAdapter/index.js +0 -1
  4. package/dist/ChromSizesAdapter/ChromSizesAdapter.js +0 -1
  5. package/dist/ChromSizesAdapter/configSchema.js +0 -1
  6. package/dist/ChromSizesAdapter/index.js +0 -1
  7. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +0 -1
  8. package/dist/DivSequenceRenderer/configSchema.js +0 -1
  9. package/dist/DivSequenceRenderer/index.js +0 -1
  10. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +0 -1
  11. package/dist/IndexedFastaAdapter/configSchema.js +0 -1
  12. package/dist/IndexedFastaAdapter/index.js +0 -1
  13. package/dist/LinearReferenceSequenceDisplay/configSchema.js +0 -1
  14. package/dist/LinearReferenceSequenceDisplay/index.js +0 -1
  15. package/dist/LinearReferenceSequenceDisplay/model.js +0 -1
  16. package/dist/ReferenceSequenceTrack/configSchema.js +0 -1
  17. package/dist/ReferenceSequenceTrack/index.js +0 -1
  18. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js +0 -1
  19. package/dist/SequenceSearchAdapter/configSchema.js +0 -1
  20. package/dist/SequenceSearchAdapter/index.js +0 -1
  21. package/dist/TwoBitAdapter/TwoBitAdapter.js +0 -1
  22. package/dist/TwoBitAdapter/configSchema.js +0 -1
  23. package/dist/TwoBitAdapter/index.js +0 -1
  24. package/dist/createExtensionPoints.js +0 -1
  25. package/dist/index.js +0 -1
  26. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js +0 -1
  27. package/esm/BgzipFastaAdapter/configSchema.js +0 -1
  28. package/esm/BgzipFastaAdapter/index.js +0 -1
  29. package/esm/ChromSizesAdapter/ChromSizesAdapter.js +0 -1
  30. package/esm/ChromSizesAdapter/configSchema.js +0 -1
  31. package/esm/ChromSizesAdapter/index.js +0 -1
  32. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js +0 -1
  33. package/esm/DivSequenceRenderer/configSchema.js +0 -1
  34. package/esm/DivSequenceRenderer/index.js +0 -1
  35. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js +0 -1
  36. package/esm/IndexedFastaAdapter/configSchema.js +0 -1
  37. package/esm/IndexedFastaAdapter/index.js +0 -1
  38. package/esm/LinearReferenceSequenceDisplay/configSchema.js +0 -1
  39. package/esm/LinearReferenceSequenceDisplay/index.js +0 -1
  40. package/esm/LinearReferenceSequenceDisplay/model.js +0 -1
  41. package/esm/ReferenceSequenceTrack/configSchema.js +0 -1
  42. package/esm/ReferenceSequenceTrack/index.js +0 -1
  43. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js +0 -1
  44. package/esm/SequenceSearchAdapter/configSchema.js +0 -1
  45. package/esm/SequenceSearchAdapter/index.js +0 -1
  46. package/esm/TwoBitAdapter/TwoBitAdapter.js +0 -1
  47. package/esm/TwoBitAdapter/configSchema.js +0 -1
  48. package/esm/TwoBitAdapter/index.js +0 -1
  49. package/esm/createExtensionPoints.js +0 -1
  50. package/esm/index.js +0 -1
  51. package/package.json +3 -4
  52. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js.map +0 -1
  53. package/dist/BgzipFastaAdapter/configSchema.js.map +0 -1
  54. package/dist/BgzipFastaAdapter/index.js.map +0 -1
  55. package/dist/ChromSizesAdapter/ChromSizesAdapter.js.map +0 -1
  56. package/dist/ChromSizesAdapter/configSchema.js.map +0 -1
  57. package/dist/ChromSizesAdapter/index.js.map +0 -1
  58. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +0 -1
  59. package/dist/DivSequenceRenderer/configSchema.js.map +0 -1
  60. package/dist/DivSequenceRenderer/index.js.map +0 -1
  61. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +0 -1
  62. package/dist/IndexedFastaAdapter/configSchema.js.map +0 -1
  63. package/dist/IndexedFastaAdapter/index.js.map +0 -1
  64. package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +0 -1
  65. package/dist/LinearReferenceSequenceDisplay/index.js.map +0 -1
  66. package/dist/LinearReferenceSequenceDisplay/model.js.map +0 -1
  67. package/dist/ReferenceSequenceTrack/configSchema.js.map +0 -1
  68. package/dist/ReferenceSequenceTrack/index.js.map +0 -1
  69. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js.map +0 -1
  70. package/dist/SequenceSearchAdapter/configSchema.js.map +0 -1
  71. package/dist/SequenceSearchAdapter/index.js.map +0 -1
  72. package/dist/TwoBitAdapter/TwoBitAdapter.js.map +0 -1
  73. package/dist/TwoBitAdapter/configSchema.js.map +0 -1
  74. package/dist/TwoBitAdapter/index.js.map +0 -1
  75. package/dist/createExtensionPoints.js.map +0 -1
  76. package/dist/index.js.map +0 -1
  77. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js.map +0 -1
  78. package/esm/BgzipFastaAdapter/configSchema.js.map +0 -1
  79. package/esm/BgzipFastaAdapter/index.js.map +0 -1
  80. package/esm/ChromSizesAdapter/ChromSizesAdapter.js.map +0 -1
  81. package/esm/ChromSizesAdapter/configSchema.js.map +0 -1
  82. package/esm/ChromSizesAdapter/index.js.map +0 -1
  83. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js.map +0 -1
  84. package/esm/DivSequenceRenderer/configSchema.js.map +0 -1
  85. package/esm/DivSequenceRenderer/index.js.map +0 -1
  86. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js.map +0 -1
  87. package/esm/IndexedFastaAdapter/configSchema.js.map +0 -1
  88. package/esm/IndexedFastaAdapter/index.js.map +0 -1
  89. package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +0 -1
  90. package/esm/LinearReferenceSequenceDisplay/index.js.map +0 -1
  91. package/esm/LinearReferenceSequenceDisplay/model.js.map +0 -1
  92. package/esm/ReferenceSequenceTrack/configSchema.js.map +0 -1
  93. package/esm/ReferenceSequenceTrack/index.js.map +0 -1
  94. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js.map +0 -1
  95. package/esm/SequenceSearchAdapter/configSchema.js.map +0 -1
  96. package/esm/SequenceSearchAdapter/index.js.map +0 -1
  97. package/esm/TwoBitAdapter/TwoBitAdapter.js.map +0 -1
  98. package/esm/TwoBitAdapter/configSchema.js.map +0 -1
  99. package/esm/TwoBitAdapter/index.js.map +0 -1
  100. package/esm/createExtensionPoints.js.map +0 -1
  101. package/esm/index.js.map +0 -1
  102. package/src/BgzipFastaAdapter/BgzipFastaAdapter.test.ts +0 -40
  103. package/src/BgzipFastaAdapter/BgzipFastaAdapter.ts +0 -19
  104. package/src/BgzipFastaAdapter/__snapshots__/BgzipFastaAdapter.test.ts.snap +0 -15
  105. package/src/BgzipFastaAdapter/configSchema.ts +0 -51
  106. package/src/BgzipFastaAdapter/index.ts +0 -20
  107. package/src/ChromSizesAdapter/ChromSizesAdapter.test.ts +0 -27
  108. package/src/ChromSizesAdapter/ChromSizesAdapter.ts +0 -51
  109. package/src/ChromSizesAdapter/configSchema.ts +0 -25
  110. package/src/ChromSizesAdapter/index.ts +0 -20
  111. package/src/ChromSizesAdapter/test_data/volvox.chrom.sizes +0 -2
  112. package/src/DivSequenceRenderer/components/DivSequenceRendering.test.tsx +0 -161
  113. package/src/DivSequenceRenderer/components/DivSequenceRendering.tsx +0 -308
  114. package/src/DivSequenceRenderer/components/__snapshots__/DivSequenceRendering.test.tsx.snap +0 -1426
  115. package/src/DivSequenceRenderer/configSchema.ts +0 -23
  116. package/src/DivSequenceRenderer/index.ts +0 -31
  117. package/src/IndexedFastaAdapter/IndexedFastaAdapter.test.ts +0 -53
  118. package/src/IndexedFastaAdapter/IndexedFastaAdapter.ts +0 -113
  119. package/src/IndexedFastaAdapter/__snapshots__/IndexedFastaAdapter.test.ts.snap +0 -15
  120. package/src/IndexedFastaAdapter/configSchema.ts +0 -39
  121. package/src/IndexedFastaAdapter/index.ts +0 -20
  122. package/src/LinearReferenceSequenceDisplay/configSchema.ts +0 -18
  123. package/src/LinearReferenceSequenceDisplay/index.ts +0 -21
  124. package/src/LinearReferenceSequenceDisplay/model.ts +0 -148
  125. package/src/ReferenceSequenceTrack/configSchema.ts +0 -117
  126. package/src/ReferenceSequenceTrack/index.ts +0 -22
  127. package/src/SequenceSearchAdapter/SequenceSearchAdapter.ts +0 -104
  128. package/src/SequenceSearchAdapter/configSchema.ts +0 -51
  129. package/src/SequenceSearchAdapter/index.ts +0 -20
  130. package/src/TwoBitAdapter/TwoBitAdapter.test.ts +0 -55
  131. package/src/TwoBitAdapter/TwoBitAdapter.ts +0 -106
  132. package/src/TwoBitAdapter/__snapshots__/TwoBitAdapter.test.ts.snap +0 -30
  133. package/src/TwoBitAdapter/configSchema.ts +0 -34
  134. package/src/TwoBitAdapter/index.ts +0 -19
  135. package/src/__snapshots__/index.test.ts.snap +0 -5
  136. package/src/createExtensionPoints.ts +0 -122
  137. package/src/index.test.ts +0 -20
  138. package/src/index.ts +0 -28
@@ -1,23 +0,0 @@
1
- import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
-
3
- /**
4
- * #config DivSequenceRenderer
5
- */
6
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
7
-
8
- const DivSequenceRenderer = ConfigurationSchema(
9
- 'DivSequenceRenderer',
10
- {
11
- /**
12
- * #slot
13
- */
14
- height: {
15
- type: 'number',
16
- description: 'height in pixels of each line of sequence',
17
- defaultValue: 16,
18
- },
19
- },
20
- { explicitlyTyped: true },
21
- )
22
-
23
- export default DivSequenceRenderer
@@ -1,31 +0,0 @@
1
- import PluginManager from '@jbrowse/core/PluginManager'
2
-
3
- import { Region } from '@jbrowse/core/util/types'
4
- import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'
5
- import ReactComponent from './components/DivSequenceRendering'
6
- import configSchema from './configSchema'
7
-
8
- /* adjust in both directions */
9
- class DivSequenceRenderer extends FeatureRendererType {
10
- supportsSVG = true
11
-
12
- getExpandedRegion(region: Region) {
13
- return {
14
- ...region,
15
- start: Math.max(region.start - 3, 0),
16
- end: region.end + 3,
17
- }
18
- }
19
- }
20
-
21
- export default (pluginManager: PluginManager) => {
22
- pluginManager.addRendererType(
23
- () =>
24
- new DivSequenceRenderer({
25
- name: 'DivSequenceRenderer',
26
- ReactComponent,
27
- configSchema,
28
- pluginManager,
29
- }),
30
- )
31
- }
@@ -1,53 +0,0 @@
1
- import { toArray } from 'rxjs/operators'
2
- import { firstValueFrom } from 'rxjs'
3
- import Adapter from './IndexedFastaAdapter'
4
- import configSchema from './configSchema'
5
-
6
- test('adapter can fetch sequence from volvox.fa', async () => {
7
- const adapter = new Adapter(
8
- configSchema.create({
9
- fastaLocation: {
10
- localPath: require.resolve('../../test_data/volvox.fa'),
11
- locationType: 'LocalPathLocation',
12
- },
13
- faiLocation: {
14
- localPath: require.resolve('../../test_data/volvox.fa.fai'),
15
- locationType: 'LocalPathLocation',
16
- },
17
- metadataLocation: {
18
- localPath: require.resolve('../../test_data/hello.txt'),
19
- locationType: 'LocalPathLocation',
20
- },
21
- }),
22
- )
23
-
24
- const features = adapter.getFeatures({
25
- refName: 'ctgA',
26
- start: 0,
27
- end: 20000,
28
- })
29
-
30
- const featuresArray = await firstValueFrom(features.pipe(toArray()))
31
- expect(featuresArray).toMatchSnapshot()
32
-
33
- const features2 = adapter.getFeatures({
34
- refName: 'ctgA',
35
- start: 45000,
36
- end: 55000,
37
- })
38
-
39
- const featuresArray2 = await firstValueFrom(features2.pipe(toArray()))
40
- expect(featuresArray2[0].get('end')).toBe(50001)
41
-
42
- const features3 = adapter.getFeatures({
43
- refName: 'ctgC',
44
- start: 0,
45
- end: 20000,
46
- })
47
-
48
- const data = await adapter.getHeader()
49
- expect(data?.trim()).toBe('hello world')
50
-
51
- const featuresArray3 = await firstValueFrom(features3.pipe(toArray()))
52
- expect(featuresArray3).toMatchSnapshot()
53
- })
@@ -1,113 +0,0 @@
1
- import { IndexedFasta } from '@gmod/indexedfasta'
2
- import {
3
- BaseSequenceAdapter,
4
- BaseOptions,
5
- } from '@jbrowse/core/data_adapters/BaseAdapter'
6
- import { FileLocation, NoAssemblyRegion } from '@jbrowse/core/util/types'
7
- import { openLocation } from '@jbrowse/core/util/io'
8
- import { ObservableCreate } from '@jbrowse/core/util/rxjs'
9
- import { SimpleFeature, Feature } from '@jbrowse/core/util'
10
- import AbortablePromiseCache from 'abortable-promise-cache'
11
- import QuickLRU from '@jbrowse/core/util/QuickLRU'
12
-
13
- type T = { refName: string; start: number; end: number; fasta: IndexedFasta }
14
-
15
- export default class extends BaseSequenceAdapter {
16
- protected setupP?: Promise<{ fasta: IndexedFasta }>
17
-
18
- private seqCache = new AbortablePromiseCache<T, string | undefined>({
19
- cache: new QuickLRU({ maxSize: 200 }),
20
- fill: async (args: T, signal?: AbortSignal) => {
21
- const { refName, start, end, fasta } = args
22
- return fasta.getSequence(refName, start, end, { ...args, signal })
23
- },
24
- })
25
-
26
- public async getRefNames(opts?: BaseOptions) {
27
- const { fasta } = await this.setup()
28
- return fasta.getSequenceNames(opts)
29
- }
30
-
31
- public async getRegions(opts?: BaseOptions) {
32
- const { fasta } = await this.setup()
33
- const seqSizes = await fasta.getSequenceSizes(opts)
34
- return Object.keys(seqSizes).map(refName => ({
35
- refName,
36
- start: 0,
37
- end: seqSizes[refName],
38
- }))
39
- }
40
-
41
- public async setupPre() {
42
- const fastaLocation = this.getConf('fastaLocation') as FileLocation
43
- const faiLocation = this.getConf('faiLocation') as FileLocation
44
-
45
- return {
46
- fasta: new IndexedFasta({
47
- fasta: openLocation(fastaLocation, this.pluginManager),
48
- fai: openLocation(faiLocation, this.pluginManager),
49
- }),
50
- }
51
- }
52
-
53
- public async getHeader() {
54
- const loc = this.getConf('metadataLocation')
55
- return loc.uri === '' || loc.uri === '/path/to/fa.metadata.yaml'
56
- ? null
57
- : openLocation(loc, this.pluginManager).readFile('utf8')
58
- }
59
-
60
- public async setup() {
61
- if (!this.setupP) {
62
- this.setupP = this.setupPre().catch(e => {
63
- this.setupP = undefined
64
- throw e
65
- })
66
- }
67
- return this.setupP
68
- }
69
-
70
- public getFeatures(region: NoAssemblyRegion, opts?: BaseOptions) {
71
- const { refName, start, end } = region
72
- return ObservableCreate<Feature>(async observer => {
73
- const { fasta } = await this.setup()
74
- const size = await fasta.getSequenceSize(refName, opts)
75
- const regionEnd = size !== undefined ? Math.min(size, end) : end
76
- const chunks = []
77
- const chunkSize = 128000
78
-
79
- const s = start - (start % chunkSize)
80
- const e = end + (chunkSize - (end % chunkSize))
81
- for (let chunkStart = s; chunkStart < e; chunkStart += chunkSize) {
82
- const r = {
83
- refName,
84
- start: chunkStart,
85
- end: chunkStart + chunkSize,
86
- }
87
- chunks.push(
88
- this.seqCache.get(JSON.stringify(r), { ...r, fasta }, opts?.signal),
89
- )
90
- }
91
- const seq = (await Promise.all(chunks))
92
- .join('')
93
- .slice(start - s)
94
- .slice(0, end - start)
95
- if (seq) {
96
- observer.next(
97
- new SimpleFeature({
98
- id: `${refName} ${start}-${regionEnd}`,
99
- data: { refName, start, end: regionEnd, seq },
100
- }),
101
- )
102
- }
103
- observer.complete()
104
- })
105
- }
106
-
107
- /**
108
- * called to provide a hint that data tied to a certain region
109
- * will not be needed for the foreseeable future and can be purged
110
- * from caches, etc
111
- */
112
- public freeResources(/* { region } */): void {}
113
- }
@@ -1,15 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`adapter can fetch sequence from volvox.fa 1`] = `
4
- [
5
- {
6
- "end": 20000,
7
- "refName": "ctgA",
8
- "seq": "cattgttgcggagttgaacaACGGCATTAGGAACACTTCCGTCTCtcacttttatacgattatgattggttctttagccttggtttagattggtagtagtagcggcgctaatgctacctgaattgagaactcgagcgggggctaggcaaattctgattcagcctgacttctcttggaaccctgcccataaatcaaagggttagtgcggccaaaacgttggacaacggtattagaagaccaacctgaccaccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctagatagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatacgagactagctgtcaccagatgctgttcatctgttggctccttggtcgctccgttgtacccaggctactttgaaagagcgcagaatacttagacggtatcgatcatggtagcatagcattctgataacatgtatggagttcgaacatccgtctggggccggacggtccgtttgaggttggttgatctgggtgatagtcagcaagatagacgttagataacaaattaaaggattttaccttagattgcgactagtacaacggtacatcggtgattcgcgctctactagatcacgctatgggtaccataaacaaacggtggaccttctcaagctggttgacgcctcagcaacataggcttcctcctccacgcatctcagcataaaaggcttataaactgcttctttgtgccagagcaactcaattaagcccttggtaccgtgggcacgcattctgtcacggtgaccaactgttcatcctgaatcgccgaatgggactatttggtacaggaatcaagcggatggcactactgcagcttatttacgacggtattcttaaagtttttaagacaatgtatttcatgggtagttcggtttgttttattgctacacaggctcttgtagacgacctacttagcactacggccgagcgcaataacccccggaaagcacttgctactgggaggcgggtttatccatcggcaataggggttatcagtactaccaagaagattgtgaagatattaacagcattgaaaaaagttcggactgggcatgaaacgtgtgtcagagttagagtccttgagggactgaatgggtttgtcccaggcccaagcttgaggtggatgtcacctcgggtactgcctctattacagaggtatcttaatggcgcatccagccttgtggctgggtctacgtacgcgtgggcaccatacgtatgttggcaggaaaggtcaatcatgcttgtttcctcgtcgcagaaacgttcacactattggctcgcgggatcgaacgggcctgattatttttccagctcctgcgttcctatcacgccaactgtcgctaataaaatgttatatagagataacccattgctatgcaaggatggagaaaccgcttcacaacaccctagaattacttcagcactaacatctaagataccgggaaaaccgtaggtgccacttggttttgagggcaatgcctcttgcactggcgattcgtggagtaaccttgctaccgatttccaccttttctaggtatgattacatgcgatcgccattgtcagtcgtcgtacgaaatccaggaaggaattcgaatacatgaccgaaagctatggcatcataagcgtggctctttactaaggacacgtgtagtcggctgatttcgcgcagaacttcgctcaccggacagtgactgctgtccgaacttgggggcagcgtagattctagctagagaccgcagcgaaaatgccactcgctaggtggctatggacgtccagctataggcccccacattcgtatgtatactccggtaattgagtctacctttcgaaagatcaaagttcacaaaccttctctcacgttaacatagatgctcgcacatagctagtccggtgataaagcggccgtgcatgcgagtatttagcgcacggaacagatattaggctgcgaaataccctcatatgctacagcgcaggtaacagacggttgatctccccgtagaattccctcaaggccggatcgttctcatgagtagcctttgtctgacatttcctctcaatagattgcagactcctgtgtcgtgggaaaacttcgcggaatcgctgtcgttacataaatctaaacagtgcagtccaagctatttactaccacgtatcataatgaacatctctttgtgaaatacgccggtacgccgagagatcgcccacattgcgtgtcaccaagacccagtgtctattgggcgcgctggttatagtatgcggaggcacccgatgtgctgctaatcactacaaactcgacaccaagaggcgaccgcgtgcgggagggctagaacgcgagagccacgtcaacgtggtggtaccgctcctgatgatacgagcactgtgctggcaccgctgccctatgtccagctaacaggtgtcacataatatcgcatctatagttgagtatcttatcgctagcgttacttgtgagttctcgggtagaatcgtcgtagcattctagtccttagcgtaagcaacgatatcgccgatattataggggcaataggtctcacccaccacgggtgtatatttaacgccctaagtagttaacggagactattaaacaattatgcacgtgaaagattagggtactgcacacgtgtcacgttgacgatgtaaacaccataaaggttgttctgtgatgcgatgcccatacctgcggtgcaacgtcctaaacttatgcggatcaccttctaattcagccgacgttgagaacgccagctatactctgtgagtacaaggtgaaagccccagatcaaaatattggagtcttgtccgtagctcttgggtggagagtgtgaccacgtttatcccttaatactgagactcttctcgttccacgccccggacattcgcgatacagcctagtttgataggtggctacaagggctctatccgaatagcacaaaactcagtcctagtgcgtataggtcgtgctctgcggttatacgctccacagaagaaagtacccactgcagtttgtcggtgggacttagcaaaacctgtaaccaaaaccgcacatggactctgttttggtggcgtggagtgtgcccgccgcctttatgctgggtcaaaatactatatgatttgttgtggtcgggcgcgacattggctcttatggtttataactattattcggtgcacagaaccgacttatgccccgattttgcacctcccgagagaaatggtactagtcattgtctcggggttttacaactcaaggataatctgccagcggtaccccgaaaaatcccatcccgaacggctggtacctatgctggagaccgaaatggagccagtgctatgcaaaccctcgctctttctatttggcccgaccagctgcgagagtcattcgacatacattgcgatggctggttcatctctctgcttcggattccgatcctgctgcctatggccacaacacgaaagagatcttggatacgtcctcaccatagtccaacggacaaatatggaggtgtacgcgcacggatacgagtacgacgggccgcccaatgctggtccttcgtgttatactgtttacttgcctccggtaagagtgtacagcttgtacccacgcggtggaggaccttacgcgtcgtccgcaggtgtggagatttcgctacctgttgcattggggcctcgccttacgtttttttcgacggaggcccgacccgccaggccagaccctcatcattgggatttttactgccttggacggcagattctgatgctggtaacgcgcttggcacacaccctggtcgtaattacgtactatcacctctattttaccaggggcgggccccgcctcaacgatcggtagtctcgttagaacagttgcttatactccgttagcactcacaactcggagaatgagcttacacagtccgtaatagtctccacagcttcccctggaaggttcgtacaggggccctggggtctaatgtgctaccgcctaacttcgttagtgtaaggtctcgtgtgcacctccaataacgctgcatttttgtatagaactcctttataggcctgactcttcggaacagcccactaattgacgtgcacgatgctgcatatacccttctcaatgacgcataccggtgactaaatcctgtggctggttgacactttgcataacccaccacgaaaacgcggtttgcacgtggttggaagcgagtaccggttaagggaagttacgtaaacccaacatagtgagcgatgcttaaaacactgcatgcgaacaacgaccggaacgagagcctaatagaaccaaatggataggtggttacgaaatccgcgcacaagtgtcgtgccactctcgtaaagaatgattgcttgcttatctatgagaaacctaataggcacgcacgtgtcgccagggaaaaaccaccatccgacaagacgctgaaaatcgagatagatgcagcccgcgcgtactttaagcacgatagccatcttgagcgcgacgattcagcttacggagattacttctcaaagcggacacctcgacgctgaagctctctatcgatgcacttgcatgtccatctacggcttgagcgaaccatgcttaacgcttggatgacgttgttagtcggattcgatcgtaccatactgtcctatccatcataacttcccgaattaaaactcattttctaccctcatttgtttcattggcgcatatgagcgccccatgggcgctgatcgacacaggcttgtagcgcacggctcgtcttgcagtagataaccatagtctttacgtcgcatatattaatatatcctcagacttccactgcggtattttggatcgtggcgtctgggacagtcacactctttaacgggagcgcgttcaatgtctgagtccatccgtgcagttcggtgcgattttattcttccctgcatcttccggattccttcttcttgtcggagaattcgccgctcgatcaaactcatcattggtacttattgaccgtttcatgctattacaccggtacactgatgataacgctgcggttttatcccccccaatacgcgcacacacgcttctttcggtgcgtcctgtcgtacccctattgcgcatcatggcactccagccgagcaatgctttggacaggtgtaaccaagctggatctagcgtgggttcgacacagctcggttcgtataaccacacgcatgaactgcgagtgcctcgccccagcgccgctgtctacttgctgtttagaggaagaagcaacagcttgcacccaatccgcatatctgcatataggtggccgttcctccgtggcgcgccgctacgttgtagcgcacggatcaaaagcgctgtgttactatacactggttcggagacggttcatgacgagcgcgctatatgtcggcatctgcgccccatgagcggccgctgtccggcggcacgaataatatagtgcaagaaaaaccgaagactacggttatatatgatggaacggccctcacagcattctaacaggtttgacaaacttaataaatgatgggccgcgcctgctgtgaatcccggacggtttggccggaaatacctaggcagtctttggaaaagcttttcctagatcaccatatcgttgtcagtggccaaggtttcgttaactctcggcgtacccagtatcggcgcaataggcctttgatcaacccttggaagattagtcgatcgtaacttcctacatcccggtgaaaggctttaattctaagtcttcgccacaaacgcttcaggagcgtcgagttctatcactttcgaggtactgccacttactatacaccggtacacttgttaagcaagtgtttgcggatgtggttaaattttgatggcagatttctgggtgttttagctatagctgtatcctcgaggtcgtcgtttaaccgctcctgttgctagatcatatgtatcgttgttcgagacgctagtagtcgctcctaccgaatcttacaggttcgatctctgctcggcttttgccgcgggccggtgcttgtgctataattataatgataagggcagtggccgcacaactgcagattactgacacttgagtgagaactaagccttgaagcatagtgttgaatgttgtagaaaagtatactgtgacaaaaacagggcctggtgtcaagtgtcctcagtgatctggatatcatcacgccttgttagcaggatttacccgcatagtaatggccggactttatattgccctgctgcgctagctagtactgcgggggctctcttccccctattgatattccgggcagaatgcgcgggtagtcagcattcatgtcaggcttctatcaacgtctcattcacccttggagtgtgacctacgtgttagaggcaatgtagcccgagagcccgttcaaagacaaactcccgaattaaacagacaccggttatgggagtgtgagtagtgacttccgaccagtgtttggtttcagcctgtcggttaacctcgcagggctaggagaatgagctgctagtaggtgattaccgaagtctccccagaaagggaacagtcttatagagtagagaatgtcaaatagcgttattgagttctgtctactgcactaccaagagcatgcccaccagagatgcgtcgcagtcgtagcgtagacgtcgtaatgacccaggtggcgttcggcctattcgcgtcggacgcgcgcgctactacaacgaagggttctgaaagtgcatgttcacactgaaattctaagtgttagtaaacaaacgcgtgtattccagggtcgtgtgtgacattatggctgtctgcgcccctcaatgatcatcaagacgttcaattgtatgttaacgtagatatcaggtttagttatccgtatactttttacgccgcgcgcttggaacagattctcctaacagccctcgcggtttcaaaaagaaccaaagtctataccatccttgttcccaattctgcctggttgcggagaaaagaccgcctccatacgtacccgactcggtattggtaagtggggaagcagtcgaacgcatatttcttggttatatcacaggccacgttctatatcggaagtggccggattacgatttgacgttctatccccgagagcgcattcttgtttgttactactaccacgcgggcgcttcttattcccagaccagagggaatgtgcggaagctttttccacagattggcggaactccagcgtgcttagtgcaggcggagaacgtccgttcagtggtgcgtgctttatttttcaatctgacccgacctgcgctcaagggttgcaagttgttgtgcgcccgagtaataggcgactcgtcgcaatgggtctggtacattgcattttcatcggtacggcgcttcataaagtgcggcaaatttctcaccccagtactcatgtttatagggtatcaggacccgaagcttctctgttccaaagaaatgtactgtttggctcccctgtccatattggaggtagatcacttgtggattatgcaatgaatgaatgaaagtttggtgctccccaccggggcgctctcaaagagagtgagctaaatttgaacatttaaattgctattccaacccggagtcctgaccggaacagtaatgaaacttcaaccatgccggacagactagaagaagggaaagttgcttgtatatgggagtaaaaatgatgttggtgccgtaatggtgccggaagtgactatagagcatgtcgtgacgcaccggtaggcagtgctataatcgtatgtccttcaggcgccgccggacctacgaagctgaaattagacaccggcacactagccccgtcagcgacggtgcgcggccgctgccctgcagcgaatggggctaacacgcataaaacgcccgcataaccactcgagctacgggaattcactcaggctgttgcttcgacgtgtagtctcattacataatcataatacctccaagaccaacggctgctcatgactctcttaccttgttagggacatttcggcactagggaagagctgaggactttgaaaacgtcgataaaaccatcgcgggaactagctgcgttagaactccatattttacgggtcgcaagcttgaggtcctgtcccggcagctgcaagtgctacggcaggaggggatctacctaacgtgcagtaacgagcccctgcccgtaatgaggcgtactcgtctctaatcgtcagtaagttactatgtccgaggacgcctctacgagttgaactctggctaggcccacctgtccgcgccctgctcgggtaccccatctgcttatccaacttcacctcgccttacggaatctctggttgccagtcatccgatggtcattaagcagcgtggtacatcgtagccaatacttcagggcgccagccatattcccagccaagcggctgcataattacagcgcctggcacgactaatcgatcccacaagcctggtagatgacccttagccctaaagcgccctctgacctatctgcacgtgatacttgattatttgtaatgagcggacagggtagatgactaatatacagggtcgtctaggtttgcacaatgcagacatcatccgcgcaaggcccggacggctgtactcacacagctagctccatctccctcagcagcactaagattcccacgtgaccagggcgacgggcctcagccaaacgtatccttgatatctacttaagtcaaggttgactccgaaccctatgggtcggtgccgttaacagggagtctatatctcggcgttccattgcttgtttcaaactcctgctataaggtgaaagcgctggagggcatagtttatgcccaaagttgcgcgtagatccgtcgggatatgtgctataataaggactgctcgaggtaggcggtaacggctcccgccttcagtaggcgcggaactcgaatcggagttacaggacttgaccgagtcatatccaagtttatgttacccgatcggatccggatgctcgtatctgcgacgaggtcggaagacggacgaaatacgattcaaccgcgcgaaccattagcatctaacctttagcctcaatgggtgttaacgtggtgggctcactcggcgtactctttgtgcaactattccgtatgaacaacagtcaagttgcgacatgatgctcttacgtgattcccacagtttcccacctcaggatgctttctttagctaaacccaatagttatggcggcaccttcagactcccacgaggacggctatgacgttgctaaaccattcgccgccaaaggctagcgctaacgagttctgtgagtttgttccgggccagatctccaggatggtcgcaacaacgcagtaccggttttatactggtgaccctctacctgttattaagttacagcgttgtcctacgtacatggtcgtgagtactcgcgtagtcaaacgccaggactagcagcgagaattattgtcgcgatacttactacaatacttacccgatattgacgtgcagggttgaaagagatggacagttgaatatctattttgacggaatcctcaaaactccctccacctcaggtaacggccctgtccgggaccgcattcttgcatatattggttcccagagcgtatctaagttagtctcttgaccgttcaccgactctagggcgactcgttatcgccctccgaaacgatgctttcgttacctcaatgatgacaggctgtaacgtaagtgatcccaatctcactcgtgccttgtccaccgttccgtgaagacgaagcaatacgcggaatacgtggcttcgtaatattttgacgatatggggctgggacgctcaagacttccatgacaaacaaagtgaagagcaactgcatccctcatcatgatcactattaccagagtagcgatggataacgctaatttggtcagggcagctatcgcatcccgcaggtgtaggcggagactttttcttttgttgcgagttgacaggtaatctcacggtataagcacggttatttacgcaagcgacgtccctgggagaatccgcccacgtaggaccccataatccataaatactgcggtcgaaaccttcatatcgtgacagaaccgctttctagggatgcggtccccgcattcagagttctactttggccagcgtgagacttaacaactccacttacgcggtacattgaagtcgttcagtccagtgtgacctgtgtaccgaataacgtgtagaccagcgcgtctacgacttagcgcggctccactccaaagcaccttttgggactttccaacgagcctgttggccgttaagcggtatttcacaaatagatcaccctagtgtcggtaaccgactaccctattgggatcatcgtgagctcgaaacactagaggcggaccaacggatgacatttgattcggctctacagagcttgtcgccagagaaaaactgtggcaatctacgctcgcggggaattgactttagcggcccctagacaggtgtgggacactagtctagattcacgtcctacacgacataacagcaccttcctggccagcccagaaatagtacctggacgacatccagccttccgacgccataatgtgagccgtagcgcccacgacgatcaacgaggagaaatttacaaaggctgtgtgaatgctacgtcgtctaccattgctcatcgaaacgaacgcaacgcacagcatacaacgtttaccatgccggagcgggatcctcaagtacagaaaacagaggtctaaacatgatccgaacaaatcggtaggtttacacagctacctcgtccattggcgtactgcatcgatcgtgcttactacggtcatgccggcccgcgatgcacgtacgaaggaataccctgtctgcccccgcgcgagttacgctgtctcgcacataccgagcactgtcgttcgaagctaaactatgagcccagccgagctccttatggccgcaacgctggtgcggccagctgataaattccacagtacacgatcctcgtgtaagatctcgggcatagtaagtcatttcacatggttaggagagatagaatacatggttctggtagctcaaccaggatttgtggaacccttggcccttggtgagtgctacaataaaattctccgtatgggacaaccaaagggtgctggatgtgacttcccggcccaggttagatgtccatatcattcatacattgcccgaccgacccaatgcctaaatcagaggcgccttagctagttcttgtagtgtgccacgtccggccacgcagacacgaccctcggcgagtgatcaccattaccggattggcatcgaagtctttttctgggaagttagccagtttggtgtgcggtgcttagaatcttattcccagtcaaacgcccctgggacgaattgctaaccctagttgccacgccggaaccatcttcgggagagtagacaaatccgagttagatatgttagcgtcttcgtgagtctgaaatgtatcacttcaccgcagaatacgcgaatgtctgtttgccctggactgacggaattggcttaaaagccgactagagcattttggtacggttcctatccgcgatgtaattacctatctaggttatcgctagacgaatagcgagtacagtgtagcaggccctttgttagcaagttgctctaaacagttgtcaaaacgtaggcacaatagtgcgattcttctaaatccgggaagctcatggcgctgggcagaaatatcacatacgggaataatcaacctccattttggttcgttttactcgatgagtgccccttgcttgagacgagcgttctgagttgatggcatgtcgaaaggtttacgcggtgagtagagcactttacccctacagatcggaatcctcgaggaggacagttggaacttcacattaacctttgttcgattgcatgaaggttgtgttctgggagtaggctcccaaggtagcggttcatgctgggggcagccctaagtttgtattatgtgagtttgcgtctgaaactacatttagcatgaggaacgtaagctttctggagggatcttctaaagccaggtatcgcccgctacgatgccggagccggtggttcacagctacctgtgctcaaaggcttaaggctaatcatagcaacagtgcgaaaggacgtctttcagatttcgaaaggtgctgacacaacaagggtcagggcggtcctacccttctgattccctacctggttttttagcaagggtcaaggctaggcttatactcccgaacgctttaaacactatcccacccctgacggggggaagttgcgcgttaagtataagaataagatttaacagtacactttaggttcctcttccgcgagccgtcatacagcaccgagcgccgttgaaacgcgattaacgcgtattgtcgtgcgaaaaaaaaacgctcgccagcatattggagtgtcgacttgaaatattgaacaacaccgcatatcaaggacgaatagtagggcttcactacctccacctgacggccctaggacttatactcgaaaaagaccttccatcacgatgtcccttaccggcgagagggctatatacgcatgaatagcagatcttgccgtcgctgagtgtcacccagggttgctccagaaaggagatagggcggagagccatcgacagcagctctcgtctaggtggtagcagctaaggagtcgtgtcgtcgcgccgagttggaacattatcgatgtacatcaatgcagtaatgatgctgatagactcgggagtttcctcaaacccagagttacgagaagacgcaggtctatcagttagaaggagtcagtattggcctttgaaagatcttatgctcatgcccaatcgtagttaaacgcgaatcgggaaggccaatctggcggttttgacccccggactcttaagacgtccaatgtggctagacataagtaacgaattactctataccgaggggcgggaaccggccaatttattacgagagcacgagagccttgtagcggccagcacactatcctcgagtccctctatcctgagacgtagatatacatatacgcctagagagaatagccgtctaggcttccgtcgccctctccgtcgttcgcgtgaaccgtaagtcttccgcattcccttcctcaagcgcgttggtgtgagagtggtattgaggcccagtcttataacgcatatacttgtgcactctattacttaccatgggaaccaatggcactctcgaatcatgctcacagctgagcaacggtgctgctcaccaattacatatgagtcgtggtttagcgttggagcggaagatgaatttccatctgttcgcgcgcatcactaaccaatatacggttatcccagcgctatctagttctgaccgggttggtagcgaacccttttgcaagccggcttagtggatgtgaagtgggagtgataacttaagccgccacgttcgggggggactcgtttatattggtgctggaatacgaacggcgtgattcgtagtcgccctaatcgggcgcgacaacacatgtagtactgtcgaggcggtttaaacccacagtaggtactctatcagcagaattatgctagaagtttcacaacaactttccgcatgaggctcagcggcagcgtcgcactcccaatggccagtgccggtagcgatgtttggtggaattagttccttcggaatacgaaccggatttaaagagcctcggagaacctaaacgaatccgtacgcatcttgcccaaggtgctgagccttgtcgcctttctcagttccacctacattaatgcaatgcgttcgaagctctgaccgcaaacaggaatcaagttcagacagagtgcaagagtttcgcaataattgggaacgacccacttgatataggtgcttttagagatgtgtgtacgaccgtccttcgagcatacctacgggttacaattgctccggtaagtcaaggcacatagaaaacatagccaactgagagtgtatacaagattacctcatgtagactgaaatacacacatcgctttaagctctcaaccgatgtagaacagattttgggcggcgttgacagcgtgcccgctcaccggtttgctcccttctcaccaaataaccatgagacgactttggtgactggactgccagatgacgggctacaaccgttttggttccgaattcgctctaactcaactaacatcatactatatgcgccaggatattctcgcggttggacccccctgccaattcgggttaaaaccactccccccatgtagggagctgccgcaattacaatatcgacgatcccagatggacgctcacaaaatatcagtcctttcacgatccgctcatatagacggatgaagggactgaggctgttagatagtgacgtcgagcatggcgtagacgagcgcaaccgggtcgaggcccgcattaccgtgacacccagttgaaaggatttacactgcttcattcgatatttaccactttgtatgaggagctcaacctaagtcaacacggaccatcatacaggtcgccagtaatgagaaggctgctgtgccatggagaagcgctgctacagcacacaacgaacatcttgcaatgtgaaggagggtgctcttttgggatgagcctacggggatgtgtatccctgccctgtaggcagttgggacttagcgcgactatctagataactaaggcgccagccgcggctgtttgccgaagtcgtgctgatgctgtacaacgaagggcgagcgtgttaacatgctacacgttgacctagactagtccaagtctgaaagtcccaatttaggtcgggtagtacagtcctcggttccagtcccatgttgtgccgacaaggacaagcgatcatcaaatcgactgaaattgaatcagctacctcagaccacattcagctctcggtaacatgggaggcttgtggttgcaccgtaaaagggggatagcccatccatcctgtaaacctacaatcgcgcgtagcttaatacgctcacattagacattcgatcgagagacctggtttcaagagccttcccttttgctttagtgggccaaatcgcaaccctgctcccctcccttacgccttatacacttcagtgcaaattcatgcgttcagcgaacaactggacttctgttgtacgtagtccacgggggcttattcattatagaaagccccctactgtcaccgttatatggttcacacatgagctgatcacctagagagtcgtcatgcacattcgcctaacaaggacatatgagtaaccgggaggggatatcttcgatttgcagcaccaatcgacgttgtactggtctattgtcggttaggtccgattatccgaccggcaatgaggcaagcccatctattcaggaaacttaggcagttccctgtgctggcccgacgtcgatgagttaagtctatacaggccggccgcgagtagttaacgagaccaacatagaactatcatactagccggcaatgatcaatagggtcttagtgccactgtccttcgagccctcgcctaatttagcgcgaccggtttcctattggcctgtggggttgcgggcgcgtccgctttaagaatggtccttaacacctacccggagatccattgcatagcacactctccccattagcctagacacgtcgtcgcccgtcgactttggctggaatttaatcgccggggatatcgaactttcacgccctttaacgacgaggaaacctaccgtcgcctggctggtaaatgggtgccttacggggactcacgatgctgtgaaccgcccgccagtctctggggctcccaaaatccaggttggaattacggacctccgccggtactacgcattacggggtggaaagtcctaagataggtgaatgaaagggcttcgctaaaccagtaagtcattaacaggacatcggcgtcacgtctcgcgggtttacacggcgcacaaatcctattcccatgataaacaccttatgccaatccacatccctcgctgcctaataaaattgtcacacctgcgctactgactaacgtttacgcaatgagagatgaattccgacacccacgcttgttgcaagcacagccgtatgggttctcgggtaaggtaacacgaggcacactccggcgcggccacttcggcccctccctgacgatgaccctcattggtcaagcatcagtcgaatgattcgtaacaaggagcaaccgactcagtagagagggtgaatctcacgcgctagcctgaggaccgcctaagtgcttgctgtgcgtcgcggcagtcgcgaggtgcgggctaaagtaaataattactggtcttacctaattaaagttggtggttagggacaacgttaccactaccagggtgcgcccctgaattcgggtatcggactatccagggcgccttttgcggccttaaatacctttttaatcacgctggagctagaaggccatcgggatagacggggttctaggtactcgaaaaaacaggcctaataactttattgcgcttggactaacctatgtacaacacgttgtagcatactatggaatgttactgacctacacggatagcatttgttcgggagcgtcattgacctcccagaccctatgccgatctgcaccattcagtgaccatccacaagtctctaggtttagccaaaggtgacaggtcaagcacttgcgcatgtccactagtcgattatgcaacgtctctgaacagttagcacttatctcccgccgtgtgactcacgcagtgaacttacctatagcatacgcctactattgaatgttcgttgttctaacacagcgctaatacctcactggcagaggtgcgcacgctcctagtatgggagggagtcaggtcagagtgtatgagactgatttttattcccgataggggttcagtgaaatcgacctctcaaaagagaggcgcagaattcgctgataagctctgctacgatcgctaaggcacgataagcagggcggtgaaggttggagcaagataatatcacccggacgcgggtcctgtcgcaacgagcggccgtgagacctggtgcgcaccgtgtctcgatcggccgaatatcggaacccactgcgtgactcaaatgatatttttgctatctgtgggggatttatgtcccggtagaactctgcttctagcagaggataaactttacaaggacggcgaatatggtgtcagagcgccctaatgatcccgtgctattccgcgggccaccggccgttaatggacttcgggttagaaggatgggttattcatcttccacagaaacgcccagccgcaatcgtgggtttactcgaccgcggttatctgcctacttagctgcattcctaaaacaggattaaaaaggccgcgagggttgcgaacctatggttgagaacagagtcatagagtcagatgcgcagggacggcacggatccacatggcagttaactaatattaatacccccttagcctcgtatatgggcgtgtgcagtcttgtccactcgcggacgcgtatccgagcgattctgtcttccaacgctattcgttaccactttggcacctctttgctaagcaggatgagaacatctcactcactacgagccttgactttcagcacgcggtacgagggcactgggcttctcgtcctttgctagatgtaggtgccttcccgccctcatgacgatgtcacgtctatcggtttattaaggtcggggaccattacgagattaccccgcgaccttcgtccaaatgggatcacggcaacgttccacgaggggcgcgttgcctgagccactcgggtatccccttccgatatccgcagaagtctagctaggagcaccgccaagcattacccgattaagcaaagcctactcatcgcatacacggttcttggggtttgcgtcagatagcaacttccggcggcagtagagatgatattttatccgattgagcttgcccagcgcaccctcgggccccgtggctcttctcttaaatgtgccctgcacgatgttagcggttcctactcctccccgagccctatgggtggacagactcgccctctgaggctgcgtgttcaactggttccaagtccggcgcctgtggatctacgacgcgaccagcaacattataccaatgtctaggcttagctcgaaaactagtaagccttagaactagggtcgtagcttcttctaaatgaagggcagcgtcatagccatccacgttagcgcttactcaatcgcctgtcggctgtcatgttaccgctgccgtaagttcgtgaacataaaatacaacacattttaggtttaacaaggattgtttaccgccacgtactggtgccggtagtgaaacgaaaaacctcagcatcgggaggaggagaacggaatccctaccaatcttatctctacttaaagaacaaagcgcgcggtacatggcgcagacgagaatgaatccccgaacgggccgagttagactcctcaacctgtcgaaaagttgcgatccgctagatcgtagagtacggacttaaaaaagaaaagaaggtctctacccgagcggtgagcccaaccagttccaggttgctgccggattcttccacacggcggtgccatatggacgaccccgtactttgggcattctaggctacctactgcgaacgcctcgcgttcatgcgcaaagttttctctagataggcgcgctttggtaagcatagtaataggttcttcagcgtctaaagcccgcccattaggcctggcgactctgctttagtggtaaagagatagcatcgatgtacatcgatggagagagtattttcacgaaagtgcgcgccgtacactatttatcggcatgcgcgctaaactggagggtctaataaccagatcacgcaacgaggtcccatgtacggttcgcattgcgaaagtatgggatactagaggttttatcgggcctcgcttgaggtctgtctgggactggcgcacatcgctcgtcgcccagtcgatagcggggtgattaaataagaaatatgttagtgcccggatttggaaccaaccagtcccggtagcggtacaaaaagcctttcctgctagttctatgcttaaagcgtactcctgttacaatccgtaggcaacctgaagaggcaacctggttttcctttatttcgactttgtttgccatttccaatgtgatactgtgcggcgaccttaatgctttttggtaaaaccataccgagatccagcgcacgcgacattcagaccggtcccggtttggcggtcaacctcgtactctgcactgttcagctagaggggtctcctatcccgaggtaccggtcgtctaacgggtggttacaggggctggtcctactctaccaacagttaaggagggcaacaagttcgatggggcatcgtataacttgaatgccattggacaaataataattgctccacgtcccaaacctcaactgaccttgtacgcataggtgccacctgcacgcaaccgagctcgttcaagtgtccttcttagctggcgccgagtgaacctgcatctgagagtctacccaacgatctagtatcataatgtctgtagccagcgactatgacacttagagagccgcctaagaaagtgtttgcggctcctgccccggtgcgcttgttcggtgggaggtcgttatatagaaccatggggatataatgaatggtaacatatctgccacgttgacaagccgctattatgaattcagggttggatactattatggcccttcacggtcacttgtaggacggccccaaacaggattagtaaagtcggtggtctaagtgtaagcgataggcaaactgcggttattcgcgtagaccgcttgatgatgtaaaataacagttttcatgtctttgcaattac",
9
- "start": 0,
10
- "uniqueId": "ctgA 0-20000",
11
- },
12
- ]
13
- `;
14
-
15
- exports[`adapter can fetch sequence from volvox.fa 2`] = `[]`;
@@ -1,39 +0,0 @@
1
- import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
-
3
- /**
4
- * #config IndexedFastaAdapter
5
- */
6
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
7
-
8
- const IndexedFastaAdapter = ConfigurationSchema(
9
- 'IndexedFastaAdapter',
10
- {
11
- /**
12
- * #slot
13
- */
14
- fastaLocation: {
15
- type: 'fileLocation',
16
- defaultValue: { uri: '/path/to/seq.fa', locationType: 'UriLocation' },
17
- },
18
- /**
19
- * #slot
20
- */
21
- faiLocation: {
22
- type: 'fileLocation',
23
- defaultValue: { uri: '/path/to/seq.fa.fai', locationType: 'UriLocation' },
24
- },
25
- /**
26
- * #slot
27
- */
28
- metadataLocation: {
29
- description: 'Optional metadata file',
30
- type: 'fileLocation',
31
- defaultValue: {
32
- uri: '/path/to/fa.metadata.yaml',
33
- locationType: 'UriLocation',
34
- },
35
- },
36
- },
37
- { explicitlyTyped: true },
38
- )
39
- export default IndexedFastaAdapter
@@ -1,20 +0,0 @@
1
- import PluginManager from '@jbrowse/core/PluginManager'
2
- import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
3
-
4
- import configSchema from './configSchema'
5
-
6
- export default (pluginManager: PluginManager) => {
7
- pluginManager.addAdapterType(
8
- () =>
9
- new AdapterType({
10
- name: 'IndexedFastaAdapter',
11
- displayName: 'Indexed FASTA adapter',
12
- configSchema,
13
- adapterMetadata: {
14
- hiddenFromGUI: true,
15
- },
16
- getAdapterClass: () =>
17
- import('./IndexedFastaAdapter').then(r => r.default),
18
- }),
19
- )
20
- }
@@ -1,18 +0,0 @@
1
- import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
- import { default as divSequenceRendererConfigSchema } from '../DivSequenceRenderer/configSchema'
3
-
4
- /**
5
- * #config LinearReferenceSequenceDisplay
6
- */
7
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
8
-
9
- export const configSchema = ConfigurationSchema(
10
- 'LinearReferenceSequenceDisplay',
11
- {
12
- /**
13
- * #slot
14
- */
15
- renderer: divSequenceRendererConfigSchema,
16
- },
17
- { explicitIdentifier: 'displayId', explicitlyTyped: true },
18
- )
@@ -1,21 +0,0 @@
1
- import { DisplayType } from '@jbrowse/core/pluggableElementTypes'
2
- import PluginManager from '@jbrowse/core/PluginManager'
3
- import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'
4
-
5
- import { configSchema } from './configSchema'
6
- import { modelFactory } from './model'
7
-
8
- export default (pluginManager: PluginManager) => {
9
- pluginManager.addDisplayType(() => {
10
- const stateModel = modelFactory(configSchema)
11
- return new DisplayType({
12
- name: 'LinearReferenceSequenceDisplay',
13
- configSchema,
14
- stateModel,
15
- displayName: 'Reference sequence display',
16
- trackType: 'ReferenceSequenceTrack',
17
- viewType: 'LinearGenomeView',
18
- ReactComponent: BaseLinearDisplayComponent,
19
- })
20
- })
21
- }
@@ -1,148 +0,0 @@
1
- import { addDisposer, types } from 'mobx-state-tree'
2
- import {
3
- BaseLinearDisplay,
4
- LinearGenomeViewModel,
5
- } from '@jbrowse/plugin-linear-genome-view'
6
- import {
7
- AnyConfigurationSchemaType,
8
- ConfigurationReference,
9
- } from '@jbrowse/core/configuration'
10
- import { getContainingView } from '@jbrowse/core/util'
11
- import { autorun } from 'mobx'
12
-
13
- type LGV = LinearGenomeViewModel
14
-
15
- /**
16
- * #stateModel LinearReferenceSequenceDisplay
17
- * base model `BaseLinearDisplay`
18
- */
19
- export function modelFactory(configSchema: AnyConfigurationSchemaType) {
20
- return types
21
- .compose(
22
- 'LinearReferenceSequenceDisplay',
23
- BaseLinearDisplay,
24
- types.model({
25
- /**
26
- * #property
27
- */
28
- type: types.literal('LinearReferenceSequenceDisplay'),
29
- /**
30
- * #property
31
- */
32
- configuration: ConfigurationReference(configSchema),
33
- /**
34
- * #property
35
- */
36
- showForward: true,
37
- /**
38
- * #property
39
- */
40
- showReverse: true,
41
- /**
42
- * #property
43
- */
44
- showTranslation: true,
45
- }),
46
- )
47
- .views(self => {
48
- const { renderProps: superRenderProps } = self
49
- return {
50
- /**
51
- * #method
52
- */
53
- renderProps() {
54
- const { showForward, rpcDriverName, showReverse, showTranslation } =
55
- self
56
- return {
57
- ...superRenderProps(),
58
- config: self.configuration.renderer,
59
- rpcDriverName,
60
- showForward,
61
- showReverse,
62
- showTranslation,
63
- }
64
- },
65
- }
66
- })
67
- .views(self => ({
68
- /**
69
- * #method
70
- */
71
- regionCannotBeRendered(/* region */) {
72
- const view = getContainingView(self) as LGV
73
- return view?.bpPerPx >= 1 ? 'Zoom in to see sequence' : undefined
74
- },
75
- /**
76
- * #getter
77
- */
78
- get rendererTypeName() {
79
- return self.configuration.renderer.type
80
- },
81
- }))
82
- .actions(self => ({
83
- /**
84
- * #action
85
- */
86
- toggleShowForward() {
87
- self.showForward = !self.showForward
88
- },
89
- /**
90
- * #action
91
- */
92
- toggleShowReverse() {
93
- self.showReverse = !self.showReverse
94
- },
95
- /**
96
- * #action
97
- */
98
- toggleShowTranslation() {
99
- self.showTranslation = !self.showTranslation
100
- },
101
- afterAttach() {
102
- addDisposer(
103
- self,
104
- autorun(() => {
105
- const view = getContainingView(self) as LGV
106
- if (view?.bpPerPx >= 1) {
107
- self.setHeight(50)
108
- } else {
109
- const { showTranslation, showReverse, showForward } = self
110
- const r1 = showReverse && showTranslation ? 60 : 0
111
- const r2 = showForward && showTranslation ? 60 : 0
112
- const t = r1 + r2
113
- const r = showReverse ? 20 : 0
114
- const s = showForward ? 20 : 0
115
- self.setHeight(t + r + s)
116
- }
117
- }),
118
- )
119
- },
120
- }))
121
- .views(self => ({
122
- /**
123
- * #method
124
- */
125
- trackMenuItems() {
126
- return [
127
- {
128
- label: 'Show forward',
129
- type: 'checkbox',
130
- checked: self.showForward,
131
- onClick: () => self.toggleShowForward(),
132
- },
133
- {
134
- label: 'Show reverse',
135
- type: 'checkbox',
136
- checked: self.showReverse,
137
- onClick: () => self.toggleShowReverse(),
138
- },
139
- {
140
- label: 'Show translation',
141
- type: 'checkbox',
142
- checked: self.showTranslation,
143
- onClick: () => self.toggleShowTranslation(),
144
- },
145
- ]
146
- },
147
- }))
148
- }
@@ -1,117 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { types } from 'mobx-state-tree'
3
- import { ConfigurationSchema } from '@jbrowse/core/configuration'
4
- import PluginManager from '@jbrowse/core/PluginManager'
5
-
6
- // Note: this is primarily a copy of createBaseTrackConfig, except with a
7
- // subset of the config slots, to avoid including fields that don't make sense
8
- // for the ReferenceSequenceTrack
9
-
10
- /**
11
- * #config ReferenceSequenceTrack
12
- * used to display base level DNA sequence tracks
13
- */
14
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
15
-
16
- export function createReferenceSeqTrackConfig(pluginManager: PluginManager) {
17
- return ConfigurationSchema(
18
- 'ReferenceSequenceTrack',
19
- {
20
- /**
21
- * #slot
22
- * configuration for track adapter
23
- */
24
- adapter: pluginManager.pluggableConfigSchemaType('adapter'),
25
-
26
- /**
27
- * #slot
28
- * configuration for the displays e.g. LinearReferenceSequenceDisplay
29
- */
30
- displays: types.array(pluginManager.pluggableConfigSchemaType('display')),
31
-
32
- /**
33
- * #slot
34
- */
35
- name: {
36
- type: 'string',
37
- description:
38
- 'optional track name, otherwise uses the "Reference sequence (assemblyName)"',
39
- defaultValue: '',
40
- },
41
-
42
- /**
43
- * #slot
44
- */
45
- metadata: {
46
- type: 'frozen',
47
- description: 'anything to add about this track',
48
- defaultValue: {},
49
- },
50
-
51
- formatAbout: ConfigurationSchema('FormatAbout', {
52
- /**
53
- * #slot formatAbout.config
54
- */
55
- config: {
56
- type: 'frozen',
57
- description: 'formats configuration in about dialog',
58
- defaultValue: {},
59
- contextVariable: ['config'],
60
- },
61
-
62
- /**
63
- * #slot formatAbout.hideUris
64
- */
65
- hideUris: {
66
- type: 'boolean',
67
- defaultValue: false,
68
- },
69
- }),
70
- },
71
- {
72
- preProcessSnapshot: s => {
73
- const snap = JSON.parse(JSON.stringify(s))
74
- const displayTypes = new Set()
75
- const { displays = [] } = snap
76
- if (snap.trackId !== 'placeholderId') {
77
- // Gets the displays on the track snapshot and the possible displays
78
- // from the track type and adds any missing possible displays to the
79
- // snapshot
80
- displays.forEach((d: any) => d && displayTypes.add(d.type))
81
- const trackType = pluginManager.getTrackType(snap.type)
82
- trackType.displayTypes.forEach(displayType => {
83
- if (!displayTypes.has(displayType.name)) {
84
- displays.push({
85
- displayId: `${snap.trackId}-${displayType.name}`,
86
- type: displayType.name,
87
- })
88
- }
89
- })
90
- }
91
- return { ...snap, displays }
92
- },
93
- /**
94
- * #identifier
95
- * all tracks have a globally unique 'trackId'
96
- */
97
- explicitIdentifier: 'trackId',
98
- explicitlyTyped: true,
99
- actions: (self: any) => ({
100
- addDisplayConf(displayConf: { type: string; displayId: string }) {
101
- const { type } = displayConf
102
- if (!type) {
103
- throw new Error(`unknown display type ${type}`)
104
- }
105
- const display = self.displays.find(
106
- (d: any) => d && d.displayId === displayConf.displayId,
107
- )
108
- if (display) {
109
- return display
110
- }
111
- const length = self.displays.push(displayConf)
112
- return self.displays[length - 1]
113
- },
114
- }),
115
- },
116
- )
117
- }
@@ -1,22 +0,0 @@
1
- import PluginManager from '@jbrowse/core/PluginManager'
2
-
3
- import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'
4
- import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'
5
- import { createReferenceSeqTrackConfig } from './configSchema'
6
-
7
- export default (pluginManager: PluginManager) => {
8
- pluginManager.addTrackType(() => {
9
- const configSchema = createReferenceSeqTrackConfig(pluginManager)
10
-
11
- return new TrackType({
12
- name: 'ReferenceSequenceTrack',
13
- displayName: 'Reference sequence track',
14
- configSchema,
15
- stateModel: createBaseTrackModel(
16
- pluginManager,
17
- 'ReferenceSequenceTrack',
18
- configSchema,
19
- ),
20
- })
21
- })
22
- }