@nice2dev/ui-tools 1.0.10
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.
- package/README.md +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,1149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file scientific-research.ts
|
|
3
|
+
* @module @nice2dev/ui-tools
|
|
4
|
+
* @description PRO-29 — Scientific & Research Tools
|
|
5
|
+
*
|
|
6
|
+
* Types for lab notebooks, experiment management, data analysis,
|
|
7
|
+
* and publication/collaboration in scientific environments.
|
|
8
|
+
*/
|
|
9
|
+
/** Scientific unit */
|
|
10
|
+
export interface ScientificUnit {
|
|
11
|
+
symbol: string;
|
|
12
|
+
name: string;
|
|
13
|
+
dimension: UnitDimension;
|
|
14
|
+
siConversionFactor?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Unit dimension */
|
|
17
|
+
export type UnitDimension = 'length' | 'mass' | 'time' | 'temperature' | 'amount' | 'current' | 'luminosity' | 'dimensionless';
|
|
18
|
+
/** Measurement */
|
|
19
|
+
export interface Measurement {
|
|
20
|
+
value: number;
|
|
21
|
+
unit: string;
|
|
22
|
+
uncertainty?: number;
|
|
23
|
+
timestamp?: Date;
|
|
24
|
+
}
|
|
25
|
+
/** Digital signature */
|
|
26
|
+
export interface DigitalSignature {
|
|
27
|
+
signerId: string;
|
|
28
|
+
signerName: string;
|
|
29
|
+
timestamp: Date;
|
|
30
|
+
reason?: string;
|
|
31
|
+
hash: string;
|
|
32
|
+
valid: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Audit trail entry */
|
|
35
|
+
export interface AuditTrailEntry {
|
|
36
|
+
id: string;
|
|
37
|
+
timestamp: Date;
|
|
38
|
+
userId: string;
|
|
39
|
+
userName: string;
|
|
40
|
+
action: AuditAction;
|
|
41
|
+
field?: string;
|
|
42
|
+
oldValue?: string;
|
|
43
|
+
newValue?: string;
|
|
44
|
+
ipAddress?: string;
|
|
45
|
+
reason?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Audit action */
|
|
48
|
+
export type AuditAction = 'create' | 'update' | 'delete' | 'sign' | 'approve' | 'reject' | 'view' | 'export' | 'print';
|
|
49
|
+
/** Lab notebook config */
|
|
50
|
+
export interface LabNotebookConfig {
|
|
51
|
+
complianceMode?: ComplianceMode;
|
|
52
|
+
requireSignatures?: boolean;
|
|
53
|
+
autoNumbering?: boolean;
|
|
54
|
+
templates?: NotebookTemplate[];
|
|
55
|
+
allowedFormats?: string[];
|
|
56
|
+
}
|
|
57
|
+
/** Compliance mode */
|
|
58
|
+
export type ComplianceMode = 'none' | '21_cfr_part_11' | 'glp' | 'gcp' | 'iso_17025';
|
|
59
|
+
/** Notebook template */
|
|
60
|
+
export interface NotebookTemplate {
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
type: TemplateType;
|
|
64
|
+
sections: TemplateSection[];
|
|
65
|
+
metadata?: Record<string, string>;
|
|
66
|
+
}
|
|
67
|
+
/** Template type */
|
|
68
|
+
export type TemplateType = 'experiment' | 'protocol' | 'sop' | 'meeting' | 'general';
|
|
69
|
+
/** Template section */
|
|
70
|
+
export interface TemplateSection {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
type: SectionType;
|
|
74
|
+
required?: boolean;
|
|
75
|
+
defaultContent?: string;
|
|
76
|
+
placeholder?: string;
|
|
77
|
+
}
|
|
78
|
+
/** Section type */
|
|
79
|
+
export type SectionType = 'rich_text' | 'table' | 'formula' | 'image' | 'data_entry' | 'signature' | 'checklist';
|
|
80
|
+
/** Lab notebook entry */
|
|
81
|
+
export interface LabNotebookEntry {
|
|
82
|
+
id: string;
|
|
83
|
+
notebookId: string;
|
|
84
|
+
title: string;
|
|
85
|
+
entryNumber: string;
|
|
86
|
+
createdAt: Date;
|
|
87
|
+
updatedAt: Date;
|
|
88
|
+
author: string;
|
|
89
|
+
status: EntryStatus;
|
|
90
|
+
content: NotebookContent[];
|
|
91
|
+
tags?: string[];
|
|
92
|
+
linkedExperiments?: string[];
|
|
93
|
+
linkedProtocols?: string[];
|
|
94
|
+
signatures?: DigitalSignature[];
|
|
95
|
+
auditTrail: AuditTrailEntry[];
|
|
96
|
+
version: number;
|
|
97
|
+
previousVersionId?: string;
|
|
98
|
+
}
|
|
99
|
+
/** Entry status */
|
|
100
|
+
export type EntryStatus = 'draft' | 'in_review' | 'signed' | 'locked';
|
|
101
|
+
/** Notebook content */
|
|
102
|
+
export interface NotebookContent {
|
|
103
|
+
id: string;
|
|
104
|
+
type: ContentType;
|
|
105
|
+
order: number;
|
|
106
|
+
data: ContentData;
|
|
107
|
+
}
|
|
108
|
+
/** Content type */
|
|
109
|
+
export type ContentType = 'text' | 'heading' | 'table' | 'image' | 'formula' | 'data_form' | 'file_attachment' | 'signature_block' | 'checklist';
|
|
110
|
+
/** Content data - union type for different content types */
|
|
111
|
+
export type ContentData = TextContent | TableContent | ImageContent | FormulaContent | DataFormContent | FileAttachmentContent | ChecklistContent;
|
|
112
|
+
/** Text content */
|
|
113
|
+
export interface TextContent {
|
|
114
|
+
type: 'text' | 'heading';
|
|
115
|
+
html: string;
|
|
116
|
+
headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
117
|
+
}
|
|
118
|
+
/** Table content */
|
|
119
|
+
export interface TableContent {
|
|
120
|
+
type: 'table';
|
|
121
|
+
rows: TableRow[];
|
|
122
|
+
headers?: string[];
|
|
123
|
+
caption?: string;
|
|
124
|
+
}
|
|
125
|
+
/** Table row */
|
|
126
|
+
export interface TableRow {
|
|
127
|
+
cells: TableCell[];
|
|
128
|
+
}
|
|
129
|
+
/** Table cell */
|
|
130
|
+
export interface TableCell {
|
|
131
|
+
value: string | number;
|
|
132
|
+
type?: 'text' | 'number' | 'formula';
|
|
133
|
+
format?: string;
|
|
134
|
+
}
|
|
135
|
+
/** Image content */
|
|
136
|
+
export interface ImageContent {
|
|
137
|
+
type: 'image';
|
|
138
|
+
url: string;
|
|
139
|
+
alt?: string;
|
|
140
|
+
caption?: string;
|
|
141
|
+
width?: number;
|
|
142
|
+
height?: number;
|
|
143
|
+
annotations?: ImageAnnotation[];
|
|
144
|
+
}
|
|
145
|
+
/** Image annotation */
|
|
146
|
+
export interface ImageAnnotation {
|
|
147
|
+
id: string;
|
|
148
|
+
type: 'arrow' | 'circle' | 'rectangle' | 'text';
|
|
149
|
+
x: number;
|
|
150
|
+
y: number;
|
|
151
|
+
width?: number;
|
|
152
|
+
height?: number;
|
|
153
|
+
text?: string;
|
|
154
|
+
color?: string;
|
|
155
|
+
}
|
|
156
|
+
/** Formula content */
|
|
157
|
+
export interface FormulaContent {
|
|
158
|
+
type: 'formula';
|
|
159
|
+
latex: string;
|
|
160
|
+
displayMode?: boolean;
|
|
161
|
+
numbering?: string;
|
|
162
|
+
}
|
|
163
|
+
/** Data form content */
|
|
164
|
+
export interface DataFormContent {
|
|
165
|
+
type: 'data_form';
|
|
166
|
+
fields: DataFormField[];
|
|
167
|
+
values: Record<string, unknown>;
|
|
168
|
+
}
|
|
169
|
+
/** Data form field */
|
|
170
|
+
export interface DataFormField {
|
|
171
|
+
id: string;
|
|
172
|
+
label: string;
|
|
173
|
+
type: FieldType;
|
|
174
|
+
unit?: string;
|
|
175
|
+
required?: boolean;
|
|
176
|
+
validation?: FieldValidation;
|
|
177
|
+
}
|
|
178
|
+
/** Field type */
|
|
179
|
+
export type FieldType = 'text' | 'number' | 'date' | 'time' | 'datetime' | 'select' | 'checkbox' | 'measurement';
|
|
180
|
+
/** Field validation */
|
|
181
|
+
export interface FieldValidation {
|
|
182
|
+
min?: number;
|
|
183
|
+
max?: number;
|
|
184
|
+
pattern?: string;
|
|
185
|
+
options?: string[];
|
|
186
|
+
}
|
|
187
|
+
/** File attachment content */
|
|
188
|
+
export interface FileAttachmentContent {
|
|
189
|
+
type: 'file_attachment';
|
|
190
|
+
fileId: string;
|
|
191
|
+
fileName: string;
|
|
192
|
+
fileSize: number;
|
|
193
|
+
mimeType: string;
|
|
194
|
+
checksum?: string;
|
|
195
|
+
}
|
|
196
|
+
/** Checklist content */
|
|
197
|
+
export interface ChecklistContent {
|
|
198
|
+
type: 'checklist';
|
|
199
|
+
items: ChecklistItem[];
|
|
200
|
+
}
|
|
201
|
+
/** Checklist item */
|
|
202
|
+
export interface ChecklistItem {
|
|
203
|
+
id: string;
|
|
204
|
+
text: string;
|
|
205
|
+
checked: boolean;
|
|
206
|
+
checkedBy?: string;
|
|
207
|
+
checkedAt?: Date;
|
|
208
|
+
}
|
|
209
|
+
/** Protocol */
|
|
210
|
+
export interface Protocol {
|
|
211
|
+
id: string;
|
|
212
|
+
title: string;
|
|
213
|
+
version: string;
|
|
214
|
+
status: DocumentStatus;
|
|
215
|
+
createdBy: string;
|
|
216
|
+
createdAt: Date;
|
|
217
|
+
updatedAt: Date;
|
|
218
|
+
approvedBy?: string;
|
|
219
|
+
approvedAt?: Date;
|
|
220
|
+
objective: string;
|
|
221
|
+
materials: ProtocolMaterial[];
|
|
222
|
+
equipment: ProtocolEquipment[];
|
|
223
|
+
safetyWarnings?: SafetyWarning[];
|
|
224
|
+
steps: ProtocolStep[];
|
|
225
|
+
expectedResults?: string;
|
|
226
|
+
troubleshooting?: TroubleshootingItem[];
|
|
227
|
+
references?: Reference[];
|
|
228
|
+
attachments?: string[];
|
|
229
|
+
}
|
|
230
|
+
/** Document status */
|
|
231
|
+
export type DocumentStatus = 'draft' | 'in_review' | 'approved' | 'superseded' | 'retired';
|
|
232
|
+
/** Protocol material */
|
|
233
|
+
export interface ProtocolMaterial {
|
|
234
|
+
name: string;
|
|
235
|
+
catalogNumber?: string;
|
|
236
|
+
vendor?: string;
|
|
237
|
+
quantity: number;
|
|
238
|
+
unit: string;
|
|
239
|
+
concentration?: string;
|
|
240
|
+
storageConditions?: string;
|
|
241
|
+
notes?: string;
|
|
242
|
+
}
|
|
243
|
+
/** Protocol equipment */
|
|
244
|
+
export interface ProtocolEquipment {
|
|
245
|
+
name: string;
|
|
246
|
+
model?: string;
|
|
247
|
+
calibrationRequired?: boolean;
|
|
248
|
+
settings?: Record<string, string>;
|
|
249
|
+
}
|
|
250
|
+
/** Safety warning */
|
|
251
|
+
export interface SafetyWarning {
|
|
252
|
+
type: SafetyWarningType;
|
|
253
|
+
message: string;
|
|
254
|
+
ppe?: string[];
|
|
255
|
+
}
|
|
256
|
+
/** Safety warning type */
|
|
257
|
+
export type SafetyWarningType = 'biohazard' | 'chemical' | 'radiation' | 'electrical' | 'fire' | 'temperature' | 'pressure' | 'general';
|
|
258
|
+
/** Protocol step */
|
|
259
|
+
export interface ProtocolStep {
|
|
260
|
+
number: number;
|
|
261
|
+
instruction: string;
|
|
262
|
+
duration?: number;
|
|
263
|
+
durationUnit?: 'seconds' | 'minutes' | 'hours' | 'days';
|
|
264
|
+
temperature?: string;
|
|
265
|
+
criticalStep?: boolean;
|
|
266
|
+
notes?: string;
|
|
267
|
+
subSteps?: string[];
|
|
268
|
+
imageUrl?: string;
|
|
269
|
+
}
|
|
270
|
+
/** Troubleshooting item */
|
|
271
|
+
export interface TroubleshootingItem {
|
|
272
|
+
problem: string;
|
|
273
|
+
possibleCause: string;
|
|
274
|
+
solution: string;
|
|
275
|
+
}
|
|
276
|
+
/** Reference */
|
|
277
|
+
export interface Reference {
|
|
278
|
+
type: ReferenceType;
|
|
279
|
+
title: string;
|
|
280
|
+
authors?: string[];
|
|
281
|
+
year?: number;
|
|
282
|
+
journal?: string;
|
|
283
|
+
volume?: string;
|
|
284
|
+
pages?: string;
|
|
285
|
+
doi?: string;
|
|
286
|
+
pmid?: string;
|
|
287
|
+
url?: string;
|
|
288
|
+
}
|
|
289
|
+
/** Reference type */
|
|
290
|
+
export type ReferenceType = 'journal_article' | 'book' | 'book_chapter' | 'thesis' | 'conference' | 'website' | 'patent' | 'preprint';
|
|
291
|
+
/** SOP (Standard Operating Procedure) */
|
|
292
|
+
export interface SOP {
|
|
293
|
+
id: string;
|
|
294
|
+
sopNumber: string;
|
|
295
|
+
title: string;
|
|
296
|
+
version: string;
|
|
297
|
+
status: DocumentStatus;
|
|
298
|
+
effectiveDate?: Date;
|
|
299
|
+
reviewDate?: Date;
|
|
300
|
+
department?: string;
|
|
301
|
+
scope: string;
|
|
302
|
+
responsibilities?: SOPResponsibility[];
|
|
303
|
+
procedure: Protocol;
|
|
304
|
+
trainingRecords?: TrainingRecord[];
|
|
305
|
+
relatedSOPs?: string[];
|
|
306
|
+
changeHistory: ChangeHistoryEntry[];
|
|
307
|
+
}
|
|
308
|
+
/** SOP responsibility */
|
|
309
|
+
export interface SOPResponsibility {
|
|
310
|
+
role: string;
|
|
311
|
+
description: string;
|
|
312
|
+
}
|
|
313
|
+
/** Training record */
|
|
314
|
+
export interface TrainingRecord {
|
|
315
|
+
userId: string;
|
|
316
|
+
userName: string;
|
|
317
|
+
trainedDate: Date;
|
|
318
|
+
method: TrainingMethod;
|
|
319
|
+
trainer?: string;
|
|
320
|
+
expirationDate?: Date;
|
|
321
|
+
assessment?: AssessmentResult;
|
|
322
|
+
}
|
|
323
|
+
/** Training method */
|
|
324
|
+
export type TrainingMethod = 'read_understand' | 'classroom' | 'hands_on' | 'online' | 'demonstration';
|
|
325
|
+
/** Assessment result */
|
|
326
|
+
export interface AssessmentResult {
|
|
327
|
+
passed: boolean;
|
|
328
|
+
score?: number;
|
|
329
|
+
attempts?: number;
|
|
330
|
+
completedAt: Date;
|
|
331
|
+
}
|
|
332
|
+
/** Change history entry */
|
|
333
|
+
export interface ChangeHistoryEntry {
|
|
334
|
+
version: string;
|
|
335
|
+
date: Date;
|
|
336
|
+
author: string;
|
|
337
|
+
description: string;
|
|
338
|
+
approvedBy?: string;
|
|
339
|
+
}
|
|
340
|
+
/** Research proposal */
|
|
341
|
+
export interface ResearchProposal {
|
|
342
|
+
id: string;
|
|
343
|
+
title: string;
|
|
344
|
+
status: ProposalStatus;
|
|
345
|
+
fundingAgency?: string;
|
|
346
|
+
submissionDeadline?: Date;
|
|
347
|
+
submittedDate?: Date;
|
|
348
|
+
principalInvestigator: Researcher;
|
|
349
|
+
coInvestigators?: Researcher[];
|
|
350
|
+
sections: ProposalSection[];
|
|
351
|
+
budget: ProposalBudget;
|
|
352
|
+
timeline: ProposalTimeline[];
|
|
353
|
+
attachments?: string[];
|
|
354
|
+
}
|
|
355
|
+
/** Proposal status */
|
|
356
|
+
export type ProposalStatus = 'draft' | 'internal_review' | 'submitted' | 'under_review' | 'funded' | 'rejected' | 'withdrawn';
|
|
357
|
+
/** Researcher */
|
|
358
|
+
export interface Researcher {
|
|
359
|
+
id: string;
|
|
360
|
+
name: string;
|
|
361
|
+
title?: string;
|
|
362
|
+
institution: string;
|
|
363
|
+
department?: string;
|
|
364
|
+
email: string;
|
|
365
|
+
orcid?: string;
|
|
366
|
+
}
|
|
367
|
+
/** Proposal section */
|
|
368
|
+
export interface ProposalSection {
|
|
369
|
+
id: string;
|
|
370
|
+
name: string;
|
|
371
|
+
type: ProposalSectionType;
|
|
372
|
+
content: string;
|
|
373
|
+
wordCount?: number;
|
|
374
|
+
wordLimit?: number;
|
|
375
|
+
}
|
|
376
|
+
/** Proposal section type */
|
|
377
|
+
export type ProposalSectionType = 'abstract' | 'specific_aims' | 'background' | 'methodology' | 'expected_outcomes' | 'significance' | 'innovation' | 'timeline' | 'budget_justification' | 'references' | 'appendix';
|
|
378
|
+
/** Proposal budget */
|
|
379
|
+
export interface ProposalBudget {
|
|
380
|
+
totalRequested: number;
|
|
381
|
+
currency: string;
|
|
382
|
+
years: BudgetYear[];
|
|
383
|
+
justification?: string;
|
|
384
|
+
}
|
|
385
|
+
/** Budget year */
|
|
386
|
+
export interface BudgetYear {
|
|
387
|
+
year: number;
|
|
388
|
+
personnel: BudgetLine[];
|
|
389
|
+
equipment: BudgetLine[];
|
|
390
|
+
supplies: BudgetLine[];
|
|
391
|
+
travel: BudgetLine[];
|
|
392
|
+
other: BudgetLine[];
|
|
393
|
+
indirectCosts?: number;
|
|
394
|
+
total: number;
|
|
395
|
+
}
|
|
396
|
+
/** Budget line */
|
|
397
|
+
export interface BudgetLine {
|
|
398
|
+
description: string;
|
|
399
|
+
amount: number;
|
|
400
|
+
justification?: string;
|
|
401
|
+
}
|
|
402
|
+
/** Proposal timeline */
|
|
403
|
+
export interface ProposalTimeline {
|
|
404
|
+
milestone: string;
|
|
405
|
+
startMonth: number;
|
|
406
|
+
endMonth: number;
|
|
407
|
+
year: number;
|
|
408
|
+
}
|
|
409
|
+
/** Bibliography entry */
|
|
410
|
+
export interface BibliographyEntry {
|
|
411
|
+
id: string;
|
|
412
|
+
citeKey: string;
|
|
413
|
+
reference: Reference;
|
|
414
|
+
abstract?: string;
|
|
415
|
+
keywords?: string[];
|
|
416
|
+
notes?: string;
|
|
417
|
+
pdfFile?: string;
|
|
418
|
+
addedDate: Date;
|
|
419
|
+
readStatus?: ReadStatus;
|
|
420
|
+
rating?: number;
|
|
421
|
+
collections?: string[];
|
|
422
|
+
highlights?: Highlight[];
|
|
423
|
+
}
|
|
424
|
+
/** Read status */
|
|
425
|
+
export type ReadStatus = 'unread' | 'reading' | 'read' | 'archived';
|
|
426
|
+
/** Highlight */
|
|
427
|
+
export interface Highlight {
|
|
428
|
+
id: string;
|
|
429
|
+
text: string;
|
|
430
|
+
page?: number;
|
|
431
|
+
color?: string;
|
|
432
|
+
note?: string;
|
|
433
|
+
createdAt: Date;
|
|
434
|
+
}
|
|
435
|
+
/** Citation style */
|
|
436
|
+
export type CitationStyle = 'apa' | 'mla' | 'chicago' | 'ieee' | 'vancouver' | 'harvard' | 'nature' | 'science' | 'cell' | 'custom';
|
|
437
|
+
/** Experiment */
|
|
438
|
+
export interface Experiment {
|
|
439
|
+
id: string;
|
|
440
|
+
experimentNumber: string;
|
|
441
|
+
title: string;
|
|
442
|
+
objective: string;
|
|
443
|
+
status: ExperimentStatus;
|
|
444
|
+
type: ExperimentType;
|
|
445
|
+
startDate: Date;
|
|
446
|
+
endDate?: Date;
|
|
447
|
+
researcher: string;
|
|
448
|
+
collaborators?: string[];
|
|
449
|
+
protocolId?: string;
|
|
450
|
+
design: ExperimentDesign;
|
|
451
|
+
samples?: ExperimentSample[];
|
|
452
|
+
results?: ExperimentResult[];
|
|
453
|
+
conclusions?: string;
|
|
454
|
+
notebookEntries?: string[];
|
|
455
|
+
linkedExperiments?: string[];
|
|
456
|
+
tags?: string[];
|
|
457
|
+
}
|
|
458
|
+
/** Experiment status */
|
|
459
|
+
export type ExperimentStatus = 'planned' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'on_hold';
|
|
460
|
+
/** Experiment type */
|
|
461
|
+
export type ExperimentType = 'screening' | 'optimization' | 'validation' | 'pilot' | 'full_scale' | 'replication';
|
|
462
|
+
/** Experiment design */
|
|
463
|
+
export interface ExperimentDesign {
|
|
464
|
+
type: DesignType;
|
|
465
|
+
variables: ExperimentVariable[];
|
|
466
|
+
controls: ExperimentControl[];
|
|
467
|
+
replicates: number;
|
|
468
|
+
randomization?: boolean;
|
|
469
|
+
blindingLevel?: BlindingLevel;
|
|
470
|
+
statisticalPower?: number;
|
|
471
|
+
}
|
|
472
|
+
/** Design type */
|
|
473
|
+
export type DesignType = 'factorial' | 'randomized_block' | 'latin_square' | 'split_plot' | 'crossover' | 'case_control' | 'cohort' | 'single_factor';
|
|
474
|
+
/** Experiment variable */
|
|
475
|
+
export interface ExperimentVariable {
|
|
476
|
+
name: string;
|
|
477
|
+
type: VariableType;
|
|
478
|
+
levels?: string[] | number[];
|
|
479
|
+
unit?: string;
|
|
480
|
+
description?: string;
|
|
481
|
+
}
|
|
482
|
+
/** Variable type */
|
|
483
|
+
export type VariableType = 'independent' | 'dependent' | 'controlled' | 'confounding';
|
|
484
|
+
/** Experiment control */
|
|
485
|
+
export interface ExperimentControl {
|
|
486
|
+
type: ControlType;
|
|
487
|
+
description: string;
|
|
488
|
+
sampleIds?: string[];
|
|
489
|
+
}
|
|
490
|
+
/** Control type */
|
|
491
|
+
export type ControlType = 'positive' | 'negative' | 'blank' | 'vehicle' | 'sham' | 'placebo';
|
|
492
|
+
/** Blinding level */
|
|
493
|
+
export type BlindingLevel = 'none' | 'single' | 'double' | 'triple';
|
|
494
|
+
/** Experiment sample */
|
|
495
|
+
export interface ExperimentSample {
|
|
496
|
+
sampleId: string;
|
|
497
|
+
group: string;
|
|
498
|
+
condition: string;
|
|
499
|
+
measurements: Measurement[];
|
|
500
|
+
}
|
|
501
|
+
/** Experiment result */
|
|
502
|
+
export interface ExperimentResult {
|
|
503
|
+
id: string;
|
|
504
|
+
type: ResultType;
|
|
505
|
+
variable: string;
|
|
506
|
+
dataPoints: DataPoint[];
|
|
507
|
+
statistics?: ResultStatistics;
|
|
508
|
+
visualizationUrl?: string;
|
|
509
|
+
}
|
|
510
|
+
/** Result type */
|
|
511
|
+
export type ResultType = 'quantitative' | 'qualitative' | 'categorical' | 'image' | 'spectrum';
|
|
512
|
+
/** Data point */
|
|
513
|
+
export interface DataPoint {
|
|
514
|
+
x?: number;
|
|
515
|
+
y: number;
|
|
516
|
+
label?: string;
|
|
517
|
+
error?: number;
|
|
518
|
+
metadata?: Record<string, unknown>;
|
|
519
|
+
}
|
|
520
|
+
/** Result statistics */
|
|
521
|
+
export interface ResultStatistics {
|
|
522
|
+
mean?: number;
|
|
523
|
+
median?: number;
|
|
524
|
+
standardDeviation?: number;
|
|
525
|
+
standardError?: number;
|
|
526
|
+
min?: number;
|
|
527
|
+
max?: number;
|
|
528
|
+
n: number;
|
|
529
|
+
pValue?: number;
|
|
530
|
+
confidenceInterval?: [number, number];
|
|
531
|
+
}
|
|
532
|
+
/** Sample */
|
|
533
|
+
export interface Sample {
|
|
534
|
+
id: string;
|
|
535
|
+
sampleId: string;
|
|
536
|
+
name: string;
|
|
537
|
+
type: SampleType;
|
|
538
|
+
status: SampleStatus;
|
|
539
|
+
source?: string;
|
|
540
|
+
collectionDate?: Date;
|
|
541
|
+
collectionMethod?: string;
|
|
542
|
+
quantity: number;
|
|
543
|
+
quantityUnit: string;
|
|
544
|
+
concentration?: number;
|
|
545
|
+
concentrationUnit?: string;
|
|
546
|
+
storageLocation: StorageLocation;
|
|
547
|
+
storageConditions: StorageConditions;
|
|
548
|
+
expirationDate?: Date;
|
|
549
|
+
parentSampleId?: string;
|
|
550
|
+
aliquots?: string[];
|
|
551
|
+
chainOfCustody: CustodyEvent[];
|
|
552
|
+
barcode?: string;
|
|
553
|
+
qrCode?: string;
|
|
554
|
+
metadata?: Record<string, unknown>;
|
|
555
|
+
}
|
|
556
|
+
/** Sample type */
|
|
557
|
+
export type SampleType = 'biological' | 'chemical' | 'environmental' | 'clinical' | 'reagent' | 'standard' | 'control' | 'other';
|
|
558
|
+
/** Sample status */
|
|
559
|
+
export type SampleStatus = 'available' | 'in_use' | 'depleted' | 'expired' | 'quarantined' | 'disposed';
|
|
560
|
+
/** Storage location */
|
|
561
|
+
export interface StorageLocation {
|
|
562
|
+
room: string;
|
|
563
|
+
equipment: string;
|
|
564
|
+
shelf?: string;
|
|
565
|
+
rack?: string;
|
|
566
|
+
box?: string;
|
|
567
|
+
position?: string;
|
|
568
|
+
}
|
|
569
|
+
/** Storage conditions */
|
|
570
|
+
export interface StorageConditions {
|
|
571
|
+
temperature: number;
|
|
572
|
+
temperatureUnit: 'C' | 'F' | 'K';
|
|
573
|
+
humidity?: number;
|
|
574
|
+
lightSensitive?: boolean;
|
|
575
|
+
specialRequirements?: string[];
|
|
576
|
+
}
|
|
577
|
+
/** Custody event */
|
|
578
|
+
export interface CustodyEvent {
|
|
579
|
+
timestamp: Date;
|
|
580
|
+
action: CustodyAction;
|
|
581
|
+
userId: string;
|
|
582
|
+
userName: string;
|
|
583
|
+
fromLocation?: StorageLocation;
|
|
584
|
+
toLocation?: StorageLocation;
|
|
585
|
+
notes?: string;
|
|
586
|
+
}
|
|
587
|
+
/** Custody action */
|
|
588
|
+
export type CustodyAction = 'received' | 'stored' | 'retrieved' | 'transferred' | 'aliquoted' | 'tested' | 'disposed';
|
|
589
|
+
/** Instrument */
|
|
590
|
+
export interface Instrument {
|
|
591
|
+
id: string;
|
|
592
|
+
name: string;
|
|
593
|
+
model: string;
|
|
594
|
+
manufacturer: string;
|
|
595
|
+
serialNumber: string;
|
|
596
|
+
location: string;
|
|
597
|
+
status: InstrumentStatus;
|
|
598
|
+
purchaseDate?: Date;
|
|
599
|
+
warrantyExpiration?: Date;
|
|
600
|
+
maintenanceSchedule: MaintenanceSchedule[];
|
|
601
|
+
calibrationRecords: CalibrationRecord[];
|
|
602
|
+
usageLog: UsageLogEntry[];
|
|
603
|
+
documents?: string[];
|
|
604
|
+
}
|
|
605
|
+
/** Instrument status */
|
|
606
|
+
export type InstrumentStatus = 'operational' | 'under_maintenance' | 'calibration_due' | 'out_of_service' | 'retired';
|
|
607
|
+
/** Maintenance schedule */
|
|
608
|
+
export interface MaintenanceSchedule {
|
|
609
|
+
type: MaintenanceType;
|
|
610
|
+
frequency: string;
|
|
611
|
+
lastPerformed?: Date;
|
|
612
|
+
nextDue: Date;
|
|
613
|
+
assignedTo?: string;
|
|
614
|
+
}
|
|
615
|
+
/** Maintenance type */
|
|
616
|
+
export type MaintenanceType = 'preventive' | 'corrective' | 'calibration' | 'validation' | 'cleaning';
|
|
617
|
+
/** Calibration record */
|
|
618
|
+
export interface CalibrationRecord {
|
|
619
|
+
id: string;
|
|
620
|
+
date: Date;
|
|
621
|
+
performedBy: string;
|
|
622
|
+
standard: string;
|
|
623
|
+
results: CalibrationResult[];
|
|
624
|
+
passed: boolean;
|
|
625
|
+
certificateUrl?: string;
|
|
626
|
+
nextCalibrationDate?: Date;
|
|
627
|
+
}
|
|
628
|
+
/** Calibration result */
|
|
629
|
+
export interface CalibrationResult {
|
|
630
|
+
parameter: string;
|
|
631
|
+
expectedValue: number;
|
|
632
|
+
measuredValue: number;
|
|
633
|
+
tolerance: number;
|
|
634
|
+
passed: boolean;
|
|
635
|
+
}
|
|
636
|
+
/** Usage log entry */
|
|
637
|
+
export interface UsageLogEntry {
|
|
638
|
+
id: string;
|
|
639
|
+
userId: string;
|
|
640
|
+
userName: string;
|
|
641
|
+
startTime: Date;
|
|
642
|
+
endTime?: Date;
|
|
643
|
+
purpose: string;
|
|
644
|
+
experimentId?: string;
|
|
645
|
+
notes?: string;
|
|
646
|
+
}
|
|
647
|
+
/** Research dataset */
|
|
648
|
+
export interface ResearchDataset {
|
|
649
|
+
id: string;
|
|
650
|
+
name: string;
|
|
651
|
+
description: string;
|
|
652
|
+
type: DatasetType;
|
|
653
|
+
format: string;
|
|
654
|
+
size: number;
|
|
655
|
+
sizeUnit: 'B' | 'KB' | 'MB' | 'GB' | 'TB';
|
|
656
|
+
createdDate: Date;
|
|
657
|
+
modifiedDate: Date;
|
|
658
|
+
creator: string;
|
|
659
|
+
license?: string;
|
|
660
|
+
doi?: string;
|
|
661
|
+
version: string;
|
|
662
|
+
metadata: DatasetMetadata;
|
|
663
|
+
accessLevel: AccessLevel;
|
|
664
|
+
dataLineage?: DataLineage;
|
|
665
|
+
qualityScore?: number;
|
|
666
|
+
}
|
|
667
|
+
/** Dataset type */
|
|
668
|
+
export type DatasetType = 'raw' | 'processed' | 'analyzed' | 'simulated' | 'reference';
|
|
669
|
+
/** Dataset metadata (FAIR principles) */
|
|
670
|
+
export interface DatasetMetadata {
|
|
671
|
+
title: string;
|
|
672
|
+
description: string;
|
|
673
|
+
keywords: string[];
|
|
674
|
+
subjects?: string[];
|
|
675
|
+
temporalCoverage?: string;
|
|
676
|
+
spatialCoverage?: string;
|
|
677
|
+
methodology?: string;
|
|
678
|
+
instruments?: string[];
|
|
679
|
+
relatedPublications?: string[];
|
|
680
|
+
fundingSource?: string;
|
|
681
|
+
customFields?: Record<string, string>;
|
|
682
|
+
}
|
|
683
|
+
/** Access level */
|
|
684
|
+
export type AccessLevel = 'public' | 'restricted' | 'embargoed' | 'private';
|
|
685
|
+
/** Data lineage */
|
|
686
|
+
export interface DataLineage {
|
|
687
|
+
sourceDatasets?: string[];
|
|
688
|
+
processingSteps: ProcessingStep[];
|
|
689
|
+
toolsUsed?: string[];
|
|
690
|
+
}
|
|
691
|
+
/** Processing step */
|
|
692
|
+
export interface ProcessingStep {
|
|
693
|
+
order: number;
|
|
694
|
+
name: string;
|
|
695
|
+
description: string;
|
|
696
|
+
parameters?: Record<string, unknown>;
|
|
697
|
+
timestamp?: Date;
|
|
698
|
+
}
|
|
699
|
+
/** Statistical analysis config */
|
|
700
|
+
export interface StatisticalAnalysisConfig {
|
|
701
|
+
significanceLevel: number;
|
|
702
|
+
confidenceLevel: number;
|
|
703
|
+
multipleTestingCorrection?: MultipleTestingCorrection;
|
|
704
|
+
missingDataHandling?: MissingDataHandling;
|
|
705
|
+
}
|
|
706
|
+
/** Multiple testing correction */
|
|
707
|
+
export type MultipleTestingCorrection = 'none' | 'bonferroni' | 'holm' | 'fdr_bh' | 'fdr_by';
|
|
708
|
+
/** Missing data handling */
|
|
709
|
+
export type MissingDataHandling = 'listwise_deletion' | 'pairwise_deletion' | 'mean_imputation' | 'median_imputation' | 'multiple_imputation';
|
|
710
|
+
/** Descriptive statistics */
|
|
711
|
+
export interface DescriptiveStatistics {
|
|
712
|
+
n: number;
|
|
713
|
+
mean: number;
|
|
714
|
+
median: number;
|
|
715
|
+
mode?: number[];
|
|
716
|
+
standardDeviation: number;
|
|
717
|
+
variance: number;
|
|
718
|
+
standardError: number;
|
|
719
|
+
min: number;
|
|
720
|
+
max: number;
|
|
721
|
+
range: number;
|
|
722
|
+
q1: number;
|
|
723
|
+
q3: number;
|
|
724
|
+
iqr: number;
|
|
725
|
+
skewness?: number;
|
|
726
|
+
kurtosis?: number;
|
|
727
|
+
}
|
|
728
|
+
/** Statistical test result */
|
|
729
|
+
export interface StatisticalTestResult {
|
|
730
|
+
testName: string;
|
|
731
|
+
testStatistic: number;
|
|
732
|
+
degreesOfFreedom?: number | [number, number];
|
|
733
|
+
pValue: number;
|
|
734
|
+
effectSize?: number;
|
|
735
|
+
effectSizeType?: string;
|
|
736
|
+
confidenceInterval?: [number, number];
|
|
737
|
+
conclusion: string;
|
|
738
|
+
assumptions?: AssumptionCheck[];
|
|
739
|
+
}
|
|
740
|
+
/** Assumption check */
|
|
741
|
+
export interface AssumptionCheck {
|
|
742
|
+
assumption: string;
|
|
743
|
+
testUsed?: string;
|
|
744
|
+
result: 'met' | 'violated' | 'unclear';
|
|
745
|
+
details?: string;
|
|
746
|
+
}
|
|
747
|
+
/** Regression result */
|
|
748
|
+
export interface RegressionResult {
|
|
749
|
+
type: RegressionType;
|
|
750
|
+
equation: string;
|
|
751
|
+
coefficients: RegressionCoefficient[];
|
|
752
|
+
rSquared: number;
|
|
753
|
+
adjustedRSquared: number;
|
|
754
|
+
standardError: number;
|
|
755
|
+
fStatistic?: number;
|
|
756
|
+
pValue: number;
|
|
757
|
+
residuals?: number[];
|
|
758
|
+
predictedValues?: number[];
|
|
759
|
+
}
|
|
760
|
+
/** Regression type */
|
|
761
|
+
export type RegressionType = 'linear' | 'multiple_linear' | 'logistic' | 'polynomial' | 'ridge' | 'lasso';
|
|
762
|
+
/** Regression coefficient */
|
|
763
|
+
export interface RegressionCoefficient {
|
|
764
|
+
variable: string;
|
|
765
|
+
estimate: number;
|
|
766
|
+
standardError: number;
|
|
767
|
+
tStatistic: number;
|
|
768
|
+
pValue: number;
|
|
769
|
+
confidenceInterval: [number, number];
|
|
770
|
+
}
|
|
771
|
+
/** PCA result */
|
|
772
|
+
export interface PCAResult {
|
|
773
|
+
components: PrincipalComponent[];
|
|
774
|
+
loadings: number[][];
|
|
775
|
+
scores: number[][];
|
|
776
|
+
totalVariance: number;
|
|
777
|
+
explainedVarianceRatio: number[];
|
|
778
|
+
cumulativeVarianceRatio: number[];
|
|
779
|
+
}
|
|
780
|
+
/** Principal component */
|
|
781
|
+
export interface PrincipalComponent {
|
|
782
|
+
index: number;
|
|
783
|
+
eigenvalue: number;
|
|
784
|
+
explainedVariance: number;
|
|
785
|
+
cumulativeVariance: number;
|
|
786
|
+
}
|
|
787
|
+
/** Survival analysis result */
|
|
788
|
+
export interface SurvivalAnalysisResult {
|
|
789
|
+
method: SurvivalMethod;
|
|
790
|
+
survivalCurve: SurvivalPoint[];
|
|
791
|
+
medianSurvival?: number;
|
|
792
|
+
confidenceInterval?: [number, number];
|
|
793
|
+
atRiskTable: AtRiskTableEntry[];
|
|
794
|
+
comparisonTest?: StatisticalTestResult;
|
|
795
|
+
coxModel?: CoxModelResult;
|
|
796
|
+
}
|
|
797
|
+
/** Survival method */
|
|
798
|
+
export type SurvivalMethod = 'kaplan_meier' | 'nelson_aalen' | 'cox_proportional_hazards';
|
|
799
|
+
/** Survival point */
|
|
800
|
+
export interface SurvivalPoint {
|
|
801
|
+
time: number;
|
|
802
|
+
survivalProbability: number;
|
|
803
|
+
standardError?: number;
|
|
804
|
+
lowerCI?: number;
|
|
805
|
+
upperCI?: number;
|
|
806
|
+
nEvents: number;
|
|
807
|
+
nCensored: number;
|
|
808
|
+
}
|
|
809
|
+
/** At-risk table entry */
|
|
810
|
+
export interface AtRiskTableEntry {
|
|
811
|
+
time: number;
|
|
812
|
+
nAtRisk: number;
|
|
813
|
+
nEvents: number;
|
|
814
|
+
nCensored: number;
|
|
815
|
+
}
|
|
816
|
+
/** Cox model result */
|
|
817
|
+
export interface CoxModelResult {
|
|
818
|
+
coefficients: HazardRatioCoefficient[];
|
|
819
|
+
concordance: number;
|
|
820
|
+
logLikelihood: number;
|
|
821
|
+
likelihoodRatioTest: StatisticalTestResult;
|
|
822
|
+
}
|
|
823
|
+
/** Hazard ratio coefficient */
|
|
824
|
+
export interface HazardRatioCoefficient {
|
|
825
|
+
variable: string;
|
|
826
|
+
coefficient: number;
|
|
827
|
+
hazardRatio: number;
|
|
828
|
+
standardError: number;
|
|
829
|
+
zStatistic: number;
|
|
830
|
+
pValue: number;
|
|
831
|
+
confidenceInterval: [number, number];
|
|
832
|
+
}
|
|
833
|
+
/** Heatmap config */
|
|
834
|
+
export interface HeatmapClusterConfig {
|
|
835
|
+
data: number[][];
|
|
836
|
+
rowLabels: string[];
|
|
837
|
+
columnLabels: string[];
|
|
838
|
+
clustering: ClusteringConfig;
|
|
839
|
+
colorScale: ColorScale;
|
|
840
|
+
cellSize?: {
|
|
841
|
+
width: number;
|
|
842
|
+
height: number;
|
|
843
|
+
};
|
|
844
|
+
showDendrogram?: boolean;
|
|
845
|
+
annotations?: HeatmapAnnotation[];
|
|
846
|
+
}
|
|
847
|
+
/** Clustering config */
|
|
848
|
+
export interface ClusteringConfig {
|
|
849
|
+
method: ClusteringMethod;
|
|
850
|
+
metric: DistanceMetric;
|
|
851
|
+
linkage?: LinkageMethod;
|
|
852
|
+
k?: number;
|
|
853
|
+
rowCluster?: boolean;
|
|
854
|
+
columnCluster?: boolean;
|
|
855
|
+
}
|
|
856
|
+
/** Clustering method */
|
|
857
|
+
export type ClusteringMethod = 'hierarchical' | 'kmeans' | 'dbscan' | 'none';
|
|
858
|
+
/** Distance metric */
|
|
859
|
+
export type DistanceMetric = 'euclidean' | 'manhattan' | 'cosine' | 'correlation' | 'jaccard';
|
|
860
|
+
/** Linkage method */
|
|
861
|
+
export type LinkageMethod = 'single' | 'complete' | 'average' | 'ward';
|
|
862
|
+
/** Color scale */
|
|
863
|
+
export interface ColorScale {
|
|
864
|
+
type: 'sequential' | 'diverging' | 'categorical';
|
|
865
|
+
colors: string[];
|
|
866
|
+
domain?: [number, number];
|
|
867
|
+
midpoint?: number;
|
|
868
|
+
}
|
|
869
|
+
/** Heatmap annotation */
|
|
870
|
+
export interface HeatmapAnnotation {
|
|
871
|
+
type: 'row' | 'column';
|
|
872
|
+
index: number;
|
|
873
|
+
label?: string;
|
|
874
|
+
color?: string;
|
|
875
|
+
}
|
|
876
|
+
/** Sequence */
|
|
877
|
+
export interface Sequence {
|
|
878
|
+
id: string;
|
|
879
|
+
name: string;
|
|
880
|
+
type: SequenceType;
|
|
881
|
+
sequence: string;
|
|
882
|
+
length: number;
|
|
883
|
+
features?: SequenceFeature[];
|
|
884
|
+
description?: string;
|
|
885
|
+
organism?: string;
|
|
886
|
+
accession?: string;
|
|
887
|
+
}
|
|
888
|
+
/** Sequence type */
|
|
889
|
+
export type SequenceType = 'dna' | 'rna' | 'protein';
|
|
890
|
+
/** Sequence feature */
|
|
891
|
+
export interface SequenceFeature {
|
|
892
|
+
type: string;
|
|
893
|
+
start: number;
|
|
894
|
+
end: number;
|
|
895
|
+
strand?: '+' | '-';
|
|
896
|
+
name?: string;
|
|
897
|
+
color?: string;
|
|
898
|
+
qualifiers?: Record<string, string>;
|
|
899
|
+
}
|
|
900
|
+
/** Sequence alignment */
|
|
901
|
+
export interface SequenceAlignment {
|
|
902
|
+
sequences: AlignedSequence[];
|
|
903
|
+
consensusSequence?: string;
|
|
904
|
+
conservationScores?: number[];
|
|
905
|
+
method?: AlignmentMethod;
|
|
906
|
+
score?: number;
|
|
907
|
+
}
|
|
908
|
+
/** Aligned sequence */
|
|
909
|
+
export interface AlignedSequence {
|
|
910
|
+
id: string;
|
|
911
|
+
name: string;
|
|
912
|
+
alignedSequence: string;
|
|
913
|
+
}
|
|
914
|
+
/** Alignment method */
|
|
915
|
+
export type AlignmentMethod = 'clustalw' | 'muscle' | 'mafft' | 'needleman_wunsch' | 'smith_waterman';
|
|
916
|
+
/** Molecule */
|
|
917
|
+
export interface Molecule {
|
|
918
|
+
id: string;
|
|
919
|
+
name: string;
|
|
920
|
+
formula?: string;
|
|
921
|
+
molecularWeight?: number;
|
|
922
|
+
smiles?: string;
|
|
923
|
+
inchi?: string;
|
|
924
|
+
pdbId?: string;
|
|
925
|
+
atoms?: Atom[];
|
|
926
|
+
bonds?: Bond[];
|
|
927
|
+
coordinates?: Coordinate3D[];
|
|
928
|
+
}
|
|
929
|
+
/** Atom */
|
|
930
|
+
export interface Atom {
|
|
931
|
+
id: number;
|
|
932
|
+
element: string;
|
|
933
|
+
x: number;
|
|
934
|
+
y: number;
|
|
935
|
+
z: number;
|
|
936
|
+
charge?: number;
|
|
937
|
+
residue?: string;
|
|
938
|
+
chain?: string;
|
|
939
|
+
}
|
|
940
|
+
/** Bond */
|
|
941
|
+
export interface Bond {
|
|
942
|
+
atom1: number;
|
|
943
|
+
atom2: number;
|
|
944
|
+
order: 1 | 2 | 3 | 'aromatic';
|
|
945
|
+
}
|
|
946
|
+
/** 3D coordinate */
|
|
947
|
+
export interface Coordinate3D {
|
|
948
|
+
x: number;
|
|
949
|
+
y: number;
|
|
950
|
+
z: number;
|
|
951
|
+
}
|
|
952
|
+
/** Molecule viewer config */
|
|
953
|
+
export interface MoleculeViewerConfig {
|
|
954
|
+
representation: MoleculeRepresentation;
|
|
955
|
+
colorScheme: MoleculeColorScheme;
|
|
956
|
+
showHydrogens?: boolean;
|
|
957
|
+
showLabels?: boolean;
|
|
958
|
+
backgroundColor?: string;
|
|
959
|
+
spinAnimation?: boolean;
|
|
960
|
+
}
|
|
961
|
+
/** Molecule representation */
|
|
962
|
+
export type MoleculeRepresentation = 'ball_and_stick' | 'space_filling' | 'ribbon' | 'cartoon' | 'wireframe' | 'surface';
|
|
963
|
+
/** Molecule color scheme */
|
|
964
|
+
export type MoleculeColorScheme = 'element' | 'chain' | 'residue' | 'secondary_structure' | 'bfactor' | 'custom';
|
|
965
|
+
/** Scientific paper */
|
|
966
|
+
export interface ScientificPaper {
|
|
967
|
+
id: string;
|
|
968
|
+
title: string;
|
|
969
|
+
authors: PaperAuthor[];
|
|
970
|
+
affiliations: Affiliation[];
|
|
971
|
+
abstract: string;
|
|
972
|
+
keywords: string[];
|
|
973
|
+
sections: PaperSection[];
|
|
974
|
+
figures: PaperFigure[];
|
|
975
|
+
tables: PaperTable[];
|
|
976
|
+
references: BibliographyEntry[];
|
|
977
|
+
supplementaryMaterials?: SupplementaryMaterial[];
|
|
978
|
+
status: PaperStatus;
|
|
979
|
+
targetJournal?: string;
|
|
980
|
+
wordCount: number;
|
|
981
|
+
characterCount: number;
|
|
982
|
+
submissionHistory?: SubmissionRecord[];
|
|
983
|
+
}
|
|
984
|
+
/** Paper author */
|
|
985
|
+
export interface PaperAuthor {
|
|
986
|
+
id: string;
|
|
987
|
+
name: string;
|
|
988
|
+
email?: string;
|
|
989
|
+
affiliationIds: string[];
|
|
990
|
+
isCorresponding?: boolean;
|
|
991
|
+
orcid?: string;
|
|
992
|
+
contribution?: string;
|
|
993
|
+
}
|
|
994
|
+
/** Affiliation */
|
|
995
|
+
export interface Affiliation {
|
|
996
|
+
id: string;
|
|
997
|
+
institution: string;
|
|
998
|
+
department?: string;
|
|
999
|
+
address?: string;
|
|
1000
|
+
country: string;
|
|
1001
|
+
}
|
|
1002
|
+
/** Paper section */
|
|
1003
|
+
export interface PaperSection {
|
|
1004
|
+
id: string;
|
|
1005
|
+
type: PaperSectionType;
|
|
1006
|
+
title?: string;
|
|
1007
|
+
content: string;
|
|
1008
|
+
wordCount: number;
|
|
1009
|
+
subsections?: PaperSection[];
|
|
1010
|
+
}
|
|
1011
|
+
/** Paper section type */
|
|
1012
|
+
export type PaperSectionType = 'abstract' | 'introduction' | 'methods' | 'results' | 'discussion' | 'conclusion' | 'acknowledgments' | 'author_contributions' | 'data_availability' | 'conflicts_of_interest' | 'funding' | 'appendix' | 'custom';
|
|
1013
|
+
/** Paper figure */
|
|
1014
|
+
export interface PaperFigure {
|
|
1015
|
+
id: string;
|
|
1016
|
+
number: string;
|
|
1017
|
+
caption: string;
|
|
1018
|
+
panels: FigurePanel[];
|
|
1019
|
+
width?: number;
|
|
1020
|
+
height?: number;
|
|
1021
|
+
dpi?: number;
|
|
1022
|
+
format: ImageFormat;
|
|
1023
|
+
}
|
|
1024
|
+
/** Figure panel */
|
|
1025
|
+
export interface FigurePanel {
|
|
1026
|
+
label: string;
|
|
1027
|
+
imageUrl: string;
|
|
1028
|
+
description?: string;
|
|
1029
|
+
}
|
|
1030
|
+
/** Image format */
|
|
1031
|
+
export type ImageFormat = 'tiff' | 'eps' | 'pdf' | 'png' | 'jpg' | 'svg';
|
|
1032
|
+
/** Paper table */
|
|
1033
|
+
export interface PaperTable {
|
|
1034
|
+
id: string;
|
|
1035
|
+
number: string;
|
|
1036
|
+
title: string;
|
|
1037
|
+
caption?: string;
|
|
1038
|
+
headers: string[];
|
|
1039
|
+
rows: string[][];
|
|
1040
|
+
footnotes?: string[];
|
|
1041
|
+
}
|
|
1042
|
+
/** Supplementary material */
|
|
1043
|
+
export interface SupplementaryMaterial {
|
|
1044
|
+
id: string;
|
|
1045
|
+
type: SupplementaryType;
|
|
1046
|
+
title: string;
|
|
1047
|
+
description?: string;
|
|
1048
|
+
fileUrl?: string;
|
|
1049
|
+
content?: string;
|
|
1050
|
+
}
|
|
1051
|
+
/** Supplementary type */
|
|
1052
|
+
export type SupplementaryType = 'figure' | 'table' | 'dataset' | 'video' | 'code' | 'methods' | 'other';
|
|
1053
|
+
/** Paper status */
|
|
1054
|
+
export type PaperStatus = 'draft' | 'internal_review' | 'submitted' | 'under_review' | 'revision_requested' | 'resubmitted' | 'accepted' | 'published' | 'rejected';
|
|
1055
|
+
/** Submission record */
|
|
1056
|
+
export interface SubmissionRecord {
|
|
1057
|
+
journal: string;
|
|
1058
|
+
submittedDate: Date;
|
|
1059
|
+
decision?: SubmissionDecision;
|
|
1060
|
+
decisionDate?: Date;
|
|
1061
|
+
reviewerComments?: ReviewerComment[];
|
|
1062
|
+
revisionDeadline?: Date;
|
|
1063
|
+
}
|
|
1064
|
+
/** Submission decision */
|
|
1065
|
+
export type SubmissionDecision = 'accept' | 'minor_revision' | 'major_revision' | 'reject';
|
|
1066
|
+
/** Reviewer comment */
|
|
1067
|
+
export interface ReviewerComment {
|
|
1068
|
+
reviewerId: string;
|
|
1069
|
+
commentNumber: number;
|
|
1070
|
+
section?: string;
|
|
1071
|
+
comment: string;
|
|
1072
|
+
response?: string;
|
|
1073
|
+
status?: 'open' | 'addressed' | 'in_progress';
|
|
1074
|
+
}
|
|
1075
|
+
/** Collaboration hub config */
|
|
1076
|
+
export interface CollaborationHubConfig {
|
|
1077
|
+
projectId: string;
|
|
1078
|
+
members: CollaborationMember[];
|
|
1079
|
+
sharedDocuments: SharedDocument[];
|
|
1080
|
+
discussionThreads: DiscussionThread[];
|
|
1081
|
+
tasks: CollaborationTask[];
|
|
1082
|
+
meetings: MeetingNote[];
|
|
1083
|
+
}
|
|
1084
|
+
/** Collaboration member */
|
|
1085
|
+
export interface CollaborationMember {
|
|
1086
|
+
userId: string;
|
|
1087
|
+
name: string;
|
|
1088
|
+
email: string;
|
|
1089
|
+
role: CollaborationRole;
|
|
1090
|
+
institution?: string;
|
|
1091
|
+
permissions: Permission[];
|
|
1092
|
+
}
|
|
1093
|
+
/** Collaboration role */
|
|
1094
|
+
export type CollaborationRole = 'principal_investigator' | 'co_investigator' | 'postdoc' | 'graduate_student' | 'research_assistant' | 'technician' | 'external_collaborator';
|
|
1095
|
+
/** Permission */
|
|
1096
|
+
export type Permission = 'read' | 'write' | 'comment' | 'approve' | 'admin';
|
|
1097
|
+
/** Shared document */
|
|
1098
|
+
export interface SharedDocument {
|
|
1099
|
+
id: string;
|
|
1100
|
+
title: string;
|
|
1101
|
+
type: string;
|
|
1102
|
+
url: string;
|
|
1103
|
+
lastModified: Date;
|
|
1104
|
+
lastModifiedBy: string;
|
|
1105
|
+
version: number;
|
|
1106
|
+
permissions: Record<string, Permission[]>;
|
|
1107
|
+
}
|
|
1108
|
+
/** Discussion thread */
|
|
1109
|
+
export interface DiscussionThread {
|
|
1110
|
+
id: string;
|
|
1111
|
+
title: string;
|
|
1112
|
+
createdBy: string;
|
|
1113
|
+
createdAt: Date;
|
|
1114
|
+
status: 'open' | 'resolved' | 'closed';
|
|
1115
|
+
documentId?: string;
|
|
1116
|
+
comments: DiscussionComment[];
|
|
1117
|
+
}
|
|
1118
|
+
/** Discussion comment */
|
|
1119
|
+
export interface DiscussionComment {
|
|
1120
|
+
id: string;
|
|
1121
|
+
author: string;
|
|
1122
|
+
content: string;
|
|
1123
|
+
timestamp: Date;
|
|
1124
|
+
reactions?: Record<string, string[]>;
|
|
1125
|
+
replies?: DiscussionComment[];
|
|
1126
|
+
}
|
|
1127
|
+
/** Collaboration task */
|
|
1128
|
+
export interface CollaborationTask {
|
|
1129
|
+
id: string;
|
|
1130
|
+
title: string;
|
|
1131
|
+
description?: string;
|
|
1132
|
+
assignee?: string;
|
|
1133
|
+
dueDate?: Date;
|
|
1134
|
+
status: 'todo' | 'in_progress' | 'review' | 'done';
|
|
1135
|
+
priority: 'low' | 'medium' | 'high';
|
|
1136
|
+
linkedDocuments?: string[];
|
|
1137
|
+
}
|
|
1138
|
+
/** Meeting note */
|
|
1139
|
+
export interface MeetingNote {
|
|
1140
|
+
id: string;
|
|
1141
|
+
title: string;
|
|
1142
|
+
date: Date;
|
|
1143
|
+
attendees: string[];
|
|
1144
|
+
agenda?: string[];
|
|
1145
|
+
notes: string;
|
|
1146
|
+
actionItems: CollaborationTask[];
|
|
1147
|
+
recordingUrl?: string;
|
|
1148
|
+
}
|
|
1149
|
+
//# sourceMappingURL=scientific-research.d.ts.map
|