Blue Brain BioExplorer
Types.h
Go to the documentation of this file.
1 /*
2  *
3  * The Blue Brain BioExplorer is a tool for scientists to extract and analyse
4  * scientific data from visualization
5  *
6  * This file is part of Blue Brain BioExplorer <https://github.com/BlueBrain/BioExplorer>
7  *
8  * Copyright 2020-2024 Blue BrainProject / EPFL
9  *
10  * This program is free software: you can redistribute it and/or modify it under
11  * the terms of the GNU General Public License as published by the Free Software
12  * Foundation, either version 3 of the License, or (at your option) any later
13  * version.
14  *
15  * This program is distributed in the hope that it will be useful, but WITHOUT
16  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License along with
21  * this program. If not, see <https://www.gnu.org/licenses/>.
22  */
23 
24 #pragma once
25 
26 #include <Defines.h>
27 
30 
31 #include <map>
32 #include <set>
33 #include <string>
34 #include <vector>
35 
36 namespace bioexplorer
37 {
38 const std::string CONTENTS_DELIMITER = "||||";
39 
40 // Metadata
41 const std::string METADATA_ASSEMBLY = "Assembly";
42 const std::string METADATA_PDB_ID = "PDBId";
43 const std::string METADATA_HEADER = "Header";
44 const std::string METADATA_ATOMS = "Atoms";
45 const std::string METADATA_BONDS = "Bonds";
46 const std::string METADATA_SIZE = "Size";
47 const std::string METADATA_BRICK_ID = "BrickId";
48 
49 // Command line arguments
50 // - Database
51 const std::string ARG_DB_HOST = "--db-host";
52 const std::string ARG_DB_PORT = "--db-port";
53 const std::string ARG_DB_NAME = "--db-name";
54 const std::string ARG_DB_USER = "--db-user";
55 const std::string ARG_DB_PASSWORD = "--db-password";
56 const std::string ARG_DB_NB_CONNECTIONS = "--db-nb-connections";
57 const std::string ARG_DB_BATCH_SIZE = "--db-batch-size";
58 const size_t DEFAULT_DB_NB_CONNECTIONS = 8;
59 const size_t DEFAULT_BATCH_SIZE = 1000; // Max number of records returned by a batch query
60 
61 // - Out-of-core
62 const std::string ARG_OOC_ENABLED = "--ooc-enabled";
63 const std::string ARG_OOC_VISIBLE_BRICKS = "--ooc-visible-bricks";
64 const std::string ARG_OOC_UPDATE_FREQUENCY = "--ooc-update-frequency";
65 const std::string ARG_OOC_UNLOAD_BRICKS = "--ooc-unload-bricks";
66 const std::string ARG_OOC_SHOW_GRID = "--ooc-show-grid";
67 const std::string ARG_OOC_NB_BRICKS_PER_CYCLE = "--ooc-nb-bricks-per-cycle";
68 
69 // Environment variables
70 const std::string ENV_ROCKETS_DISABLE_SCENE_BROADCASTING = "ROCKETS_DISABLE_SCENE_BROADCASTING";
71 
72 // Bezier curves parameters
73 const size_t DEFAULT_BEZIER_STEP = 4;
74 
75 // Grid geometry alignment
76 const double NO_GRID_ALIGNMENT = 0.0;
77 
78 namespace common
79 {
80 using MaterialSet = std::set<size_t>;
81 using Neighbours = std::set<size_t>;
82 
83 class Node;
84 using NodePtr = std::shared_ptr<Node>;
85 using NodeMap = std::map<std::string, NodePtr>;
86 
87 class Assembly;
88 using AssemblyPtr = std::shared_ptr<Assembly>;
89 using AssemblyMap = std::map<std::string, AssemblyPtr>;
90 
92 {
93  inside = 0,
94  outside = 1
95 };
96 using AssemblyConstraint = std::pair<AssemblyConstraintType, AssemblyPtr>;
97 using AssemblyConstraints = std::vector<AssemblyConstraint>;
98 
99 typedef struct
100 {
102  double radius;
103  uint64_t sectionId{0};
104  uint64_t graphId{0};
105  uint64_t type{0};
106  uint64_t pairId{0};
107  uint64_t entryNodeId{0};
108  uint64_t regionId{0};
109 } GeometryNode;
110 using GeometryNodes = std::map<uint64_t, GeometryNode>;
111 using GeometryEdges = std::map<uint64_t, uint64_t>;
112 using Bifurcations = std::map<uint64_t, uint64_ts>;
113 
114 // Thread safe container
115 class ThreadSafeContainer;
116 using ThreadSafeContainers = std::vector<ThreadSafeContainer>;
117 
118 // SDF structures
119 class SDFGeometries;
120 using SDFGeometriesPtr = std::shared_ptr<SDFGeometries>;
121 
123 {
124  std::vector<core::SDFGeometry> geometries;
125  std::vector<std::set<size_t>> neighbours;
129  std::unordered_map<size_t, int> geometrySection;
130  std::unordered_map<int, size_ts> sectionGeometries;
131 };
132 
133 enum class ReportType
134 {
135  undefined = 0,
136  spike = 1,
137  soma = 2,
138  compartment = 3,
139  synapse_efficacy = 4
140 };
141 
142 typedef struct
143 {
145  std::string description;
146  double startTime;
147  double endTime;
148  double timeStep;
149  std::string timeUnits;
150  std::string dataUnits;
151  bool debugMode{false};
154 
159 enum class XYZFileFormat
160 {
162  unspecified = 0,
165  xyz_binary = 1,
168  xyzr_binary = 2,
171  xyzrv_binary = 3,
174  xyz_ascii = 4,
177  xyzr_ascii = 5,
180  xyzrv_ascii = 6
181 };
182 } // namespace common
183 
184 namespace molecularsystems
185 {
186 using ModelDescriptors = std::vector<core::ModelDescriptorPtr>;
187 
188 class Membrane;
189 using MembranePtr = std::shared_ptr<Membrane>;
190 
191 class Protein;
192 using ProteinPtr = std::shared_ptr<Protein>;
193 using ProteinMap = std::map<std::string, ProteinPtr>;
194 using Proteins = std::vector<ProteinPtr>;
195 
196 class Glycans;
197 using GlycansPtr = std::shared_ptr<Glycans>;
198 using GlycansMap = std::map<std::string, GlycansPtr>;
199 
200 class RNASequence;
201 using RNASequencePtr = std::shared_ptr<RNASequence>;
202 using RNASequenceMap = std::map<std::string, RNASequencePtr>;
203 
204 class EnzymeReaction;
205 using EnzymeReactionPtr = std::shared_ptr<EnzymeReaction>;
206 using EnzymeReactionMap = std::map<std::string, EnzymeReactionPtr>;
207 
213 {
215  atoms = 0,
217  atoms_and_sticks = 1,
219  contour = 2,
221  surface = 3,
223  union_of_balls = 4,
225  debug = 5,
227  mesh = 6
228 };
229 
235 typedef struct
236 {
238  std::string name;
240  std::string altLoc;
242  std::string resName;
244  std::string chainId;
246  size_t reqSeq;
248  std::string iCode;
252  double occupancy;
254  double tempFactor;
256  std::string element;
258  std::string charge;
260  double radius;
261 } Atom;
262 using AtomMap = std::multimap<size_t, Atom, std::less<size_t>>;
263 
268 typedef struct
269 {
271  size_t numRes;
275  size_t offset;
277 using ResidueSequenceMap = std::map<std::string, ResidueSequence>;
278 
283 using BondsMap = std::map<size_t, size_ts>;
284 
289 typedef struct
290 {
292  std::string name;
294  std::string shortName;
295 } AminoAcid;
296 using AminoAcidMap = std::map<std::string, AminoAcid>;
297 
302 using Residues = std::set<std::string>;
303 
308 using AtomicRadii = std::map<std::string, double>;
309 
310 } // namespace molecularsystems
311 
312 namespace atlas
313 {
314 class Atlas;
315 using AtlasPtr = std::shared_ptr<Atlas>;
316 } // namespace atlas
317 
318 namespace vasculature
319 {
320 class Vasculature;
321 using VasculaturePtr = std::shared_ptr<Vasculature>;
322 } // namespace vasculature
323 
324 namespace morphology
325 {
326 class Morphologies;
327 using MorphologiesPtr = std::shared_ptr<Morphologies>;
328 
329 class Astrocytes;
330 using AstrocytesPtr = std::shared_ptr<Astrocytes>;
331 class Neurons;
332 using NeuronsPtr = std::shared_ptr<Neurons>;
333 class Synapses;
334 using SynapsesPtr = std::shared_ptr<Synapses>;
335 
337 {
338  none = 0,
339  afferent = 1,
340  efferent = 2,
341  debug = 4,
342  all = 8
343 };
344 
345 typedef struct
346 {
355 } Synapse;
356 using SynapsesMap = std::map<uint64_t, Synapse>;
357 using SegmentSynapseMap = std::map<uint64_t, std::vector<Synapse>>;
358 using SectionSynapseMap = std::map<uint64_t, SegmentSynapseMap>;
359 
360 typedef struct
361 {
363  double radius;
365 } AstrocyteSoma;
366 using AstrocyteSomaMap = std::map<uint64_t, AstrocyteSoma>;
367 
368 typedef struct
369 {
372  uint64_t eType{0};
373  uint64_t mType{0};
374  uint64_t layer{0};
375  uint64_t morphologyId{0};
376 } NeuronSoma;
377 using NeuronSomaMap = std::map<uint64_t, NeuronSoma>;
378 
379 typedef struct
380 {
382  size_t type;
383  int64_t parentId;
384  double length;
385 } Section;
386 using SectionMap = std::map<uint64_t, Section>;
387 
388 typedef struct
389 {
392  double length;
393  double radius;
395 } EndFoot;
396 using EndFootMap = std::map<uint64_t, EndFoot>;
397 
398 typedef struct
399 {
402  uint64_t type{0};
403  int64_t eType{0};
404  uint64_t region{0};
405 } Cell;
406 using CellMap = std::map<uint64_t, Cell>;
407 
408 const double mitochondrionSegmentSize = 0.25;
409 const double mitochondrionRadius = 0.1;
410 
411 const double spineRadiusRatio = 0.5;
412 
413 const double myelinSteathLength = 10.0;
414 const double myelinSteathRadiusRatio = 3.0;
415 
416 const uint64_t nbMinSegmentsForVaricosity = 10;
417 
419 {
421  none = 0,
423  id = 1
424 };
425 
427 {
429  none = 0,
431  section_type = 1,
435  distance_to_soma = 3
436 };
437 
439 {
440  graph = 0,
441  section = 1,
442  segment = 2,
443  orientation = 3,
444  bezier = 4,
445  contour = 5,
446  surface = 6
447 };
448 
450 {
451  none = 0,
452  soma = 1,
453  axon = 2,
454  dendrite = 4,
455  internals = 8,
456  externals = 16,
457  spine = 32,
458  end_foot = 64,
459  all = 255,
460 };
461 
463 {
464  mesh = 0,
465  convex_hull = 1,
466  surface = 2
467 };
468 using SpikesMap = std::map<uint64_t, float>;
469 } // namespace morphology
470 
471 namespace connectomics
472 {
473 class WhiteMatter;
474 using WhiteMatterPtr = std::shared_ptr<WhiteMatter>;
475 using WhiteMatterStreamlines = std::vector<core::Vector3fs>;
476 
477 class SynapseEfficacy;
478 using SynapseEfficacyPtr = std::shared_ptr<SynapseEfficacy>;
479 
480 class Synaptome;
481 using SynaptomePtr = std::shared_ptr<Synaptome>;
482 } // namespace connectomics
483 
484 namespace io
485 {
486 // Out of core brick manager
487 class OOCManager;
488 using OOCManagerPtr = std::shared_ptr<OOCManager>;
489 
490 namespace db
491 {
492 class DBConnector;
493 using DBConnectorPtr = std::shared_ptr<DBConnector>;
494 
495 namespace fields
496 {
497 class FieldsHandler;
498 typedef std::shared_ptr<FieldsHandler> FieldsHandlerPtr;
499 } // namespace fields
500 
501 } // namespace db
502 } // namespace io
503 namespace details
504 {
509 typedef struct
510 {
512  bool status{true};
514  std::string contents;
515 } Response;
516 
522 typedef struct
523 {
525  size_t modelId{0};
527  size_t instanceId{0};
531  double distance{0.0};
533 
538 typedef struct
539 {
540  std::string meshFolder;
541  uint32_t loggingLevel;
543  bool v1Compatibility{false};
544  bool cacheEnabled{false};
546 
547 typedef struct
548 {
549  uint32_t seed{0};
550  uint32_t positionSeed{0};
551  double positionStrength{0.f};
552  uint32_t rotationSeed{0};
553  double rotationStrength{0.f};
554  double morphingStep{0.f};
556 
561 enum class AssemblyShape
562 {
564  point = 0,
566  empty_sphere = 1,
568  plane = 2,
570  sinusoid = 3,
572  cube = 4,
574  fan = 5,
576  bezier = 6,
578  mesh = 7,
580  helix = 8,
582  filled_sphere = 9,
585 };
586 
591 enum class RNAShapeType
592 {
594  trefoilKnot = 0,
596  torus = 1,
598  star = 2,
600  spring = 3,
602  heart = 4,
604  thing = 5,
606  moebius = 6
607 };
608 
613 typedef struct
614 {
615  bool hit;
616  std::string assemblyName;
617  std::string proteinName;
618  size_t modelId;
619  size_t instanceId;
622 
623 typedef struct
624 {
628 
633 typedef struct
634 {
636  std::string name;
642  std::string shapeMeshContents;
650 
655 typedef struct
656 {
658  std::string assemblyName;
661  std::string name;
665 
670 typedef struct
671 {
673  std::string assemblyName;
675  std::string name;
678  std::string lipidPDBIds;
681  std::string lipidContents;
685  double lipidDensity;
687  double atomRadiusMultiplier{1.0};
689  bool loadBonds{false};
691  bool loadNonPolymerChemicals{false};
698  bool recenter{false};
702 
703 // Protein
704 typedef struct
705 {
707  std::string assemblyName;
709  std::string name;
711  std::string pdbId;
713  std::string contents;
715  double atomRadiusMultiplier{1.f};
717  bool loadBonds{false};
719  bool loadNonPolymerChemicals{false};
721  bool loadHydrogen{false};
728  bool recenter{false};
730  size_t occurrences{1};
746  std::string constraints;
748 
753 typedef struct
754 {
756  std::string assemblyName;
758  std::string name;
760  std::string pdbId;
762  std::string contents;
764  std::string proteinName;
766  double atomRadiusMultiplier{1.0};
768  bool loadBonds{false};
773  bool recenter{true};
782 } SugarDetails;
783 
788 typedef struct
789 {
791  std::string assemblyName;
793  std::string name;
795  std::string pdbId;
797  std::string contents;
799  std::string proteinContents;
809  double atomRadiusMultiplier{1.0};
820 
826 typedef struct
827 {
829  std::string assemblyName;
831  std::string name;
833  std::string sequence;
835 
841 typedef struct
842 {
844  std::string assemblyName;
846  std::string name;
851 
852 typedef struct
853 {
854  std::string assemblyName;
855  std::string name;
857 
862 typedef struct
863 {
865  std::string assemblyName;
867  std::string name;
869  size_t index;
871  std::string aminoAcidShortName;
875 
880 typedef struct
881 {
883  std::string assemblyName;
885  std::string name;
887  std::string enzymeName;
889  std::string substrateNames;
891  std::string productNames;
893 
898 typedef struct
899 {
901  std::string assemblyName;
903  std::string name;
905  size_t instanceId{0};
907  double progress{0.0};
909 
914 typedef struct
915 {
917  double minValue{0.0};
919  double maxValue{100.0};
921  double steps{10.0};
923  double radius{1.0};
925  double planeOpacity{1.0};
927  bool showAxis{true};
929  bool showPlanes{true};
931  bool showFullGrid{false};
933  bool useColors{true};
937 
942 typedef struct
943 {
945  std::string name;
951  doubles color{1.0, 1.0, 1.0};
953  double opacity{1.0};
955 
960 typedef struct
961 {
963  std::string name;
973  doubles color{1.0, 1.0, 1.0};
975  double opacity;
977 
981 typedef struct
982 {
984  std::string name;
990  double radius{1.0};
992  doubles color{1.0, 1.0, 1.0};
994 
998 typedef struct
999 {
1001  std::string name;
1008 } AddBoxDetails;
1009 
1014 typedef struct
1015 {
1017  std::string name;
1025 
1031 {
1033  none = 0,
1035  atoms = 1,
1037  chains = 2,
1039  residues = 3,
1041  amino_acid_sequence = 4,
1043  glycosylation_site = 5,
1045  region = 6
1046 };
1047 
1052 typedef struct
1053 {
1055  std::string assemblyName;
1057  std::string name;
1065 
1066 typedef struct
1067 {
1069  std::string assemblyName;
1071  std::string name;
1079 
1084 typedef struct
1085 {
1088 } IdsDetails;
1089 
1094 typedef struct
1095 {
1097  std::string name;
1098 } NameDetails;
1099 
1104 typedef struct
1105 {
1107  size_t modelId;
1110 } ModelIdDetails;
1111 
1116 typedef struct
1117 {
1127 
1132 typedef struct
1133 {
1135  size_t modelId;
1145 
1150 typedef struct
1151 {
1153  size_t modelId;
1163 
1168 typedef struct
1169 {
1179 
1184 typedef struct
1185 {
1217 
1219 enum class FieldDataType
1220 {
1222  point = 0,
1224  vector = 1
1225 };
1226 
1232 typedef struct
1233 {
1235  double voxelSize;
1237  double density;
1243 
1244 // IO
1245 typedef struct
1246 {
1247  size_t modelId;
1248  std::string filename;
1250 
1255 typedef struct
1256 {
1257  std::string filename;
1262 
1267 typedef struct
1268 {
1269  int32_t brickId;
1273 
1278 typedef struct
1279 {
1280  double radius;
1282 
1284 {
1285  start = 0,
1286  commit = 1
1287 };
1288 
1293 typedef struct
1294 {
1297 
1298 typedef struct
1299 {
1301  std::string description;
1305  uint32_t nbBricks;
1309 
1314 typedef struct
1315 {
1317  uint32_t nbModels{0};
1319  uint32_t nbMaterials{0};
1321  uint32_t nbSpheres{0};
1323  uint32_t nbCylinders{0};
1325  uint32_t nbCones{0};
1327  uint32_t nbVertices{0};
1329  uint32_t nbIndices{0};
1331  uint32_t nbNormals{0};
1333  uint32_t nbColors{0};
1335 
1340 typedef struct
1341 {
1343  std::string assemblyName;
1345  std::string populationName;
1347  bool loadCells{true};
1349  double cellRadius{1.f};
1351  bool loadMeshes{true};
1353  std::string cellSqlFilter;
1355  std::string regionSqlFilter;
1357  doubles scale{1.0, 1.0, 1.0};
1361  doubles meshScale{1.0, 1.0, 1.0};
1362 } AtlasDetails;
1363 
1364 // -------------------------------------------------------------------------------------------------
1365 // Vasculature
1366 // -------------------------------------------------------------------------------------------------
1368 {
1369  none = 0,
1370  section = 1,
1371  bifurcation = 2,
1372  all = 255,
1373 };
1374 
1380 {
1382  none = 0,
1384  node = 1,
1386  section = 2,
1388  subgraph = 3,
1390  pair = 4,
1392  entry_node = 5,
1394  radius = 6,
1396  section_points = 7,
1398  section_orientation = 8,
1400  region = 9
1401 };
1402 
1404 {
1405  graph = 0,
1406  section = 1,
1407  segment = 2,
1408  optimized_segment = 3,
1409  bezier = 4
1410 };
1411 
1412 typedef struct
1413 {
1415  std::string assemblyName;
1417  std::string populationName;
1421  int64_t realismLevel{0};
1427  double radiusMultiplier{1.0};
1429  std::string sqlFilter;
1431  doubles scale{1.0, 1.0, 1.0};
1437  double alignToGrid{0.0};
1439 
1440 typedef struct
1441 {
1443  std::string assemblyName;
1445  std::string populationName;
1451 
1452 typedef struct
1453 {
1455  std::string assemblyName;
1457  std::string populationName;
1459  uint64_t simulationReportId{0};
1461  uint64_t frame{0};
1463  double amplitude{1.0};
1465 
1466 typedef struct
1467 {
1469  std::string assemblyName;
1471  std::string populationName;
1476  bool loadSomas{true};
1478  bool loadDendrites{true};
1480  bool generateInternals{false};
1482  bool loadMicroDomains{false};
1484  int64_t realismLevel{0};
1494  double radiusMultiplier{1.0};
1496  std::string sqlFilter;
1498  doubles scale{1.0, 1.0, 1.0};
1505  double maxDistanceToSoma{0.0};
1507  double alignToGrid{0.0};
1509 
1511 {
1512  undefined = 0,
1513  soma = 1,
1514  axon = 2,
1515  basal_dendrite = 3,
1516  apical_dendrite = 4
1517 };
1518 
1519 typedef struct
1520 {
1521  int64_t reportId{-1};
1522  core::Vector2d valueRange{-100, 100};
1523  core::Vector2d scalingRange{1.0, 1.0};
1524  uint64_t initialSimulationFrame{0};
1525  bool loadNonSimulatedNodes{false};
1527 
1528 typedef struct
1529 {
1531  std::string assemblyName;
1533  std::string populationName;
1535  bool loadSomas{true};
1537  bool loadAxon{true};
1539  bool loadBasalDendrites{true};
1541  bool loadApicalDendrites{true};
1545  bool generateInternals{false};
1547  bool generateExternals{false};
1550  bool showMembrane{true};
1552  bool generateVaricosities{false};
1554  int64_t realismLevel{0};
1562  double radiusMultiplier{1.0};
1566  std::string sqlNodeFilter;
1568  std::string sqlSectionFilter;
1570  doubles scale{1.0, 1.0, 1.0};
1577  double maxDistanceToSoma{0.0};
1579  double alignToGrid{0.0};
1580 } NeuronsDetails;
1581 
1582 typedef struct
1583 {
1585  std::string assemblyName;
1587  uint64_t neuronId{0};
1589  uint64_t sectionId{0};
1591 
1592 typedef struct
1593 {
1595  std::string assemblyName;
1597  uint64_t neuronId{0};
1598 } NeuronIdDetails;
1599 
1600 typedef struct
1601 {
1602  bool status{true};
1605 
1606 typedef struct
1607 {
1610 } LookAtDetails;
1611 
1612 typedef struct
1613 {
1616 
1617 typedef struct
1618 {
1620  std::string assemblyName;
1622  std::string populationName;
1624  double radius{1.0};
1626  std::string sqlFilter;
1628  doubles scale{1.0, 1.0, 1.0};
1630 
1631 typedef struct
1632 {
1634  std::string assemblyName;
1636  std::string populationName;
1638  double radius{1.0};
1640  double force{1.0};
1642  std::string sqlNodeFilter;
1644  std::string sqlEdgeFilter;
1646 
1648 {
1649  sphere = 0,
1650  spine = 1
1651 };
1652 
1653 typedef struct
1654 {
1656  std::string assemblyName;
1658  std::string populationName;
1660  double radiusMultiplier{1.0};
1664  int64_t realismLevel{0};
1666  std::string sqlFilter;
1669 } SynapsesDetails;
1670 
1671 typedef struct
1672 {
1674  std::string assemblyName;
1676  std::string populationName;
1678  double radius{1.0};
1680  std::string sqlFilter;
1682  int64_t simulationReportId{-1};
1684  double alignToGrid{0.0};
1686 
1687 typedef struct
1688 {
1689  uint64_t modelId;
1693  float decaySpeed;
1695 
1696 typedef struct
1697 {
1698  uint32_t seed{0};
1699  uint32_t offset{0};
1700  double amplitude{1.0};
1701  double frequency{1.0};
1703 
1704 typedef struct
1705 {
1706  std::string name;
1708  double outerRadius;
1709  double innerRadius;
1711 } SDFTorusDetails;
1712 
1713 typedef struct
1714 {
1715  std::string name;
1718  double radius;
1721 
1722 typedef struct
1723 {
1724  std::string name;
1729 } // namespace details
1730 } // namespace bioexplorer
The Assembly class is a container for biological entities (proteins, membranes, sugars,...
Definition: Assembly.h:37
The Node class.
Definition: Node.h:36
The SDFGeometries abstract class is used as a parent to any assembly that potentially requires the si...
Definition: SDFGeometries.h:46
The ThreadSafeContainer class is used to load large datasets in parallel. Every individual element is...
The OOCManager classes manager the out-of-core engine of the BioExplorer. The scene is devided into b...
Definition: OOCManager.h:66
The DBConnector class allows the BioExplorer to communicate with a PostgreSQL database....
Definition: DBConnector.h:47
An Enzyme reaction is a object that combines an existing enzyme, a list of substrates and a list of p...
A Membrane object implements a 3D structure of a given shape, but with a surface composed of instance...
Definition: Membrane.h:39
std::shared_ptr< Atlas > AtlasPtr
Definition: Types.h:315
std::set< size_t > Neighbours
Definition: Types.h:81
std::set< size_t > MaterialSet
Definition: Types.h:80
std::shared_ptr< Assembly > AssemblyPtr
Definition: Types.h:88
std::map< uint64_t, GeometryNode > GeometryNodes
Definition: Types.h:110
std::map< std::string, AssemblyPtr > AssemblyMap
Definition: Types.h:89
std::vector< ThreadSafeContainer > ThreadSafeContainers
Definition: Types.h:116
std::shared_ptr< SDFGeometries > SDFGeometriesPtr
Definition: Types.h:120
std::map< uint64_t, uint64_t > GeometryEdges
Definition: Types.h:111
std::map< uint64_t, uint64_ts > Bifurcations
Definition: Types.h:112
std::map< std::string, NodePtr > NodeMap
Definition: Node.h:74
XYZFileFormat
File format for export of atom coordinates, radius and charge.
Definition: Types.h:160
std::shared_ptr< Node > NodePtr
Definition: Node.h:73
std::pair< AssemblyConstraintType, AssemblyPtr > AssemblyConstraint
Definition: Types.h:96
std::vector< AssemblyConstraint > AssemblyConstraints
Definition: Types.h:97
std::shared_ptr< Synaptome > SynaptomePtr
Definition: Types.h:481
std::shared_ptr< WhiteMatter > WhiteMatterPtr
Definition: Types.h:474
std::vector< core::Vector3fs > WhiteMatterStreamlines
Definition: Types.h:475
std::shared_ptr< SynapseEfficacy > SynapseEfficacyPtr
Definition: Types.h:478
RNAShapeType
Shapes that can be used to enroll RNA into the virus capsid.
Definition: Types.h:592
ProteinColorScheme
Color schemes that can be applied to proteins.
Definition: Types.h:1031
AssemblyShape
Assembly shapes.
Definition: Types.h:562
VasculatureColorScheme
Color schemes that can be applied to vasculatures.
Definition: Types.h:1380
std::shared_ptr< FieldsHandler > FieldsHandlerPtr
Definition: Types.h:497
std::shared_ptr< DBConnector > DBConnectorPtr
Definition: Types.h:493
std::shared_ptr< OOCManager > OOCManagerPtr
Definition: Types.h:488
ProteinRepresentation
Protein representation (atoms, atoms and sticks, etc)
Definition: Types.h:213
std::multimap< size_t, Atom, std::less< size_t > > AtomMap
Definition: Types.h:262
std::set< std::string > Residues
Set of residue names.
Definition: Types.h:302
std::map< std::string, RNASequencePtr > RNASequenceMap
Definition: Types.h:202
std::map< std::string, AminoAcid > AminoAcidMap
Definition: Types.h:296
std::map< std::string, ResidueSequence > ResidueSequenceMap
Definition: Types.h:277
std::shared_ptr< Membrane > MembranePtr
Definition: Types.h:189
std::map< std::string, ProteinPtr > ProteinMap
Definition: Types.h:193
std::vector< ProteinPtr > Proteins
Definition: Types.h:194
std::map< size_t, size_ts > BondsMap
Bonds map.
Definition: Types.h:283
std::map< std::string, GlycansPtr > GlycansMap
Definition: Types.h:198
std::shared_ptr< RNASequence > RNASequencePtr
Definition: Types.h:201
std::map< std::string, double > AtomicRadii
Atom radii in microns.
Definition: Types.h:308
std::shared_ptr< Protein > ProteinPtr
Definition: Types.h:192
std::shared_ptr< Glycans > GlycansPtr
Definition: Types.h:197
std::map< std::string, EnzymeReactionPtr > EnzymeReactionMap
Definition: Types.h:206
std::shared_ptr< EnzymeReaction > EnzymeReactionPtr
Definition: Types.h:205
const double myelinSteathRadiusRatio
Definition: Types.h:414
const double mitochondrionSegmentSize
Definition: Types.h:408
std::map< uint64_t, std::vector< Synapse > > SegmentSynapseMap
Definition: Types.h:357
std::map< uint64_t, float > SpikesMap
Definition: Types.h:468
std::map< uint64_t, Cell > CellMap
Definition: Types.h:406
std::shared_ptr< Synapses > SynapsesPtr
Definition: Types.h:334
std::map< uint64_t, EndFoot > EndFootMap
Definition: Types.h:396
std::shared_ptr< Astrocytes > AstrocytesPtr
Definition: Types.h:330
std::shared_ptr< Neurons > NeuronsPtr
Definition: Types.h:332
const double spineRadiusRatio
Definition: Types.h:411
std::map< uint64_t, AstrocyteSoma > AstrocyteSomaMap
Definition: Types.h:366
std::map< uint64_t, NeuronSoma > NeuronSomaMap
Definition: Types.h:377
std::shared_ptr< Morphologies > MorphologiesPtr
Definition: Types.h:327
const double myelinSteathLength
Definition: Types.h:413
std::map< uint64_t, Synapse > SynapsesMap
Definition: Types.h:356
const uint64_t nbMinSegmentsForVaricosity
Definition: Types.h:416
std::map< uint64_t, SegmentSynapseMap > SectionSynapseMap
Definition: Types.h:358
std::map< uint64_t, Section > SectionMap
Definition: Types.h:386
const double mitochondrionRadius
Definition: Types.h:409
std::shared_ptr< Vasculature > VasculaturePtr
Definition: Types.h:321
const std::string METADATA_ATOMS
Definition: Types.h:44
const std::string ARG_DB_HOST
Definition: Types.h:51
const double NO_GRID_ALIGNMENT
Definition: Types.h:76
const size_t DEFAULT_BEZIER_STEP
Definition: Types.h:73
const std::string METADATA_BRICK_ID
Definition: Types.h:47
const std::string ARG_DB_NAME
Definition: Types.h:53
const size_t DEFAULT_BATCH_SIZE
Definition: Types.h:59
const std::string ARG_DB_PASSWORD
Definition: Types.h:55
const std::string METADATA_BONDS
Definition: Types.h:45
const std::string ARG_DB_PORT
Definition: Types.h:52
const std::string ARG_OOC_ENABLED
Definition: Types.h:62
const std::string ARG_OOC_SHOW_GRID
Definition: Types.h:66
const std::string METADATA_PDB_ID
Definition: Types.h:42
const std::string METADATA_SIZE
Definition: Types.h:46
const std::string ARG_DB_NB_CONNECTIONS
Definition: Types.h:56
const std::string METADATA_HEADER
Definition: Types.h:43
const std::string METADATA_ASSEMBLY
Definition: Types.h:41
const size_t DEFAULT_DB_NB_CONNECTIONS
Definition: Types.h:58
const std::string ARG_OOC_UPDATE_FREQUENCY
Definition: Types.h:64
const std::string ARG_OOC_NB_BRICKS_PER_CYCLE
Definition: Types.h:67
const std::string CONTENTS_DELIMITER
Definition: Types.h:38
const std::string ARG_DB_USER
Definition: Types.h:54
const std::string ENV_ROCKETS_DISABLE_SCENE_BROADCASTING
Definition: Types.h:70
const std::string ARG_DB_BATCH_SIZE
Definition: Types.h:57
const std::string ARG_OOC_VISIBLE_BRICKS
Definition: Types.h:63
const std::string ARG_OOC_UNLOAD_BRICKS
Definition: Types.h:65
std::vector< ModelDescriptorPtr > ModelDescriptors
Definition: Types.h:113
glm::vec< 3, double > Vector3d
Definition: MathTypes.h:143
glm::vec< 2, double > Vector2d
Definition: MathTypes.h:142
std::vector< Vector4f > Vector4fs
Definition: MathTypes.h:140
glm::tquat< double, glm::highp > Quaterniond
Double quaternion.
Definition: MathTypes.h:153
std::vector< double > doubles
Definition: Types.h:62
std::vector< std::string > strings
Definition: Types.h:44
std::vector< int32_t > int32_ts
Definition: Types.h:52
std::vector< size_t > size_ts
Definition: Types.h:56
std::vector< bool > bools
Definition: Types.h:61
std::vector< uint32_t > uint32_ts
Definition: Types.h:53
std::vector< uint64_t > uint64_ts
Definition: Types.h:55
std::map< uint64_t, uint64_t > uint64_tm
Definition: Types.h:73
std::unordered_map< int, size_ts > sectionGeometries
Definition: Types.h:130
std::vector< std::set< size_t > > neighbours
Definition: Types.h:125
std::vector< core::SDFGeometry > geometries
Definition: Types.h:124
std::unordered_map< size_t, int > geometrySection
Definition: Types.h:129
Defines the parameters needed when adding bounding box to the scene.
Definition: Types.h:982
Defines the parameters needed when adding box to the scene.
Definition: Types.h:999
Defines the parameters needed when adding cone to the scene.
Definition: Types.h:961
Defines the parameters needed when adding 3D grid in the scene.
Definition: Types.h:915
Defines the parameters needed when adding sphere to the scene.
Definition: Types.h:943
The Streamlines struct handles a set of streamlines. Indices are used to specify the first point of e...
Definition: Types.h:1015
Structure used to set an amino acid in protein sequences.
Definition: Types.h:863
Structure defining a selection of amino acids on a protein of an assembly. The selection is defined a...
Definition: Types.h:842
Structure defining a selection of amino acids on a protein of an assembly. The selection is defined a...
Definition: Types.h:827
Assembly representation.
Definition: Types.h:634
Structure defining transformations to apply to assembly elements.
Definition: Types.h:656
Structure containing information about how to build magnetic fields from atom positions and charge.
Definition: Types.h:1233
Structure defining how to build a point cloud from the scene.
Definition: Types.h:1279
Structure defining how to export data into a DB.
Definition: Types.h:1268
Progress of an enzyme reaction for a given instance.
Definition: Types.h:899
Structure defining how to export data into a file.
Definition: Types.h:1256
common::XYZFileFormat fileFormat
Definition: Types.h:1260
Structure defining on which instance of a model the camera should focus on.
Definition: Types.h:523
Structure defining the plugin general settings.
Definition: Types.h:539
List of identifiers.
Definition: Types.h:1085
Structure containing attributes of materials attached to one or several Core models.
Definition: Types.h:1185
A membrane is a shaped assembly of phospholipids.
Definition: Types.h:671
Structure defining how visible models are in the scene.
Definition: Types.h:1294
ModelLoadingTransactionAction action
Definition: Types.h:1295
Defines the color scheme to apply to a protein.
Definition: Types.h:1053
Object description in the 3D scene.
Definition: Types.h:614
RNA sequence descriptor.
Definition: Types.h:789
Structure defining the entry point response of the remote API.
Definition: Types.h:510
List of metrics for the current scene.
Definition: Types.h:1315
Data structure describing the sugar.
Definition: Types.h:754
Structure containing amino acids long and shot names.
Definition: Types.h:290
Structure containing information about an atom, as stored in a PDB file.
Definition: Types.h:236
core::Quaterniond rotation
Definition: Types.h:401
core::Vector3d position
Definition: Types.h:400
core::Quaterniond rotation
Definition: Types.h:371
core::Vector4fs points
Definition: Types.h:381
core::Vector3d postSynapticSurfacePosition
Definition: Types.h:354
core::Vector3d preSynapticSurfacePosition
Definition: Types.h:353
MorphologySynapseType type
Definition: Types.h:347