text:
## 1B 27

$\Delta p \Delta x\geq \frac{h}{4\pi }$

Jamie Lee 1H
Posts: 54
Joined: Fri Aug 09, 2019 12:15 am

### 1B 27

A bowling ball of mass 8.00 kg is rolled down a bowling alley lane at 5.00 +/- 5.0 m/s. What is the minimum uncertainty in its position?
What value would you use as the change in uncertainty?

Jonathan Gong 2H
Posts: 105
Joined: Sat Jul 20, 2019 12:16 am

### Re: 1B 27

For minimum uncertainty, you would use 5.00 m/s as the velocity of the bowling ball.

Posts: 53
Joined: Thu Jul 25, 2019 12:17 am

### Re: 1B 27

1. By Heisenberg's Uncertainty Principle:
(uncertainty in momentum)(uncertainty in position) >/= (h)/(4 pi)

2. The given values in this problem allow you to calculate the uncertainty in momentum. Then, using Heisenberg's Uncertainty Principle, you must solve for the uncertainty in the position.

3. uncertainty in momentum = mass * (uncertainty in velocity) --> You are given that the mass of the bowling ball was 8.00 kg and that the actual speed of the ball was within 5 of 5 m/s. Thus, the uncertainty in velocity = 5 m/s
Now, you simply multiply the mass of the ball by uncertainty in velocity:
uncertainty in momentum = (8 kg) * (5 m/s) = 40 kg * m/s

4. Finally, plug in the uncertainty of momentum calculated in Step 3 into the equation for Heisenberg's Uncertainty Principle in Step 1 to find the uncertainty in the position. You should get (uncertainty in position) >/= 1.3 * 10 ^ -36 m. Since the problem asks for the minimum uncertainty in position, your answer is 1.3*10^-36 m.

Hope this helps!

format: plain


text:
Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

# Three dimensional reconstruction of coronary artery stents from optical coherence tomography: experimental validation and clinical feasibility

## Abstract

The structural morphology of coronary stents (e.g. stent expansion, lumen scaffolding, strut apposition, tissue protrusion, side branch jailing, strut fracture), and the local hemodynamic environment after stent deployment are key determinants of procedural success and subsequent clinical outcomes. High-resolution intracoronary imaging has the potential to enable the geometrically accurate three-dimensional (3D) reconstruction of coronary stents. The aim of this work was to present a novel algorithm for 3D stent reconstruction of coronary artery stents based on optical coherence tomography (OCT) and angiography, and test experimentally its accuracy, reproducibility, clinical feasibility, and ability to perform computational fluid dynamics (CFD) studies. Our method has the following steps: 3D lumen reconstruction based on OCT and angiography, stent strut segmentation in OCT images, packaging, rotation and straightening of the segmented struts, planar unrolling of the segmented struts, planar stent wireframe reconstruction, rolling back of the planar stent wireframe to the 3D reconstructed lumen, and final stent volume reconstruction. We tested the accuracy and reproducibility of our method in stented patient-specific silicone models using micro-computed tomography (μCT) and stereoscopy as references. The clinical feasibility and CFD studies were performed in clinically stented coronary bifurcations. The experimental and clinical studies showed that our algorithm (1) can reproduce the complex spatial stent configuration with high precision and reproducibility, (2) is feasible in 3D reconstructing stents deployed in bifurcations, and (3) enables CFD studies to assess the local hemodynamic environment within the stent. Notably, the high accuracy of our algorithm was consistent across different stent designs and diameters. Our method coupled with patient-specific CFD studies can lay the ground for optimization of stenting procedures, patient-specific computational stenting simulations, and research and development of new stent scaffolds and stenting techniques.

## Introduction

Coronary artery stents have revolutionized the field of interventional cardiology. The structural morphology of coronary stents (e.g. stent expansion, lumen scaffolding, strut apposition, tissue protrusion, side branch jailing, strut fracture), and the local hemodynamic environment after stent deployment are key determinants of procedural success and subsequent clinical outcomes1,2,3,4,5,6,7. High resolution intracoronary imaging with optical coherence tomography (OCT) and high definition intravascular ultrasound (IVUS) is indispensable in stenting optimization8. The cross-sectional imaging of deployed stents by OCT or IVUS provides important information on stent morphology. However, it fails to elucidate the global spatial distribution of the stent in relation to the lumen and side branches, and does not provide any information regarding the local hemodynamic environment within the stent (macroenvironment) and around the stent struts (microenvironment). Even though the commercial OCT console provides 3D rendering of the stent and lumen in a straight line, the true 3D configuration of the stent and lumen cannot be appreciated with this method and the operator has no access to raw stent geometrical data. Therefore, further analysis or computational fluid dynamics (CFD) is impossible. A platform for precise three-dimensional (3D) reconstruction of coronary stents, combined with 3D reconstruction of the arterial lumen, may unlock a wide spectrum of information and lay the ground for optimization of stenting procedures, patient-specific computational stenting simulations, and research and development of new stent scaffolds and stenting techniques. To the best of our knowledge, there have been very few attempts for OCT-based 3D reconstruction of coronary stents9,10,11,12,13. These studies had several limitations due to insufficient validation, lack of clinical feasibility, and use of older generation stent designs deployed in straight lumen vascular geometries.

The aim of this work was to build upon the current state-of-the-art and accomplish the following: (1) Present a novel algorithm for 3D stent reconstruction of coronary artery stents, (2) Experimentally test the accuracy (at strut level) and reproducibility of this algorithm in patient-specific silicone coronary artery models, (3) Test the feasibility of the algorithm in diseased coronary artery bifurcations from actual patients, and (4) Test the feasibility of performing CFD studies in stent models 3D reconstructed with our algorithm. Notably, in this study we used stents from different vendors to highlight the versatility of our method.

## Methods

All methods were carried out in accordance with the relevant guidelines and regulations. The OCT and angiography data used in the experimental and clinical studies of this work were obtained from the PROPOT trial (randomized trial of the proximal optimization technique in coronary bifurcation lesions). The study was approved by the ethics committee of Teikyo University (IRB approval number 15-159-2) and informed consent was obtained from all study participants.

### Experimental studies

#### Experimental coronary artery models, flow chamber studies and imaging procedures

We created four patient-specific silicone models of coronary artery lumen (Fig. 1), using our in-house technique as previously described14. We included both straight and curved coronary artery segments. In brief, the 3D lumen geometries were created in 3D CAAS Workstation 8.2 (Pie medical imaging, Maastricht, The Netherlands) using two different angiographic projections. Negative molds were designed according to the geometries and were 3D printed with acrylonitrile butadiene styrene. Polydimethylsiloxane was mixed with its curing agent and then poured into the dry clean molds. After curing, these silicone models were moved to an acetone beaker to dissolve the acrylonitrile butadiene styrene material. A small plastic marker was embedded in the silicone models to facilitate the correct orientation of the segmented OCT frames as described below.

The silicone models were placed in a custom-made flow chamber, and a bioreactor circuit was connected to the inlet and outlet of the flow chamber, allowing circulation at a steady flow rate of 100 ml/min at room temperature. Three different widely used second-generation stents (Synergy, Boston Scientific, Maple Grove, MN, USA; Resolute Onyx and Resolute Integrity, Medtronic, Santa Rosa, CA, USA) with diameters ranging from 2.5 mm to 4.0 mm were directly implanted into the silicone models (Table 1). In order to assess the ability of our method to reproduce any strut malapposition, post dilatations were not performed.

The stented silicone models were imaged with angiography at two different projections with at least 30° difference in viewing angles. OCT imaging of the stented models was obtained using the OPTIS Integrated System (Abbott, Chicago, IL, USA). The OCT catheter (Dragonfly, Optis Imaging Catheter) was advanced through a 6F guiding catheter and pulled back (automatic triggering by saline without contrast) at a speed of 18 mm/s for models 1, 2, and 4, and at a speed of 36 mm/s for model 3. We selected two different pullback speeds to assess the performance of our algorithm under different OCT pullback modes.

#### 3D reconstruction of silicone lumen

The technique for semi-automatic 3D reconstruction of the silicone lumen was previously described14 and summarized in Table 2. Briefly, the lumen centerline was generated from two different angiographic views (3D CAAS Workstation 8.2; and VMTK, Orobix, Bergamo, Italy) and served as the backbone of the lumen reconstruction. The lumen contours from the segmented OCT images (EchoPlaque 4.0, INDEC Medical System, Los Altos, CA, USA) were aligned along the centerline and oriented using the aforementioned marker as a reference point. The aligned lumen contours were finally lofted to build the 3D lumen surface.

#### OCT strut segmentation and planar stent unrolling

All the steps were performed in Grasshopper 3D, a visual programming language and environment that runs within Rhinoceros 3D (Robert McNeel & Associates, Seattle, WA, USA). In each OCT frame used for the lumen reconstruction, we manually identified the stent contours and strut points (Fig. 2a,b). The segmented stent contours and strut points were imported into Grasshopper 3D. The segmented stent contours and strut points were packaged in a straight line along the OCT catheter center, rotated at the same angle with the corresponding lumen contour, and straightened, taking as reference the centroid of the distal stent contour (Fig. 2c,d). Finally, the stent contours and strut points were unrolled on a 2D plane (Fig. 2e,f).

#### Planar reconstruction of stent wireframe

Following the planar flattening of stent struts, the 2D stent wireframe was reconstructed according to the corresponding planar computer-aided wireframe of the stent. The planar computer-aided designs of the stents were provided by the stent manufacturers (Fig. 3a,d). The stent links were marked with circles and numbered in an ascending order starting from the proximal or distal stent edge. The flattened strut points were connected with straight lines according to the following rules: (1) Each line fragment should connect consecutive “peaks” and “valleys” of the points, (2) The location and the sequence of the links (where the lines are connected) must be consistent with the planar computer-aided design of the stent, (3) In zones where strut points are not visible due to wire shadow, the operator should bridge the gaps by using as a reference the pattern of the “peaks” and “valleys” of the planar computer-aided designs of the stents, and iv) At the contour side boundaries, the lines must be repeated to maintain the stent structure continuity.

#### 3D stent reconstruction

The generated planar stent wireframe was rolled back in space and rounded at the peaks and valleys, using the 3D reconstructed lumen model as a backbone in Grasshopper 3D (Fig. 3c, f). The final stent volume was created by extruding the stent sections (circular for Onyx and Integrity, and rectangular for Synergy) along the 3D reconstructed stent geometry.

#### Micro-computed tomography (μCT) and stereoscopic imaging

The μCT and stereoscopic imaging of the stented silicone models were used as a reference for the validation of the stent reconstruction algorithm. μCT imaging (Skyscanner 1172 version 1.5) was performed with the following parameters: Image pixel size 26.94 μm, voltage 100 kV, current 100 μA, and slice thickness 27 µm. The stented models were 3D reconstructed from μCT images (Mimics 22.0, Materialise, Leuven, Belgium), and smoothened (Meshmixer, Autodesk Research, New York, NY, USA). Stereoscopic imaging was performed with an Olympus SZX16 camera (Tokyo, Japan) using a 6X magnification factor.

#### Experimental validation of the 3D stent reconstruction algorithm

The OCT-based 3D reconstructed stents were compared to their μCT reconstructed counterparts and to stereoscope imaging, using μCT and stereoscopy as references. For the quantitative comparison of OCT-based versus μCT-based reconstruction, the following metrics were used: (1) Stent length, (2) Mean stent diameter (MSD), defined as the average stent diameter of serial cross-sections every 0.1 mm along the stent length, (3) Stent shape, calculated by the ellipse ratio, i.e. the ratio of the maximum distance between the two furthest points of the stent cross-sectional circumference (distance X), and the maximum distance perpendicular to distance X (distance Y), and (4) Malapposition, calculated as the maximum distance between stent struts and lumen. To keep the analysis steps blinded, different operators performed the 3D reconstruction from OCT, 3D reconstruction from μCT, and comparison between OCT- and μCT-based models to minimize possible biases.

#### Reproducibility

To calculate the reproducibility of the OCT-based 3D reconstruction method, the stents were 3D reconstructed by two independent operators. The 3D reconstructed stents were compared in terms of MSD (quantitatively) and stent shape (qualitatively).

### Clinical Studies

#### Clinical Feasibility, Processing Times, and CFD Studies

The clinical feasibility and processing times of our stent reconstruction method were assessed in n = 3 patient coronary artery bifurcations with varying disease burden (Supplementary Table 1). All these cases underwent stenting with a single stent. OCT and angiography data were acquired according to the imaging protocols mentioned above. Both lumen and stent were 3D reconstructed following the steps of our proposed algorithm. To assess the time-efficiency of our stent reconstruction method, we calculated the processing time for each step in all three clinical cases.

Also, we assessed the feasibility of CFD studies in stents reconstructed with our method. The fluid domain was discretized into tetrahedral elements for the lumen (element size = 0.15 mm) and the stent (element size = 0.02 mm). Velocity inlet and outflow ratios were employed for the boundary conditions in which pulsatile flow of a human left coronary artery was used15, and the inlet velocity was tuned according to inlet diameter16. The outflow ratio was determined based on the diameter ratio of the left anterior descending and the left circumflex arteries16. Extensions of 10-diameter were added to the inlet and outlet sections to minimize the effect of boundary conditions. We considered blood as a Newtonian fluid with a density of 1050 kg/m3 and dynamic viscosity of 0.0035 Pa·s. The flow was considered to be laminar as the maximum Reynolds numbers of all cases at the maximum flow rate at the vessel inlet were less than the threshold of 2300. The simulations were performed for n = 3 cardiac cycles using a time step of 0.01 s, and only the last cycle results are shown. We calculated the time-averaged wall shear stress (TAWSS) using the following equation:

$$TAWSS = \frac{1}{T}\mathop \smallint \limits_{0}^{T} \left| {\tau_{w} } \right|dt$$, $$\tau_{w}$$ is the wall shear stress, T is the cardiac time cycle.

### Statistical analyses

Statistical analyses were performed with the statistical package GraphPad Prism 8.0 (GraphPad Inc., San Diego, CA, USA). Continuous variables are expressed as mean ± standard error of mean. For the validation and reproducibility studies, we used Bland–Altman analysis.

## Results

### Experimental validation

#### Stent morphology

All experimental stent models (n = 4) were successfully 3D reconstructed and compared to the corresponding μCT-reconstructed models and stereoscopy imaging (Fig. 4a–d). As indicated by the boxes, there was good agreement in terms of the location of the stent links between OCT-reconstructed stents, μCT-reconstructed stents and stereoscopy. This highlights the robustness of our method to faithfully reproduce the actual stent geometry at strut level.

#### Stent size, shape and malapposition

There was high agreement in the stent length and MSD between the 3D reconstructed stents by OCT versus μCT (Table 3 for lengths, Fig. 5a for MSD). Bland–Altman analysis of the MSD between OCT- and µCT-reconstructed stents revealed a very small mean difference of 0.03 mm (95% CI from − 0.19 to + 0.24 mm). Similarly, the stent shapes were comparable to OCT and µCT reconstructions, yielding a mean difference of ellipse ratios of 0.01 (95% CI from − 0.12 to + 0.14 mm; Fig. 5b). Finally, our stent reconstruction method reproduced the severity of stent malapposition with high precision (Fig. 4e). These results strongly suggest the high accuracy of our method.

#### Reproducibility

As shown in Fig. 6a, overlapping of the 3D reconstructed stents by two different operators yielded high interobserver reproducibility of our methodology. Quantitative comparison of MSD of the reconstructed stent models by two different operators showed that the graphs of MSD along the stent length were almost overlapping (Fig. 6b). Bland–Altman analysis revealed minimum mean differences in MSD of 0.0001 mm (95% CI from − 0.02 to + 0.02 mm), suggesting the very high reproducibility of the proposed stent reconstruction method.

### Clinical Feasibility and CFD Studies

In all clinical cases (n = 3), the stents and corresponding coronary bifurcation lumens were successfully 3D reconstructed. The reconstructed stented bifurcations were qualitatively compared with the angiograms and showed good agreement in size and shape (Fig. 7a,b). The processing times for each step (from image processing to final 3D lumen and stent reconstruction) are summarized in Table 4. The average time for 3D reconstruction of stents was 177 ± 42 min, with longer stents requiring more processing time.

The reconstructed stented bifurcations were meshed (Fig. 7c) and underwent CFD studies. Figure 7d shows the TAWSS distribution along the macroenvironment of the 3D reconstructed stented bifurcation. Notably, disturbed flow was documented in the microenvironment of malapposed struts and the stented carina (Fig. 8).

## Discussion

In this study, we present a new methodology for the 3D reconstruction of coronary artery stents based on OCT and angiography. We assessed (i) The accuracy and reproducibility of the method using patient-specific silicone models of coronary arteries, and (ii) The clinical feasibility, time-efficiency, and ability to perform CFD studies using clinical bifurcation cases. For the validation studies, we used μCT and stereoscopy imaging as references. Our study showed that our algorithm: (1) Can reproduce the complex spatial stent configuration with high precision and reproducibility, (2) Is feasible in 3D reconstructing stents deployed in bifurcations, and (3) Enables CFD studies to assess the local hemodynamic environment at the lumen and strut level. Notably, the high accuracy of our algorithm was consistent across three contemporary second-generation stents (Synergy, Resolute Onyx, Resolute Integrity) with diameters ranging from 2.5 to 4.0 mm, supporting the versatility of our method.

To the best of our knowledge, this work overcomes several limitations of previous studies in the field and advances the current state-of-the-art. Table 5 provides a comprehensive head-to-head comparison of our study to the previous studies10,12,13 and the available software. The commercially available OCT console (OPTIS Integrated System, Abbott, Chicago, IL, USA) provides a real-time 3D reconstruction of the stent in a straight line. Using this software, the interventional cardiologist can easily assess multiple stent morphological parameters, including expansion, apposition, and side branch jailing at the point of care. However, the major disadvantage of the OCT console is that it cannot reconstruct the geometrically correct stent configuration; therefore, it cannot be used for CFD studies. Furthermore, this software is proprietary and the raw stent geometrical data are not accessible for further stent analysis and research. In contrast to the OCT console, our method reconstructs the true geometry of the stent that can be used for CFD studies. Of note, our algorithm is free and open to the scientific community. The 3D stent reconstruction methods proposed by Migliori et al.12 and Elliott et al.10 were based on geometrical information retrieved by OCT and μCT. Since μCT was an integral part of the reconstruction method, these techniques cannot be used in the clinical setting, and their applicability is limited to experimental research. However, a variation of the technique by Migliori et al.12 has been applied in clinical cases9. In contrast to these two studies, we used μCT solely for the purpose of validation in our method. Also, our method has direct and proven clinical applicability, given that it exclusively relies on angiography and OCT. Furthermore, Migliori et al. used older generation stent (Multi Link 8; Abbott Vascular), whereas in our study we used contemporary stents (Integrity, Onyx, Synergy) of varying size. The method proposed by O'Brien et al.13 is similar to our work in the use of OCT and angiography as source of anatomical information for 3D stent reconstruction. In fact, this work used an automatic technique for stent strut segmentation which is advantageous compared to our manual approach. However, the work by O'Brien et al.13 has some major limitations that we overcome in our study: O'Brien et al. work used outdated and relatively simple bare-metal stent designs, and its performance in current drug-eluting stent designs remains to be proven. The performance of O’Brien et al. strut mapping method in complex stent geometries and average quality OCT data appears questionable. On the contrary, our method performed well even with real-world average quality OCT data. Overall, the technically innovative approach of our method, coupled with the systematic validation and testing of its clinical feasibility using real-world, contemporary, second-generation stents, are notable advantages of our technique over the previous state-of-the-art.

Our methodology has several important technical aspects and innovations: First, it is based on a well-validated lumen reconstruction method14. The geometrically correct lumen reconstruction determines the location and orientation of the stent contours and struts points, and the relative location of the stent within the lumen. Second, our approach to unroll the stent contours and strut points and reconstruct the planar stent wireframe was a critical step that enabled faster and more accurate stent reconstruction. Direct 3D reconstruction based on the 3D strut segmentation appears to be technically challenging due to the geometrically complex distribution of strut points in space (Fig. 2). This becomes more pertinent at the gaps induced by the wire shadow and small red thrombus, where it is difficult for the operator to appreciate the correct 3D position of the missing strut points. However, when the strut points are unrolled on a 2D plane, it is much easier for the operator to find the stent pattern and fill the gaps, especially using the 2D stent design as reference (Fig. 3). Third, in our method, the stent links served as critical nodes for the precise planar reconstruction of the stent framework and subsequent 3D reconstruction of the stent (Fig. 3). Finally, all the steps in our method were automatic or semi-automatic except for the manual step to reconstruct the planar stent wireframe. Our code coordinated all these steps effectively, thereby reducing the human interaction and processing times and improving the accuracy and reproducibility of the proposed technique.

The proposed methodology has several scientific and clinical applications. It can be used at the cardiac catheterization laboratory to inform the interventional cardiologist on the spatial configuration of the deployed stent in relation to the main vessel lumen and side branches (when applicable), identifying areas of stent under-expansion, strut malapposition, and floating struts at the carina and side branch ostia. This information is essential for stenting optimization, which is directly related to favorable clinical outcomes17,18. Furthermore, our method can be combined with augmented reality techniques to allow for high-resolution visualization of the deployed stents for educational purposes. The proposed method can enable accurate CFD and solid mechanics studies to assess the local biomechanical environment after stenting, with emphasis on the strut level and the anatomically sensitive areas of bifurcations. Studies have associated areas with the disturbed flow and high shear rates with an increased propensity for stent restenosis and thrombosis3,19. Identification of these hemodynamically unfavorable areas within stents may enable stenting optimization and lead to improved clinical outcomes. Geometrically correct stent reconstructions can also provide important feedback to stent manufacturers regarding the design and performance of stents, enabling stent design optimization. Of note, our method has the potential to use other intracoronary imaging modalities, such as high definition IVUS, as anatomical input. The relatively simple steps of our method can allow operators without technical or engineering background (e.g., medical students, fellows) to use it, making it widely applicable.

This study has several limitations. First, the processing times were not optimal. The most time-consuming steps in the process were the: (1) Manual strut segmentation of OCT images (average time 60 ± 10 min), (2) Manual planar reconstruction of the stent wireframe (average time 87 ± 18 min), and the data transfer between different software used for the angiography and OCT image processing (i.e., CAAS, EchoPlaque, VMTK). Our current efforts focus on the development of a fully automated strut segmentation algorithm requiring limited manual interventions, a smart algorithm for planar stent wireframe reconstruction that limits the manual intervention to the highly challenging cases, and a new Grasshopper code to streamline the cross-talk between different software. We believe that these improvements will make our algorithm significantly faster. Second, our method required good quality OCT images. OCT images with incomplete blood clearance and severe image artifacts would not allow the operator to identify the stent struts making the planar reconstruction of the stent wireframe quite challenging. Finally, our technique was tested in single stent techniques/scenarios. The ability of our algorithm to reconstruct two stents (overlapping, bifurcation) is subject to future work.

## Conclusion

In conclusion, in this work, we propose a new method that enables accurate, reproducible, time-efficient and clinically feasible 3D reconstruction of coronary artery stents. This method, coupled with CFD studies, can facilitate stenting optimization, training in stenting techniques, and stent research and development.

## Abbreviations

3D:

Three-dimensional

CFD:

Computational fluid dynamics

IVUS:

Intravascular ultrasound

MSD:

Mean stent diameter

OCT:

Optical coherence tomography

μCT:

Micro-computed tomography

## References

1. 1.

Antoniadis, A. P. et al. Biomechanical modeling to improve coronary artery bifurcation stenting: Expert review document on techniques and clinical implementation. JACC Cardiovasc. Interv. 8, 1281–1296 (2015).

2. 2.

Chen, C. et al. In vivo and in vitro evaluation of a biodegradable magnesium vascular stent designed by shape optimization strategy. Biomaterials 221, 119414 (2019).

3. 3.

Chiastra, C. et al. Computational replication of the patient-specific stenting procedure for coronary artery bifurcations: from OCT and CT imaging to structural and hemodynamics analyses. J. Biomech. 49, 2102–2111 (2016).

4. 4.

Foin, N. et al. Incomplete stent apposition causes high shear flow disturbances and delay in neointimal coverage as a function of strut to wall detachment distance: implications for the management of incomplete stent apposition. Circ. Cardiovasc. Interv. 7, 180–189 (2014).

5. 5.

Kolandaivelu, K. et al. Stent thrombogenicity early in high-risk interventional settings is driven by stent design and deployment and protected by polymer-drug coatings. Circulation 123, 1400–1409 (2011).

6. 6.

Koskinas, K. C., Chatzizisis, Y. S., Antoniadis, A. P. & Giannoglou, G. D. Shear stress in stent restenosis and thrombosis: pathophysiologic mechanisms and implications for clinical translation. J. Am. Coll. Cardiol. 59, 1337–1349 (2012).

7. 7.

Valeria, P. et al. Thrombogenicity at the jailed side branch Ostia in the provisional stenting technique: insights from an in vitro model. EuroIntervention 14, 826–827 (2018).

8. 8.

Räber, L. et al. Clinical use of intracoronary imaging. Part 1: guidance and optimization of coronary interventions. An expert consensus document of the European Association of Percutaneous Cardiovascular Interventions. Eur. Heart J. 39, 3281–3300 (2018).

9. 9.

Bologna, M. et al. Automatic segmentation of optical coherence tomography pullbacks of coronary arteries treated with bioresorbable vascular scaffolds: application to hemodynamics modeling. PLoS ONE 14, e0213603–e0213603 (2019).

10. 10.

Elliott, M. R. et al. Establishment of an automated algorithm utilizing optical coherence tomography and micro-computed tomography imaging to reconstruct the 3-D deformed stent geometry. IEEE Trans. Med. Imaging 38, 710–720 (2019).

11. 11.

Lin, C. Y., Veneziani, A. & Ruthotto, L. Numerical methods for polyline-to-point-cloud registration with applications to patient-specific stent reconstruction. Int. J. Numer. Method Biomed. Eng. 34, e2934 (2018).

12. 12.

Migliori, S. et al. A framework for computational fluid dynamic analyses of patient-specific stented coronary arteries from optical coherence tomography images. Med. Eng. Phys. 47, 105–116 (2017).

13. 13.

O’Brien, C. C. et al. Constraining OCT with knowledge of device design enables high accuracy hemodynamic assessment of endovascular implants. PLoS ONE 11, e0149178 (2016).

14. 14.

Wu, W. et al. 3D reconstruction of coronary artery bifurcations from coronary angiography and optical coherence tomography: feasibility, validation, and reproducibility. Sci. Rep. 10, 18049 (2020).

15. 15.

Davies, J. E. et al. Evidence of a dominant backward-propagating “suction” wave responsible for diastolic coronary filling in humans, attenuated in left ventricular hypertrophy. Circulation 113, 1768–1778 (2006).

16. 16.

van der Giessen, A. G. et al. The influence of boundary conditions on wall shear stress distribution in patients specific coronary trees. J. Biomech. 44, 1089–1095 (2011).

17. 17.

Cook, S. et al. Impact of incomplete stent apposition on long-term clinical outcome after drug-eluting stent implantation. Eur. Heart J. 33, 1334–1343 (2012).

18. 18.

Im, E. et al. Incidences, predictors, and clinical outcomes of acute and late stent malapposition detected by optical coherence tomography after drug-eluting stent implantation. Circ. Cardiovasc. Interv. 7, 88–96 (2014).

19. 19.

Chiastra, C. et al. Computational fluid dynamic simulations of image-based stented coronary bifurcation models. J. R. Soc. Interface 10, 20130193 (2013).

## Funding

National Institutes of Health (R01 HL144690), Dr. Vincent Miscia Cardiovascular Research Fund.

## Author information

Authors

### Contributions

Conception and design: W.W., Y.S.C.; Acquisition of data: W.W., B.K., M.S., S.Z., S.S., Y.W., Y.M., T.M., A.B., R.B., T.V., P.A.I., J.M., A.P., Y.S.C.; Analysis and interpretation of data: W.W., B.K., M.S., S.Z., S.S., C.C. Y.S.C.; Manuscript drafting and revision: W.W., B.K., M.S., S.Z., S.S., Y.W., Y.M., T.M., A.B., R.B., T.V., P.A.I., J.M., A.P., F.B., H.S., E.S.B., G.D.D., Y.L., G.S., G.D., F.M., G.S.K., E.R.E., C.C., Y.S.C. All authors were involved in drafting the article or revising it critically for intellectual content, and all authors approved the final version to be published.

### Corresponding author

Correspondence to Yiannis S. Chatzizisis.

## Ethics declarations

### Competing interests

Yiannis S. Chatzizisis has received speaker honoraria, advisory board fees and a research grant from Boston Scientific Inc. and a research grant from Medtronic Inc. Dr Chatzizisis has a domestic  patent and international patent pending for the invention entitled “Computational simulation platform for the planning of interventional procedures” (U.S. Patent No. 11,026,749 and International Application No. PCT/US2020/057304). Emmanouil S. Brilakis: Consulting/speaker honoraria from Abbott Vascular, American Heart Association (associate editor Circulation), Amgen, Biotronik, Boston Scientific, Cardiovascular Innovations Foundation (Board of Directors), CSI, Elsevier, GE Healthcare, InfraRedx, Medtronic, Siemens, and Teleflex; research support from Regeneron and Siemens. Shareholder: MHI Ventures. Francesco Burzotta: Speaker honoraria from Medtronic, Abbott and Abiomed. Timothy Mickley and Andrew Bicek are employees of Boston Scientific Inc. Richard Bliss is an employee of Medtronic Inc. All other authors have no relevant conflict of interests to disclose.

### Publisher's note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

## Rights and permissions

Reprints and Permissions

Wu, W., Khan, B., Sharzehee, M. et al. Three dimensional reconstruction of coronary artery stents from optical coherence tomography: experimental validation and clinical feasibility. Sci Rep 11, 12252 (2021). https://doi.org/10.1038/s41598-021-91458-y

• Accepted:

• Published:

• ### Patient-specific computational simulation of coronary artery bifurcation stenting

• Shijia Zhao
• Wei Wu
• Yiannis S. Chatzizisis

Scientific Reports (2021)


text:
# Space filling problem with equal radii on earth

I have two circles. Both origin at San francisco $(37.77493,-122.419415)$, The larger circle has Radius $R_1$, the smaller circle has radius of $R_2$.

What's the fewest number of additional overlapping smaller circles (/w Radius of $R_2$) that fit inside the larger one, that creates zero empty space (except near the edge of the larger circle), and the corresponding co-ordinates of each circle's origin.

I've bounced this problem across my peers, and we've decided that the circles are optimally fitted to how the Flower of Life is laid (http://en.wikipedia.org/wiki/Flower_of_Life).

Thus one unit of $R$ from the centre would produce $7$ circles ($1$ in the middle, and $6$ surrounding).

Origin = $(x,y)$

Surrounding circles: (x+cos(60x)R,y+sin(60x)R) // Guess

From here I'm stuck on how to continue to fill the circle, and how to give real-world coordinates of each of the circle's origins. With input like $R_1 = 5,000$ meters, and $R_2 = 1000$ meters.

-
It would help if you were more specific about what you want. It's not clear to me exactly how much space you want to cover with your overlapping small circles considering that the flower of life has a good bit of empty space around the edges. –  Jim Feb 19 '13 at 20:38
Sorry if I wasn't clear, empty space around the edges are fine. –  Mr. Demetrius Michael Feb 19 '13 at 20:51
If empty space is fine then I would say the fewest number of additional circles that meet your criteria is $0$. But I'm certain that's not what you intend, hence I still think you need to be more specific. –  Jim Feb 19 '13 at 21:30

The coordinates of all the centers are: $$(\frac{\sqrt{3}j}{2},k + \frac j 2) R$$ for $k,j$ integers.
To check if the small circle (radius R) is inside the larger one (radius R_1) compute the distance between the centers: $$R \sqrt{\frac 3 4 j^2 + (k+\frac j 2)^2} \le R_1 - R.$$
@Henning, with the largest radius just $5$ kilometers, the Earth is pretty nearly flat. But perhaps OP could clarify. –  Gerry Myerson Feb 20 '13 at 0:33


text:
# Mathematica equivalent to HTML code or LaTeX \texttt

I know in HTML or LaTeX there is a way to easily put a phrase in a monospace font. Is there a way to do this in Mathematica without manually changing the font for the words I want in monospace?

• Alt+9 worked on Linux – Matt G Nov 19 '17 at 23:12


text:
# Find the maximum length in a ragged list

Given a ragged list of positive integers find the size of the largest list contained somewhere in it.

For example:

[1,[1,[8,2,[1,2],5,4,9]],2,[],3]

Here the answer is 6 because one of the lists has 6 elements and all other lists have fewer.

[1,[1,[8,2,[1,2],5,4,9]],2,[],3]
^ ^ ^     ^ ^ ^

The length doesn't care in any way about the value of the elements, so a list can be longer than the list that contains it.

Given a ragged list of positive integers output the size of the largest list contained somewhere in it. You may take input in any reasonable format.

This is so answers will be scored in bytes with the goal being to minimize the size of your source-code.

## Testcases

[] -> 0
[[]] -> 1
[1,2,3] -> 3
[[1,2,3]] -> 3
[1,2,[],1] -> 4
[1,[1,[8,2,[1,2],5,4,9]],2,[],3] -> 6

• I think you should specify that it's the longest list contained in the list including itself. It only shows up in the test cases Jan 7 at 15:56

# Python 2, 40 bytes

f=lambda a:a>[]and max(len(a),*map(f,a))

Attempt This Online!

Uses Python 2's global ordering: lists are all considered greater than ints. We can also use > instead of >=, because []>[] is False which is the same as 0, which would be the result anyway from the max(len(a),*map(f,a)).

This also uses the var-args version of max which is shorter than constructing a list. Normally we wouldn't be able to do this, because the var-args form of max only works with 2 or more arguments, but if we know a>[] then a is non-empty, so *map(f,a) always adds at least one more argument to the call.

# Whython, 34 bytes

f=lambda a:max(len(a),*map(f,a))?0

Attempt This Online!

When a member is an integer, the len call fails; we just catch this and replace the result with 0. When a is an empty list, this also fails because max gets only one argument, but catching and returning 0 conveniently fixes this too.

# R, 58 bytes

f=function(x)max(l<-length(x),if(l&is.list(x))sapply(x,f))

Try it online!

# Haskell + free, 40 37 bytes

3 bytes saved by Lynn

Haskell doesn't have a built in ragged list type so we need to build one out of free monads from the free package.

iter(maximum.((:)=<<length)).fmap(*0)

Try it online!

## Explanation

First we replace every number with 0 because that is their length, or at least it's the length they should be to make the math work out.

Then from there we make a function maximum.((:)=<<length. This looks complicated, but really all it does is take the length of a list of integers, put it on the front of the list and take the maximum of that. So it gives the max of the list or the length of the list whichever is larger.

With this we use iter to "tear down" the list. iter will start first with the lists containing only integers and run this on them then replace them with their results, and then it will do that again, and again until we've reduced the entire structure down to a single element.

We can visualize the entire process as:

[1,[1,[8,2,[1,2],5,4,9]],2,[],3]
[0,[0,[0,0,[0,0],0,0,0]],0,[],0] -- Replace everything with 0
[0,[0,[0,0,2,0,0,0]],0,0,0]
[0,[0,6],0,0,0]
[0,6,0,0,0]
6

• Maybe fmap(0*) saves a few bytes.
– Lynn
Jan 6 at 20:06

# BQN, 15 13 bytesSBCS

-2 bytes thanks to Razetime!

{(≠⌈´𝕊⍟=¨)×𝕩}

Run online!

{(≠⌈´𝕊⍟=¨)×𝕩}   # Anonymous function taking the list as right argument 𝕩
×𝕩    # Sign of each number, converts all numbers to 1
=𝕩     ¨       # For each value in the list
𝕊⍟=        #   do a recursive call if it is a list (rank 1)
#   and return integers unchanged (rank 0)
≠⌈´        # Maximum reduction of the results starting with the length of 𝕩

or questionable 12 bytes:

{(≠⌈´𝕊⎊0¨)𝕩}

Run online!

This relies on exceeding the maximum call stack size, which means this only works if such a limit exists and is larger than the maximum depth of the ragged list.

• Choose is shorter: {=◶0‿(≠⌈´𝕊¨)𝕩}, and {(≠⌈´𝕊¨)⍟=×𝕩} seems to work but i'm not too sure. Jan 6 at 16:07
• @Razetime thanks a lot, both work. I've rewritten your second suggestion slightly to reduce the number of recursive calls.
– ovs
Jan 7 at 9:05

# 05AB1E, 14 bytes

ΔDgˆʒ˜gĀ}€}¯à

Explanation:

Δ             # Loop until the result no longer changes:
D            #  Duplicate the current list
g           #  Pop and push its length
ˆ          #  Pop and add this to the global array
ʒ         #  Filter the items within the list:
˜        #   Flatten it
g       #   Pop and push the length
Ā      #   Check that this is not 0
}         #  After the filter:
€       #  Flatten the list one level down
}             # After the loop:
¯            # Push the global array with lengths
à           # Pop and push its maximum
# (which is output implicitly as result)

Bug-abuses the fact that ˜ gives an error on integers, causing them to be removed after the filter. Most errors in 05AB1E are simply ignored, which would be incorrect in this case, since the gĀ would result in a truthy result.

Could have been 13 bytes in the legacy version of 05AB1E if all integers were guaranteed to contain less digits than the intended result:

˜g'ε×æ'g«€.VZ

˜             # Flatten the (implicit) input-list
g            # Pop and push its length
'ε×        '# Push a string of that many "ε"
æ        # Pop and push the powerset of this string
# (the prefixes would be enough, but that builtin doesn't include
# an empty string which the powerset builtin does)
'g«    '# Append a trailing "g" to each
€    # Map over each string
.V  #  Execute it as 05AB1E code with the (implicit) input-list
#  (where ε is a map, and g pushes the length)
Z # Push the flattened maximum of this list
# (which is output implicitly as result)

This unfortunately doesn't work if the integers are too big, because the εg would include the lengths of each inner integer in the resulting list of lists, which could potentially be larger than the intended result.
See that it fails if an input-number contains too many digits.

Minor note: Luckily the 'ε× isn't a dictionary word. If we would use € instead of ε it wouldn't work, because '€× is the dictionary word for "view".

# Japt, 1413 11 bytes

Ë¶Ô©ßDÃrwUl

Try it (includes all test cases)

Ë¶Ô©ßDÃrwUl     :Implicit input of array U
Ë               :Map each D
¶              :  Test for strict equality with
Ô             :    Max with nothing if an integer (which, for some reason, returns an object)
Ô             :    Itself reversed if an array (which works because reversing mutates the array)
ßD          :   Recursive call with argument D
Ã         :End map
r        :Reduce by
w       :  Maximum
Ul     :  With initial value of length of U

• I don't know Japt, but is it possible to wrap itself into a list before doing the map, and simply using max after the map, instead of the reduce-by with initial length? Jan 6 at 17:59
• Not in a way that would make this any shorter or without introducing an infinite loop, @KevinCruijssen. At least not that I can think of. Jan 6 at 19:01

# Python 3, 41 bytes

f=lambda x:x*-1or max([len(x),*map(f,x)])

Try it online!

-10 bytes thanks to loopy walt with a better way of typechecking

• Jan 6 at 18:08
• @loopywalt that doesn't work with 0s in the input Jan 6 at 18:34
• OP explicitly says positive integers (first line of post). Jan 6 at 18:39
• @loopywalt oh, positive. my bad Jan 6 at 18:53
• You can omit the [] because max can take multiple arguments Jan 7 at 7:55

# Factor, 41 bytes

[ [ array? ] deep-filter longest length ]

Try it online!

Get a list of every list (no matter the depth), then find the length of the longest one. deep-filter is like filter except instead of traversing elements in a linear fashion, it traverses nested sequences using a depth-first search algorithm. (deep-reduce is also an approach that works, but it offers atoms and so it's verbose to check for and ignore them.)

                        ! { 1 { 1 { 8 2 { 1 2 } 5 4 9 } } 2 { } 3 }
[ array? ] deep-filter  ! {
!     { 1 { 1 { 8 2 { 1 2 } 5 4 9 } } 2 { } 3 }
!     { 1 { 8 2 { 1 2 } 5 4 9 } }
!     { 8 2 { 1 2 } 5 4 9 }
!     { 1 2 }
!     { }
! }
longest                 ! { 8 2 { 1 2 } 5 4 9 }
length                  ! 6

# R, 66 64 bytes

f=function(x)"if"(is.list(x)&(l=length(x)),max(l,sapply(x,f)),0)

Try it online!

Currently being out-golfed by Dominic van Essen.

• I saw that you'd answered, so didn't peek before I'd had a go too, and ended-up naming every single variable with the exact same name... Jan 6 at 16:23

# JavaScript, 40 bytes

f=a=>a/a||Math.max(a.length,...a.map(f))

Try it online!

# JavaScript, 43 bytes

f=a=>Math.max(~~a.length,...a.map?.(f)??[])

f=a=>Math.max(~~a.length,...a.map?.(f)??[])

console.log(f([]))
console.log(f([1,2,3]))
console.log(f([[1,2,3]]))
console.log(f([1,2,[],1]))
console.log(f([1,[1,[8,2,[1,2],5,4,9]],2,[],3]))

• Wow, TIL about the ?.() operator Jan 6 at 16:53
• @pxeger The () isn't really part of the operation. .? is the 'optional chaining' operator. It's mostly used with variables - e.g. a?.b?.c will result in c if both a and b are defined, and will result in undefined if either a or b is undefined/null. But it can also be used with indexing (a?.[i]) and functions (f?.(args)), of this this answer uses the second with map?.(f). :) Jan 6 at 17:19
• @KevinCruijssen That's not right; a.?b.?c will result in a.b.c if a and a.b are defined, unrelated to the variables b and c (that would be ??). ?.() is special-case syntax AFAICT Jan 6 at 17:30
• @pxeger a.?b.?c isn't valid JavaScript. I think you meant a?.b?.c? Partially my fault for that .? instead of ?. typo in the first line of my comment.. To correct & clarify part of my previous comment: ?. is the 'optional chaining' operator. It's mostly used with variables - e.g. a?.b?.c will result in a.b.c if both a and a.b are defined, and will result in undefined if either a or a.b is undefined/null. Jan 6 at 17:54
• @pxeger Anyway, it's still all the ?. operator, as can be seen in the link I send in my first comment. Whether you use it as obj?.val, arr?.[index] or func?.(args) doesn't matter too much. Jan 6 at 17:56

# APL (Dyalog Unicode), 28 25 bytes

Full program.

l←⍬
{1<|≡l,∘≢←⍵:∇¨⍵}⎕
⌈/l

Try it online!

l←⍬ initiate l to an empty list

⎕ get evaluated console input
{} apply the following anonymous lambda to that; the argument is ⍵:  ⍵ the length of the argument
l,∘≢←⍵ append l with the argument length, giving the argument as pass-through value
≡ the depth (nesting level — negative if ragged) of the argument
| absolute value of that
1<: if that is greater than 1:
∇¨ recurse on each element of the argument

⌈/l [implicitly print] the largest value of l (lit. max-reduce)

# BQN, 13 bytes

{⌈´≠⊸∾𝕊¨⍟=×𝕩}

Anonymous function that takes a list and returns an integer. Run it online!

Found independently of ovs's solution, but takes advantage of a 1-byte savings proposed in a comment on that solution by Razetime.

### Explanation

{⌈´≠⊸∾𝕊¨⍟=×𝕩}
𝕩   Start with the argument, which is either a list or an integer
×    Get its sign (applies itemwise over lists): converts all integers to 1
⍟=    Apply this function 0 times to an integer or 1 time to a list:
𝕊¨         Map a recursive call over each element
≠⊸∾         Prepend the length of the list (or 1 if it's an integer)
⌈´            Take the maximum

# Charcoal, 23 bytes

⊞υＡＦυＦιＦ⁼κ⁺κ⟦⟧⊞υκＩ⌈ＥυＬι

Try it online! Link is to verbose version of code. Explanation:

⊞υＡ

Collect the input list into the list of lists.

Ｆυ

Loop over each list.

Ｆι

Loop over each element.

Ｆ⁼κ⁺κ⟦⟧

If adding the empty list to the element results in a copy of the element, ...

⊞υκ

...then push the element to the list of lists. (Adding the empty list to a scalar results in an empty list, not the scalar.)

Ｉ⌈ＥυＬι

Output the maximum of all the lengths of the lists.

# Wolfram Language (Mathematica), 23 bytes

Max[Length@#,#0/@(0#)]&

Try it online!

• does it need to be (0#) instead of #?
– att
Jan 6 at 18:18
• Ah, I see, it does
– att
Jan 6 at 20:03
• -# doesn't work with e.g. {2}
– att
Jan 7 at 2:54

# Brachylog, 10 bytes

{ċl|ċ∋↰}ᶠ⌉

Try it online!

### Explanation

{      }ᶠ     Find all possible outputs of the following predicate:
ċ                The input is a list
l               Output its length
|            OR
ċ             The input is a list
∋            Take an element of that list (creates choice points for each element)
↰            Recursively call this predicate
⌉    Final output is the maximum value of the resulting list of possible outputs

# Jelly,  7  6 bytes

¬ß€»LṀ

Try it online!

A monadic Link accepting a list containing any strictly positive integers or nested, similar, lists that yields the maximal length list.

### How?

¬ß€»LṀ - Link, call this "f": list, A
¬      - logical NOT (vectorises) - convert all positive integers to zeros so that
we wont implicitly treat them as ranges
€    - for each element, E, in A (...if the current A isn't now a zero):
ß     -   call this Link (i.e. f(A=E))
L  - length of A - Note that zero has length one.
»   - maximum (vectorises)
Ṁ - maximum (of the resulting list)

# Vyxal, 9 bytes

-λ[vxnLJG

Try it Online!

-         # Subtract from self to generate a list with the same shape but only zeroes
λ        # A recursive lambda, which automatically gets called with ^
[       # If it's truthy (a list)
vx     # Do a recursive call on each item
nLJ  # Append the length of the list
G # Get the maximum

• -1 Jan 6 at 23:43
• @lyxal Doesn't work? Jan 6 at 23:47
• It was working when I commented it Jan 6 at 23:56
• @lyxal ??? Last push to production was two days ago... Jan 7 at 0:21
• Maybe it's a server issue. Have you tried running it offline? Jan 7 at 0:22

# Perl 5, 34 bytes

sub f{max@_+0,map ref?f(@\$_):0,@_}

Try it online!

# Ruby, 44 39 bytes

f=->d{d*0==0?0:[d.size,*d.map(&f)].max}

Try it online!

# C (gcc) with -m32 and -lm, 9488 87 bytes

• -6 thanks to ceilingcat

32-bit mode used to make bit-twiddling of pointers easier.

As C doesn't have any list primitive, I implemented a tagged value list (lists stored as an item have the least significant bit set.) The function simply gets the total length of the current list and checks to see if any sublist has a longer length.

f(l,m,i)int*l,*m;{for(m=l,i=0;l;l=l[1])i++;for(;m;m=m[1])*m&1?i=fmax(f(*m^1),i):0;l=i;}

Try it online!

Ungolfed:

f(l,m,i)int*l,*m;{
for(m=l,i=0;l;l=l[1]) i++; // Get length of current list
for(;m;m=m[1])
*m&1? // Is this a sublist?
i=fmax(f(*m^1),i): // Is the sublist longer?
0;
l=i;
}


text:
# Detecting abnormalities in x-rays while taking into account demographics of a patient -automated

This is my first post so please forgive me for any mistakes.

I am working on an object detection algorithm that can detect abnormalities in an x-ray. As a prototype, I will be using yolov3 (more about yolo here: 'https://pjreddie.com/darknet/yolo/') However, one radiologist mentioned that in order to produce a good result you need to take into account the demographics of the patient. In order to do that, my neural network must take into account both text an an image. Some suggestions have been made by other people for this question. For example, someone recommended taking the result of a convolution neural network and a seperate text neural network. Here is an image for clarification:

Image Credits: This image (https://cdn-images-1.medium.com/max/1600/1*oiLg3C3-7Ocklg9_xubRRw.jpeg) from Christopher Bonnett's article (https://blog.insightdatascience.com/classifying-e-commerce-products-based-on-images-and-text-14b3f98f899e)

For more details, please refer to above-mentioned article. It has explained how e-commerce products can be classified into various category hierarchies using both image and text data.

However, a when convolution neural network is mention it usssualy means it is used for classification instead of detection https://www.quora.com/What-is-the-difference-between-detection-and-classification-in-computer-vision (Link for comparison between detection and classification)

In my case, when I am using yolov3, how would it work. Would I be using yolov3 output vector which would be like this format class, center_x, center_y, width and height

My main question is how would the overall structure of my neural network be like if I have both image and text as input while using yolov3. Thank you for taking the time to read this.

First of all you don't need "text" input as in Christopher Bonnett's blog. Your case is more easy - demographic is table data, which can be expressed as vector of numeric values. This data should be processed - pushed through one or two fully connected layers. The trick is where, to what part of yolo to concatenate results of processing of this vector. Because it's vector data it should concatenated to fully connected layer. Where exactly should be found by experiments, but as starting point it could be concatenated to before-last (before output) fully connected layer (I think for yolo it's 4096-size layer).

Overall I'd say that is not a trivial task. It require some experience with deep learning, good understanding of yolo design, yolo algorithm and a lot of experimentation, both with architecture and hyperparameters. Probably worth solid paper. Good luck.

• So basically you are saying that for testing I should concatenate the processed vector with the vector produced by the second to last fully connected layer for yolo. – Hozaifa Bhutta Mar 30 '19 at 0:29
• Essentially yes, but as the first stage of experiment. Final version may differ – mirror2image Mar 30 '19 at 4:45
• Do you know how I can access the Yolo structure or where I can learn to do this? Thank you. – Hozaifa Bhutta Mar 30 '19 at 21:33
• Read Yolo paper and github code, for example: github.com/ayooshkathuria/pytorch-yolo-v3 ;You have to know python and pytorch or tensorflow – mirror2image Mar 31 '19 at 5:07

you need to take into account the demographics of the patient

How, exactly?

• Is it a difference of, say, threshold? In this case you can do this serially (as @mirror2image mentions): process the image and then conclude by comparing the size of what you saw to, say, an age-dependent threshold.
• Or has the whole processing to be different? In the extreme, you would not wait until the very end before asking whether the patient is a man if you are looking for prostate cancer.

To design the model, you need enough medical understanding to make such choices. The model can handle the parameters, but you have to choose the architecture.

• Hi. This seems to be more of a comment than an answer to the question. – Philip Raeisghasem Mar 31 '19 at 23:01
• @PhilipRaeisghasem Perhaps, but one too lengthy to fit as a comment. – Mathieu Bouville Apr 1 '19 at 6:06
• Thank you for the response, but I am confused by what you mean when you say ‘difference of threshold’. Also what is an age-dependent threshold. – Hozaifa Bhutta Apr 1 '19 at 12:35
• You say the output would be: class, center_x, center_y, width and height. There may be a minimum size (threshold) for what you see to be meaningful, and this value may be different for an old man compared to a young woman: a different threshold. – Mathieu Bouville Apr 1 '19 at 13:13
• So one suggestion (I think) you made is maybe that I merge the two vectors earlier than the place mirror2image suggested. I know this is just an example but I just want to make sure I understand what you are saying. – Hozaifa Bhutta Apr 1 '19 at 16:51