AceTree: a major update and case study in the long term maintenance of open-source scientific software
AceTree, a software application first released in 2006, facilitates exploration, curation and editing of tracked C. elegans nuclei in 4-dimensional (4D) fluorescence microscopy datasets. Since its initial release, AceTree has been continuously used to interact with, edit and interpret C. elegans lineage data. In its 11 year lifetime, AceTree has been periodically updated to meet the technical and research demands of its community of users. This paper presents the newest iteration of AceTree which contains extensive updates, demonstrates the new applicability of AceTree in other developmental contexts, and presents its evolutionary software development paradigm as a viable model for maintaining scientific software.
Large scale updates have been made to the user interface for an improved user experience. Tools have been grouped according to functionality and obsolete methods have been removed. Internal requirements have been changed that enable greater flexibility of use both in C. elegans contexts and in other model organisms. Additionally, the original 3-dimensional (3D) viewing window has been completely reimplemented. The new window provides a new suite of tools for data exploration.
By responding to technical advancements and research demands, AceTree has remained a useful tool for scientific research for over a decade. The updates made to the codebase have extended AceTree’s applicability beyond its initial use in C. elegans and enabled its usage with other model organisms. The evolution of AceTree demonstrates a viable model for maintaining scientific software over long periods of time.
KeywordsC. elegans 4D 3D Fluorescence microscopy Automated lineaging Embryogenesis Affine transformation Interface
The invariant lineage of the nematode C. elegans  makes the organism a powerful model for studying developmental processes. StarryNite, a software package released in 2006, performs automated lineage extraction by segmenting and tracking fluorescently labeled nuclei in 4D microscopy datasets . AceTree, a companion program built to view and edit the nuclear tracking data generated by StarryNite, facilitates interpretation validation and quality control of StarryNite results .
AceTree, developed beginning in 2005, has since its initial release provided a comprehensive set of tools for interacting with lineage data, both in a 2-dimensional (2D) viewing window where tracks are superimposed on nuclear images and as an abstracted lineage tree . Users can explore their data both in time and space, by moving up and down within and between annotated image stacks. Additionally, a 3-dimensional viewing window provides an abstract view of nuclear positions as a cloud of 3D spheres. This representation of the data provides a more intuitive sense of the positions of cell bodies in space than can easily be achieved by moving between 2-dimensional image slices.
Continuously in use for the 11 years since its initial release, AceTree has been periodically updated to meet the technical and research demands of its community of users. The software has proved to be a useful tool in research, necessitating evolutionary changes as software libraries and microscopy technology have evolved.
AceTree’s latest release provides a multitude of changes aimed at meeting the demands of its community and incorporates new features for visualization and analysis. A large-scale user-interface update adds new tools, removes obsolete ones and facilitates improved accessibility of key functionality. A revised image loading pipeline supports greater flexibility in input images. Revisions to canonical name assignment allow for the free orientation of embryos in 3-dimensional space and an entirely new 3-dimensional viewing window provides a new suite of methods for exploring cell positions.
When AceTree was first released, its primary competitors were Simi BioCell and Angler. Simi BioCell, a commercial product that enables tracking and documenting cellular divisions, is still aimed at manual lineaging , a significant disadvantage to the automated lineaging pipeline in AceTree. Angler, a companion program to the AceDB database that facilitates visualization of DIC (differential interference contrast) microscopy images coupled with lineage data and 3D cell positions , lacks the ability to edit annotation data as is possible in AceTree.
A number of other related software packages and tools have been released since the initial AceTree release that contain similar image analysis, cell lineaging and editing tools. These tools are, for the most part, optimized for managing large datasets and emphasize visualization. The Imaris for Cell Biologists software package contains organism agnostic modules for tracking cell divisions and recording lineages, distributed as a commercial product . In the open-source scientific software community, LEVER and CloneView, VAA3D (3D Visualization-Assisted Analysis), Endrov, and the visualization and lineage curation tool developed by the Keller Lab are worthy of discussion based on their shared functionality with AceTree [8, 9, 10, 11].
LEVER (Lineage Editing and Validation), an image analysis, curation and visualization suite that tracks and analyzes dividing stem cells in large microscopy datasets, automatically generates a lineage tree of clones during cell proliferation. It contains similar editing tools to AceTree and is paired with a powerful web visualization tool called CloneView, but it is limited to 2D image series . VAA3D is a visualization focused software suite that contains analysis modules for neuron tracing which resemble AceTree’s manual curation functionality in 4D image series . Endrov, an image-analysis program last updated in 2013, contains much of the same tracing and lineaging functionality as AceTree, enabling annotation in two and three dimensions . The Keller Lab’s 2014 publication on lineage reconstruction describes a software suite similar to the StarryNite and AceTree suite that they developed to reconstruct cell lineages in large fluorescence microscopy data . The relevant lineage curation and editing tools of their pipeline share the same functionality as AceTree while being optimized for large data sets, though they lack the worm specific features.
While there have been major strides in visualization and lineaging software over the last 10 years, we believe AceTree remains a reliable option for use in embryonic contexts when cell lineaging and manual curation is necessary. AceTree has a history of being used for fully editing large numbers of embryonic lineages, and it is not clear how many of the programs discussed above would scale to complete curation in the C. elegans lineage. Because of its ongoing usage in these contexts for a decade and its special focus on carrying out lineaging and editing tasks, AceTree is the most robustly tested and reliable solution for the embryonic worm.
AceTree is written in Java, and has been updated to Java 1.8 to allow the use of new language and library features and remove dependencies on deprecated libraries. AceTree’s new 3-dimensional visualization window, derived from the WormGUIDES atlas , is written in Java using the JavaFX 8 platform. Development of the software is carried out in the open-source IntelliJ integrated development environment (IDE). The program is packaged as a cross platform JAR (Java Archive) file and has been tested on Linux (Ubuntu 14.04, 16.04), Windows (7 Professional, 10) and macOS (10.13 High Sierra).
Github provides source code and instructions for development setup: https://github.com/zhirongbaolab/AceTree.
The rearranged user-interface also integrates new image controls. The image window now includes zoom and brightness levels controls.
A collection of changes have been made to increase the flexibility and usefulness of AceTree in a variety of developmental contexts. Later stages of C. elegans embryonic development are increasingly accessible due to advances in imaging and techniques for computationally untwisting embryos after muscular twitching begins . In toto imaging of other organisms is also increasingly possible [14, 15] while navigating and interpreting large datasets remains challenging. New AceTree features address previous limitations and benefit the C. elegans research community while in many cases also increasing AceTree’s usability with other model organisms.
Functional name data from the C. elegans Parts List  has been fully integrated into AceTree. Search functionality throughout uses functional and systematic names interchangeably. This extension is useful later in embryonic development as terminal cells can be more easily recognized by their functional names.
Systematic name assignment code has always been built into AceTree. Originally, name assignment was manually rerun when users needed to update naming during tree edits. Now, name assignment is automatically updated with every user edit to the lineage.
AceTree first supported naming only on canonically oriented embryos. Later functionality was added to allow the naming of randomly positioned embryos, removing the need to orient embryos canonically on the slide or in post-processing. However, the assumption remained that embryos were mounted compressed . With this mounting method the Left-Right (LR) axis of the 4-cell stage embryo aligns with the axial direction. Though this mounting is convenient in many circumstances, it is often desirable to image the embryo from different orientations in order to better observe specific structures. Additionally, new imaging approaches, such as the dual-view inverted selective plane illumination microscope (diSPIM) , require an uncompressed mount, meaning embryos can be rotated randomly around their Anterior-Posterior (AP) axis. To support naming in these contexts, a new, optional naming mode has been introduced in which the AP and LR vectors of the 4-cell embryo are directly specified. These values are used to translate between image and canonical embryo space, allowing embryos to be named even when arbitrarily oriented in 3D. Two caveats remain, expected division orientation vectors are still based on data from compressed embryos, and in some cases division axes can be significantly different relative to the body axes under the two mounting conditions, resulting in an increased rate of naming errors. In addition, expected division axes are missing for many tenth round divisions. Naming in these cases continues to revert to default body axis based naming. Collecting empirical division axis expectations for the tenth round and in uncompressed embryos remains future work.
Lastly, AceTree was originally developed to work with 8bit images, but greater bit depth is currently available from most sensors. AceTree has been extended to read 16bit images and dynamically map them to display depth using interactive black and white point controls for each channel.
Many users find it challenging to build up a mental image of the 3D relative positions of objects by moving through an image stack. Often, it is easier to understand the relative position of nuclei in an abstract 3D model. This has made the 3D window an important AceTree feature from its first release. Initially, this window was implemented in Java3D, a high-level scene graph API (Application Programming Interface) for JAVA. Since then, Java3D has become a community source project, no longer directly supported by Oracle . JavaFX is now the regularly maintained, integrated, high level 3D graphics library of the Java Runtime Environment and Java Development Kit (JRE, JDK) .
In addition to a 3D display with controls, this viewer provides a new search interface for data exploration. Users can search for cells and color the nuclear position model by lineage name, functional name, Parts List  description, connectome, gene expression and ancestry.
AceTree has undergone serious revisions in its 11 year lifetime. Its main windows have been largely reorganized and its internal representations extended and generalized. At this point, much of its core functionality has been either greatly extended or entirely rewritten from its initial state.
The continuous evolution of the AceTree software package is an intriguing case study in maintaining actively used scientific software. For over a decade, AceTree has been an important tool for scientific research in developmental biology labs, and has continually evolved to meet technology and research demands.
Typically, software is maintained in two ways, either by a team of dedicated developers in a commercial or infrastructure grant context, or by large scale open-source community efforts. Given its relatively modest but dedicated user base, AceTree has been maintained differently, with a small group of primary developers intermittently working on AceTree at different times during its lifetime. The changes that AceTree has undergone are a product of feedback from its community of users and changes in the software packages that it utilizes.
AceTree is not a heavily funded effort with full time staffers. Rather, AceTree has been maintained over a long period of time by a small circle of core labs that it serves. Maintenance is fueled by researchers who use it, incentivizing its continued availability and application in the community. Often, scientific software is released with the intention of ongoing use and adaptation by the open-source community. In reality, many of these projects are released and never used. AceTree’s continued usage and its responsiveness to the community demonstrate a model for how scientific software can work in the ever changing dynamics of the open-source user community.
AceTree’s development model works by periodically setting long term development goals that require significant developer time. By identifying predictable changes in software APIs, microscopy hardware and research contexts likely to arise in 1 year to 2 year timeframes, we set large development goals to be carried out as changes took place. The redesign of the user-interface to better organize tools and streamline the interface and the creation of a completely new 3D window, as described above, were the most significant of the long term goals. Proactively identifying these goals allowed planning for the developer time needed to ensure that AceTree would continue to be a useful tool.
Given this long term model of development, it was possible to plan when it would be necessary to maintain a dedicated part time developer for AceTree to complete these larger tasks and when maintenance could be performed by a postdoc in the interim periods. Always having someone familiar with the code base, even if they did not devote significant hours to it for long periods of time, ensured that unpredictable changes did not make AceTree unusable or obsolete. The most prominent examples of these unplanned, incremental changes are the iterative updates made to the image loading pipeline discussed above. These changes resulted from new collaborations and contexts that exposed unpredicted usage cases. As a result of maintaining a lab member who was always in a position to modify the codebase, supplemented by a developer when needed, AceTree evolved and remains a useful tool. AceTree’s development model demonstrates that a niche tool can driven by low level, ongoing, and intermittent focused development over a relatively long time frame.
We believe that the success and continued utility of AceTree establishes its evolutionary software development paradigm as a viable path for niche open-source scientific software. By proactively identifying development updates to be completed over longer periods and maintaining at least minimal development ability in house at all times, open-source scientific software can evolve with the predictable changes in research contexts, and be well positioned to respond to unforeseen changes. We felt it compelling to present this release of AceTree and its development model both because the updates significantly widen the possible community of users, and as an example of the practical concerns encountered when maintaining a fairly complicated code base over a decade timescale with limited developer resources.
Some of the new features available in the software required building interfaces between old and new code. Two main interfaces are worthy of detailed description. First, in order to maintain the original lineage naming paradigm yet allow users to lineage uncompressed embryos, we created a new method for transforming an uncompressed embryo’s orientation to the expected canonical orientation. Second, to utilize AceTree’s internal data representation in the context of the 3D window built for WormGUIDES, we created an abstract interface for representing the underlying lineage data that adheres to the StarryNite model specification.
To support uncompressed reorientation, we created the CanonicalTransform class to transform any orientation supplied by the user to the canonical orientation of C. elegans (anterior to the left and dorsal up) , an internal requirement of AceTree for lineage naming as division expectations are stored in a canonical coordinate system. The user defines the 3-dimensional orientation of the embryo by supplying two vectors, AP and LR, in the metadata AuxInfo_v2.xml file. The CanonicalTransform class finds the transform from these vectors to their canonical orientations by computing the axis-angle representation of the transform . The transform calculation includes the special degenerate cases of the axis-angle representation when the supplied axis is already canonical or flipped-canonical i.e. collinear. The two resulting transformation matrices, AP and LR, are then concatenated to create a single, affine transformation. This transform is then applied to all division axes before they are propagated to existing naming code which assigns lineage names based on the direction of these divisions in a canonical orientation.
To interact with the AceTree data representation in a WormGUIDES context, we created the NucleiMgrAdapter class to package AceTree’s data orderly and efficiently. The NucleiMgrAdapter class in AceTree’s source code implements the LineageData interface defined in the WormGUIDES package. This adapter bundles AceTree’s internal representation of the nuclei files, defined in the NucleiMgr class, into a form interpretable by WormGUIDES via the LineageData interface. This adapter is used to instantiate a WormGUIDES application instance in the WormGUIDESWindow class on a dedicated thread.
Availability and requirements
Project Name: AceTree.
Project Home Page: https://github.com/zhirongbaolab/AceTree.
Operating Systems: Linux, Windows, macOS.
Programming Language: Java.
Other requirements: JRE 1.8 or higher.
License: GNU GPL.
Any restriction to use by non-academics: None.
Thanks to current and former Bao Lab members Pavak Shah, Li Fan and Zhuo Du for their advice and feedback on AceTree features, also to all the WormGUIDES team, especially PIs Daniel Colon-Ramos, Hari Shroff, and Bill Mohler. Special thanks to all those in the Waterston Lab at University of Washington who originated the project, particularly to the late Thomas Boyle, AceTree’s original developer, for his initial assistance in navigating the source code.
This work was supported by NIH grants U01 HD075602 and R24OD016474 and GM097576.
Availability of data and materials
ZB and AS designed the software features. BK, DT, and AS engineered and programmed the software. BK wrote the manuscript with significant input from AS and ZB.
Ethics approval and consent to participate
Consent for publication
The authors declare that they have no competing interests.
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
- 1.Sulston JE, Schierenberg E, et al. The embryonic-cell lineage of the nematode Caenorhabditis-Elegans. Dev Biol. 1983;100(1):64–119. Article: https://www.sciencedirect.com/science/article/pii/0012160683902014. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/6684600. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Sulston%2C+J.+E.%2C+E.+Schierenberg%2C+et+al.+The+Embryonic-Cell+Lineage+of+the+Nematode+Caenorhabditis-Elegans&btnG= CrossRefPubMedGoogle Scholar
- 2.Murray JI, Bao Z, et al. The lineaging of fluorescently-labeled Caenorhabditis elegans embryos with StarryNite and AceTree. Nat Protoc. 2006;1(3):1468–76. Article: https://www.nature.com/articles/nprot.2006.222. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/17406437. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=https%3A%2F%2Fwww.ncbi.nlm.nih.gov%2Fpubmed%2F17406437&btnG= CrossRefPubMedGoogle Scholar
- 3.Bao Z, Murray JI, et al. Automated cell lineage tracing in Caenorhabditis elegans. Proc Natl Acad Sci U S A. 2006;103(8):2707–12. Article: PubMed: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1413828/ Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Bao%2C+Z.%2C+J.+I.+Murray%2C+et+al.+Automated+cell+lineage+tracing+in+Caenorhabditis+elegans&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 4.Boyle TJ, Bao Z, et al. AceTree: a tool for visual analysis of Caenorhabditis elegans embryogenesis. BMC Bioinformatics. 2006;7:275. Article: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-7-275. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/16740163 Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Boyle%2C+T.+J.%2C+Z.+Bao%2C+et+al..+AceTree%3A+a+tool+for+visual+analysis+of+Caenorhabditis+elegans+embryogenesi&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 5.Cell research software Simi BioCell. In: Cell research. Simi reality motion systems. 2014. http://www.simi.com/en/products/cell-research/simi-biocell.html. Accessed 19 Feb 2018.
- 6.Martinelli SD, Brown CG, Durbin R. Gene expression and development databases for C. Elegans. Semin. Cell Dev Biol. 1997;8:459–67. https://www.ncbi.nlm.nih.gov/pubmed/9441951.
- 7.Imaris for Cell Biologists. Bitplane. http://www.bitplane.com/imaris-for-cell-biologists. Accessed 19 Feb 2018.
- 8.Winter MR, et al. Computational image analysis reveals intrinsic multigenerational differences between anterior and posterior cerebral cortex neural progenitor cells. Stem Cell Rep. 2015;5:609–20. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/26344906. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Computational+Image+Analysis+Reveals+Intrinsic+Multigenerational+Differences+between+Anterior+and+Posterior+Cerebral+Cortex+Neural+Progenitor+Cells&btnG= CrossRefGoogle Scholar
- 9.Vaa3D. Allen institute for brain science. In: Allen Institute; 2017. http://www.alleninstitute.org/what-we-do/brain-science/research/products-tools/vaa3d/. Accessed 19 Feb 2018.Google Scholar
- 10.Henriksson J, Hench J, Tong YG, Johansson A, Johansson D, Burglin TR. Endrov: an integrated platform for image analysis. Nat Meth. 2013;10(6):454–6. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/23722203?dopt=Abstract. Google Scholar: https://scholar.google.com/scholar_lookup?title=Endrov%3A%20an%20integrated%20platform%20for%20image%20analysis&author=J.%20Henriksson&author=J.%20Hench&author=YG.%20Tong&author=A.%20Johansson&author=D.%20Johansson&author=TR.%20Burglin&journal=Nat%20Methods&volume=10&issue=6&pages=454-456&publication_year=2013 CrossRefGoogle Scholar
- 11.Amat F, Lemon W, Mossing DP, McDole K, Wan Y, Branson K, et al. Fast, accurate reconstruction of cell lineages from large-scale fluorescence microscopy data. Nat Meth. 2014;11(9):951–8. PubMed: https://www.ncbi.nlm.nih.gov/pubmed?cmd=Search&doptcmdl=Citation&defaultField=Title%20Word&term=Amat%5Bauthor%5D%20AND%20Fast%2C%20Accurate%20Reconstruction%20of%20Cell%20Lineages%20from%20Large-Scale%20Fluorescence%20Microscopy%20Data. Google Scholar: https://scholar.google.com/scholar?q=Fast%2C+Accurate+Reconstruction+of+Cell+Lineages+from+Large-Scale+Fluorescence+Microscopy+Data+Amat+2014 CrossRefGoogle Scholar
- 12.Santella A, Catena R, Kovacevic I, et al. WormGUIDES: an interactive single cell developmental atlas and tool for collaborative multidimensional data exploration. BMC Bioinformatics. 2015;16(1):189. https://doi.org/10.1186/s12859-015-0627-8. Article: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-015-0627-8. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/26051157. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Santella+A%2C+Catena+R%2C+Kovacevic+I%2C+et+al.+WormGUIDES%3A+an+interactive+single+cell+developmental+atlas+and+tool+for+collaborative+multidimensional+data+exploration&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 13.Christensen RP, Bokinsky A, Santella A, Wu Y, Marquina-Solis J, Guo M, Kovacevic I, Kumar A, Winter PW, Tashakkori N, et al. Untwisting the Caenorhabditis elegans embryo. elife. 2015;4:e10070. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/26633880. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Christensen+RP%2C+Bokinsky+A%2C+Santella+A%2C+Wu+Y%2C+Marquina-Solis+J%2C+Guo+M%2C+Kovacevic+I%2C+Kumar+A%2C+Winter+PW%2C+Tashakkori+N%2C+et+al.+Untwisting+the+Caenorhabditis+elegans+embryo&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 14.Lemon WC, Pulver SR, et al. Whole-central nervous system functional imaging in larval Drosophila. Nat Commun. 2015;6:7924. https://www.nature.com/articles/ncomms8924. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/26263051. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=+Lemon%2C+W.+C.%2C+S.+R.+Pulver%2C+et+al.+Whole-central+nervous+system+functional+imaging+in+larval+Drosophila&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 15.Ahrens MB, Orger MB, et al. Whole-brain functional imaging at cellular resolution using light-sheet microscopy. Nat Meth. 2013;10(5):413–20. Article: https://www.nature.com/articles/nmeth.2434. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/23524393. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Ahrens%2C+M.+B.%2C+M.+B.+Orger%2C+et+al.+Whole-brain+functional+imaging+at+cellular+resolution+using+light-sheet+microscopy&btnG= CrossRefGoogle Scholar
- 16.Kumar A, Wu Y, et al. Dual-view plane illumination microscopy for rapid and spatially isotropic imaging. Nat Protocols. 2014;9(11):2555–73. Article: https://www.nature.com/articles/nprot.2014.172. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/25299154. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=Kumar%2C+A.%2C+Y.+Wu%2C+et+al.+Dual-view+plane+illumination+microscopy+for+rapid+and+spatially+isotropic+imaging&btnG= CrossRefPubMedGoogle Scholar
- 17.Keller PJ, et al. Fast, high-contrast imaging of animal development with scanned light sheet-based structured-illumination microscopy. Nat Meth. 2010;7:637–42. PubMed: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4418465/. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=fast%2C+high-contrast+imaging+of+animal+developent+with+scanned+light+sheet-based+structured-illumination+microscopy&btnG= CrossRefGoogle Scholar
- 18.Korotkevich E, Niwayama R, Courtois A, Friese S, Berger N, Buchholz F, Hiiragi T. The apical domain is required and sufficient for the first lineage segregation in the mouse embryo. Dev Cell. 2017;40:235–47. https://doi.org/10.1016/j.devcel.2017.01.006. PubMed: https://www.ncbi.nlm.nih.gov/pubmed/28171747. Google Scholar: https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=the+apical+domain+is+required+and+sufficient+for+the+first+lineage+segregation+in+the+mouse+embryo&btnG= CrossRefPubMedPubMedCentralGoogle Scholar
- 19.Java 3D API. In: Java SE Desktop Technologies. Oracle. http://www.oracle.com/technetwork/articles/javase/index-jsp-138252.html. Accessed 10 Nov 2017.
- 21.Jacobson N. Basic Algebra I: Second Edition. Mineola, NY: Dover Publications; 2009.Google Scholar
Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made. The Creative Commons Public Domain Dedication waiver (http://creativecommons.org/publicdomain/zero/1.0/) applies to the data made available in this article, unless otherwise stated.