The Page Hierarchy will be included. This section is only included if the project isusing the \page / \subpage doxygen commands in its documentation. If thosecommands are not present, this section is not included. By default this is abulleted list; see the Clickable Hierarchies section. The default titlefor this section is "Page Hierarchy", but can be changed using the key"pageHierarchySubSectionTitle" in exhale_args. SeepageHierarchySubSectionTitle.
Next, the Class Hierarchy is included. If no class-like compounds are documented inthe project (e.g., only free-standing functions), this section will not be included.By default this is a bulleted list; see the Clickable Hierarchiessection.
After the Class and File Hierarchies, the unabridged API index is generated. Thedefault title for this section is "Full API", but can be changed using the key"fullApiSubSectionTitle" in exhale_args. SeefullApiSubSectionTitle.
The unabridged_api.rst performs a large number of .. toctree:: directivesto link up all of the documents. You can control the number of bullets shown foreach section be setting the key "fullToctreeMaxDepth" (e.g. to a smallernumber such as 2). See fullToctreeMaxDepth.
Where numbers (4), (5), and (8) are concerned, you should be able to happily ignorethat an .. include:: is being performed. The URL for the page is strictlydetermined by what you specified with the required arguments"containmentFolder" and "rootFileName". However, if things are not workingas expected it is useful to know where to look. The hierarchies in particular,though, may be challenging to understand if you do not know HTML (or JavaScript) andyou are generating the Tree View.
As stated elsewhere, the primary reason for writing Exhale is to revive the DoxygenClass and File hierarchies. The default behavior of Exhale is to simply insertbulleted lists for these. This was originally because I had hoped to support otherSphinx writers besides HTML, but that ship has pretty much sailed. Now, the reason isprimarily because more information is required by the user depending on their HTMLtheme. Basically
If you are using any theme other than the Sphinx Bootstrap Theme, simply addthe argument "createTreeView": True to your exhale_args dictionary inconf.py. This will use the lightweight and surprisingly compatiblecollapsibleLists library for your clickable hierarchies.
When using either the sphinx-bootstrap-theme, or any other theme thatincorporates Bootstrap, you will need to make sure to also set"treeViewIsBootstrap": True in your exhale_args dictionary in conf.pyin addition to "createTreeView": True. Exhale will then use theBootstrap Treeview library to generate your clickable hierarchies.
Assuming you have set primary_domain = 'cpp' (as shown in theQuickstart Guide), you should be able to use the linking strategiesprovided by Sphinx itself without needing to prefix everything with cpp:.Some examples:
If the above are not working, you can try using the links that Exhale generates toperform its own internal linkage. These links are much harder to use directly.However, there are some documented compounds that can only be linked to using theseinternal links. These are either because Exhale does not use the correspondingBreathe directive (e.g., namespace) or there does not exist an equivalent linktype in the Sphinx C++ domain (file and dir).
This has an important consequence for you! If you use the linking strategydescribed here, when formal reStructuredText labels are introduced, your linkswill likely break (because it changes the anchor point from the title to thegenerated label).
Lastly, the anchor point is derived from what you specified as the root file title.The general scheme for how reStructuredText generates these links is basicallytarget.lower().replace(" ", "-"), but special symbols are treated differently.
Note that unlike namespaces, replace(os.sep, "_") will only result in a singleunderscore between directories. Note that spaces are not allowed in the generatedlinks, so they are also replaced with underscores.
If for whatever reason you want to use the Exhale internal links, you can saveyourself a lot of time trying to figure out what they might be and just generate theapi once. Open up the generated file for the desired node, and look at the top.
If you override XML_PROGRAMLISTING = NO (or do not explicitly set itto YES if using alternative Doxygen generation methods),significantly more than just whether or not the program listingdocument is generated is affected. There are numerous graph relationshipsthat Exhale cannot recover without the xml program listing.
Afterward, an enumeration of the files that this file #include s, as well asfiles that #include this file, is presented next. Afterward, an enumerationby kind (namespaces, classes, functions, etc) that were defined in this file areincluded.
I put a lot of thought into the defaults for the .. contents:: directive. Ibelieve the chosen defaults are optimal, but this is very much a personal decision.It also depends a lot on what html_theme you are using in conf.py. Forexample, the sphinx_rtd_theme (while classy) leaves a lot to the imaginationwhere page-level navigation is concerned (and the page is long).
The Contents Directive can be used to display the table of contents on an individualreStructuredText page. This is different than the toctree directive in thatit is not specifying a list of documents to include next, it is simply informing thereStructuredText parser (Sphinx in our case) that you would like a table of contentsdisplayed where this directive appears.
On the other hand, pages generated for things like Directories, Enums, Variables,Defines, Typedefs, etc, are generally only as long as the documentation so they donot receive a .. contents:: directive by default.
Traditional usage of a .. contents:: directive, when :backlinks: is notexplicitly specified, is to create circular links. When considering writing a longdocument with many sections and subsections, this is exceptionally convenient.
This means that when you click on a link in the generated table of contents, ittakes you to the heading for that section. The heading is also a hyperlink,which when clicked takes you back to the table of contents.
The directives for generating the documentation for a given node come from Breathe.Exhale uses the Breathe defaults for all directives, except for Classes and Structs.Suppose you are documenting a class namespace::ClassName. Exhale will producethe following directive:
where the defaults being overridden are to include :protected-members: as well as:undoc-members:. You may, for example, want to also include :private-members:in your documentation, or override the default settings for other Breathe directivesto control what is displayed.
It is preferable to have everything generated at once, e.g. if you wish to host yourdocumentation on Read the Docs. Exhale is configured to enable this directly for you,provided that you have the associated configuration variables setup.
Presumably just specifying INPUT will not be enough, particularly if the Doxygenpreprocessor is not understanding your code. Exhale uses a number of defaultsto send to Doxygen as specified by DEFAULT_DOXYGEN_STDIN_BASE.The way these are used with your argument are as follows:
If you have your own customized Doxyfile, just make sure it is in the samedirectory as conf.py. See the documentation forexhaleUseDoxyfile for items you need to make sure agree withthe configurations you have applied elsewhere to Breathe / Exhale.
So if you were linking to class namespace::ClassName using\ref namespace::ClassName, this would now change to be:class:`namespace::ClassName`. See the Sphinx Cross Referencing Guidefor some more examples. There is also an Intersphinx Guideavailable on the companion website with some examples of linking to macros.
Ventilation imaging can be performed using thoracic four dimensional computed tomography (4D-CT) images (max inhale phase and max exhale phase) and deformable image registration (DIR). If this method was administered in multi institution, some institution would use commercially available automatic DIR software. But, there are not many reports about commercially available automatic DIR. In this study, we evaluated the accuracy of a commercially available automatic deformable image registration (DIR) algorithm using 4D-CT images. For evaluating the accuracy of DIR, registration error was calculated by difference between manual displacement and automatic calculated displacement (DIR outputs). A B-spline DIR algorithm implemented in a Velocity AI ver. 2.7.0 software (Velocity Medial, GA, USA) was evaluated. 4D-CT images including 300 landmarks /case, throughout the lung, provided by DIR-lab (www.dir-lab.com). In this study, five patients were studied. The goal of DIR was to find a point to point correspondence between inhale image and exhale image. First, manual displacement was calculated by land mark points between max inhale phase and max exhale phase. Next, DIR outputs were calculated by a Velocity AI. After that, registration error was calculated by difference between manual displacement and DIR outputs. The mean 3D registration error (standard deviation) for the five cases was 2.70 (2.24) mm. Fewer large errors were seen, but the frequent histogram had a peak at 1.5mm of 3D error, and the frequencies decline as one moves away from the peak. The average 3D registration errors for case1 were 0.94 mm for 1.5 mm motion distance magnitude, 1.96 mm for 6.0 mm and 3.70 mm for 9.0 mm, respectively. Our result clearly shows that the accuracy of DIR in Velocity AI was within 3.0 mm. Therefore commercially available automatic DIR may be useful for image-guided radiation therapy, adaptive radiation therapy and ventilation imaging.
7fc3f7cf58