Sunday, May 31, 2026

Introduction of Bond Addition Tool

Release 4.6.1

With this update, the user is now able to add bonds of the single, double, and triple variety to the molecule as well as update existing bonds. While this process is an alternative modality to directly adding atoms, alkane chains, and custom groups to the molecule, adding a single bond is essentially the same as adding a lone carbon atom. The impetus for this feature addition was to provide the user with an optional approach they might be more comfortable and familiar with.


Standards: No new standards of note needed to be followed as this was an update to the interface.

Controls: To use the bond addition tool, the user first clicks on the wand/Bond Creator icon to select the tool, then clicks to select one of the bonds (single, double, or triple). The user then clicks in the workspace either on an existing atom to create a new bond, or an existing bond to update it. If the atoms involved in the bond have enough free electrons to support the selected bond, it will be updated. If not, no changes will be made. 

Future Considerations: In addition to the bond type selection tool, plans are underway to allow the user to manually add either a wedge or dashed bond shape. Currently the z direction of the newly created bond is not directly left to the user; it is instead assigned based on the order the children atoms are added with the option to rotate the order to change stereochemistry. This update would allow the user to explicitly direct the shape of a bond in the z direction and conversely to flatten an existing wedge or dashed bond. Some thought will be put into this next update, as one of the guiding principles of the interface is to only allow the user to create scientifically and chemically valid molecules. Any and all suggestions are welcome!

Saturday, November 8, 2025

Facelift for Reaction and Pathway Pages, SMILES format read support, Video Tutorials

Release 4.6.0

No doubt the Molecular Pathway Generator blog reader will be most enthralled by the addition of full feature video tutorials starring yours truly this update. These were recorded and added to provide clear explanations as a companion to using the interactive tutorials on the main Home Page. They can be viewed by clicking the "Tutorials!" button. If the button is not visible, the information icon can be clicked to display it.





Additionally, the Reaction and Pathway information pages were given a redesign. The Pathway updates were performed simply to provide a cleaner interface that also works better on small screens. In addition to some cosmetic reworking, the Reaction updates now display information from a freely available source such as Wikipedia or Chemistry LibreTexts in the larger screen versions of the app. The decision to utilize well accredited third party sources was made to provide the user with the most up-to-date, accurate, and complete information about a given reaction. The reaction pages still contain a reaction simulator function, as well. A default, starting molecule was chosen to demonstrate each reaction. The user can edit this starting molecule as desired by either using the molecule editor tool or changing the molecule name and then clicking the reaction icon to simulate the reaction for the new given starting molecule. 

Finally, SMILES format read support was added. The user can now enter the name of the molecule in SMILES format in the molecule editor to view the molecule, similar to entering the IUPAC name of the molecule. This will also work if the savvy user wishes to enter the SMILES format name of a molecule in the direct molecule link, such as for methanol: https://www.organicchemmaster.com/MolGen/Molecules/CO

Standards: For this update, the responsibility of the standards was actually primarily offloaded to known, accredited sources including Wikipedia, Chemistry LibreTexts, and PubChem. One of the overarching goals of the Molecular Pathway Generator site has been and will continue to be to use as many existing resources as possible and aim to build on what they already accomplish rather than reinvent the wheel. This maxim is applied for both external chemistry resources used as well as internal engineering principles. 

Controls: Fairly intuitive with this update, however a few brief notes.

  1. The user can now enter the name of a molecule in proper SMILES format in place of a common name, amino acid abbreviation, or IUPAC name to view the molecule. This is performed simply by entering the SMILES format name in one of the molecule name boxes and pressing "enter".
  2. Video tutorials can be viewed by clicking the "Tutorials!" button on the Home Page. If this button is invisible the user can click on the i "information" icon to view the context panels. The user can either view the video tutorial on a standalone basis or view as they perform one of the interactive tutorials. 
Future Considerations: Definitely providing an on the fly SMILES format name of a molecule as the user edits it will be on the radar for future features. Also, a video highlighting the most powerful features is in the works. Anything else? Comments on the interface?? Keep reacting!

Monday, March 24, 2025

Let's Get Back Up to Date: Zig Zag Alkane drawing tool, Reaction Simulator Mode, Reimagination of Home Page, Updated Tutorials, Display Fixes, Target Aid

Release 4.5.0

It has been a hot minute! So what has been happening in the world of Molecular Pathway Generator since our OChemdle tournament in 2022? Mainly, updates to our interface. The overarching hope has been to provide our users with a more intuitive, enjoyable, and informative experience. 

Much of the renewed impetus for improving the site was actually due to inspiration from having our first intern involved in the project; a brilliant pre-medicine student currently at M.I.T. who reached out expressing interest in contributing to the project while working through her Organic Chemistry coursework! 

And on with the updates. To begin, a zig-zag alkane drawing feature has been added to the molecule design tool. This addition was designed to allow a more robust experience while creating a straight chained alkane or adding one to an existing molecule. Previously, an alkane chain could be created or added to a molecule ONLY by selecting one of the pre-defined length alkanes and then clicking in the workspace or dragging the alkane to the workspace. With the new feature, the user can ALSO click to begin drawing an alkane segment, drag to expand or contract the length of the alkane segment, and when the desired length of the segment is reached release the click. The alkane segment length will update in real time in response to the drag.

Next, the Reaction Simulator feature, that was previously present only in the Reactions section, has been brought to also feature more prominently on both the Home page and the Molecules section. This feature allows the user to predict the outcome of applying one of the supported reactions to a given molecule. 

While in the Molecules section, the user can alternate between the "Pathway Solve" and the "Reaction" modes. The transition between the two modes was designed to be seamless, so the user can, for example, search for a pathway from one molecule to another molecule that was predicted as part of the Reaction Simulator. Transition between the two modes is performed in the Molecules Section simply by clicking the button that contains the text "Pathway Solve" or "Reaction Mode". 

The user can also switch between using the controls in Reaction Simulator mode and Pathway Solver mode while on the Home Page. 

More generally, the Home Page was reimagined as a showcase of five of the major features of the site: 

  1. The IUPAC Name Generator
  2. View Molecule by IUPAC Name
  3. Reaction Simulator
  4. Pathway Solver
  5. Metabolic Pathway Viewer.
The goal of the redesign is to showcase the power of the site more immediately to the new user with more interactive, lighter versions of the full fledged tools. Concretely, the first four features of the new home page were implemented using three components: one or two instances of the molecule design tool and a controls section. The controls section is specific to each feature. 

The molecule design tool featured in the Home Page is from an engineering and interface standpoint the same exact tool as featured in the Molecules section, but with some styling reworked and some features (such as the toggle between using stereochemistry) omitted. This approach was taken to follow the DRY (do not repeat yourself) principle and also allow for future possibilities of appropriating the tool on the site or externally. For the user, this means that any updates to the molecule design tool will affect both instances.

Links were added below the new section of the Home Page to allow exploring each of the features in more depth.

Updating the tutorials with the new interface updates was pretty straightforward. Care was taken to make the tutorials work properly with the new versions of the features on the Home Page. 

Some minor display fixes were made. Specifically, to prevent atoms in side chains from being positioned over other atoms when viewing the molecule. This was previously noticeable in the molecule acetaminophen but since has been resolved.

Finally, a target aid indicator was added to the molecule design tool. This simply displays a small light blue sphere when the user's pointer is over either an atom or a bond. This indicator should improve the experience of designing a molecule by giving the user feedback of the pointer position.

Standards: As this update was exclusively an interface level update, no additional standards were needed to be followed.

Controls: 
  1. The Home Page now allows the user to select a link from the sub navigation menu to access a panel representing one of the five major features of the site. Tutorials explain each section.
  2. While in the Molecules section, the user can click the Reaction Mode/Pathway Solve button to toggle between the two calculator modalities.
  3. The Reaction Simulator mode can now be performed in both the Home Page and the Molecules section as follows: i) Design a molecule or create a molecue by entering the molecule name in the Reactant section. ii) Select a reaction to perform on the reaction via the Select Reaction tool. iii) View the predicted product in the Product section.
  4. The zig-zag alkane drawing tool can be used as follows: i) Click on the wand/Bond Creator icon to select the tool. ii) Click on either an existing atom or a blank section in the workspace and hold to begin the drag. iii) Drag the pointer to extend or shorten the length of the desired alkane addition. iv) Release the click and the new alkane will be added to the workspace.
  5. When the user's pointer is over a bond or an atom in the current workspace molecule, a light blue sphere will display as an indicator.
Future Considerations: Should any other features of the site be prominently displayed in the home page? Should the information blurbs be updated? Concerning the zig-zag alkane drawing tool, it might make sense to also introduce a sub-feature where the user can select the end of the drag to be another atom in the molecule and automatically create an appropriately lengthed connection. Are there any other helpful feedback indicators that can be added to the interface?




Sunday, November 6, 2022

OChemdle

In light of the recent popularity of games such as Wordle and its offshoots (Worldle, Octordle, Semantle, Redactle, etc), a conversation began among a number of my friends concerning what our own idiosyncratic *tle/*dle games might be. One friend suggested, for me specifically, Ochemdle. The wheels started turning. In my mind I knew that the closest existing game for what I envisioned Ochemdle to resemble would be Semantle. That is, the basic game play would involve a user entering the IUPAC name of an organic molecule supported by the interface (as opposed to a word) and being given a similarity score in response. This process would then repeat until the user guessed the exact mystery organic molecule. 

Developing the first draft of OChemdle was rather straightforward. I figured the game would be easier and more interesting if after the used type the guessed IUPAC name, a visual representation of that molecule was displayed, so I utilized the existing molecule drawing engine to make this feature possible.  One friend suggested I make this feature update in real time while the name was typed, so that too was implemented. Coming up with an algorithm for how the similarity score is calculated took a bit of trial and error. I won't divulge the entire details of how this works for sake of not providing an advantage, but essentially the calculation looks at the functional groups and atoms present in both the user's guess and the secret organic molecule to determine the similarity. https://organicchemmaster.com/chemdle The final task for the first draft involved coming up with a list of secret organic molecules. 

After coming up with a basic prototype for how the game would work, I decided to publicize it a bit to see if I could get some enthusiasm or at least feedback. And I did get some. https://www.reddit.com/r/OrganicChemistry/comments/v267vg/ochemdle/

One immediate suggestion was adding hints to the game. The ability to view both the degrees of unsaturation of the molecule and the chemical formula of the molecule was added. A leaderboard was also added. And finally, the suggestion of running an entire "OChemdle tournament" was implemented. Thanks to https://www.reddit.com/user/Bubzoluck for these suggestions!

The results of the OChemdle tournament can be viewed here: https://www.reddit.com/r/OChemdle/comments/ynkmwx/tournament_winner_and_wrapup/

Future Considerations: Will there be another OChemdle tournament? Any suggestions for future themes? Further feedback on OChemdle?

Wednesday, September 29, 2021

Introduction of pinch zoom controls for small screen devices

 Release 4.4.1

A very quick update. Per feedback from various sources, I decided it was time to add pinch zoom functionality to the small screen version of the app. Not only did people directly comment that this would be a more intuitive approach, I had also observed people naturally attempting the pinch gesture to zoom in and out of a molecule while using a phone to view the app.

Some tweaking was done to modify the sensitivity of reacting to the pinch gesture as well as to occlude any panning activity from being performed simultaneously. An update was also made to not automatically re-center the molecule upon a zoom in or zoom out. Finally, the plus and minus icons were removed from the small screen version of the app as they are no longer needed for the zoom functionality. This removal has allowed more precious small screen real estate to be used.

Controls: A pinch in gesture will now cause a zoom in effect on the molecule. Similarly, a pinch out gesture will cause a zoom out. This was primarily designed to be effective on small screen devices, but other devices that register touch events, such as a laptop with a touch screen, will also support this control.

Future Considerations: Controls to rotate the molecule are being considered as well.

Saturday, August 28, 2021

Support for diesters, Benzoin condensation reaction, and Dieckmann condensation reaction

Release 4.4.0

For this update, as a change of pace, attention was turned towards the educational application of the site, namely the modeling of two new reactions: the Benzoin condensation reaction and the Dieckmann condensation reaction. Inspiration for modeling these reactions came directly from an organic chemist and lecturer from the region of West Bengal in India! I am actually very excited about this request and highly encourage other chemists and chemistry teachers to provide similar requests!

Benzoin Condensation Reaction: Modeling of the Benzoin condensation reaction was straightforward. Some work was done to verify that both the interface and search engine could support the molcule benzoin, but after that the work done was primarily to introduce the rules used for the reaction. An example search for a pathway from benzaldehyde to benzoin can be found here: https://www.organicchemmaster.com/Molgen/Reaction/benzaldehyde/benzoin?options=Calc,Reac

Dieckmann condensation reaction: Modeling of the Dieckmann condensation reaction proved more difficult, primarily because support for diesters (and similarly diethers) was a prerequisite. The molecule chosen to model for the reaction was ethyl,methyl hexanedioate. The most difficult implementation challenge of adding support for diesters was to invent a means to distinguish between the two ester radicals, namely the ethyl and methyl radicals, in the model. And to which Oxygen the two radicals were attached. Otherwise, the modeling for the reaction itself was relatively straightforward, though some special care was taken when converting the molecule to a cycloalkane. 

As a product of the Dieckmann condensation reaction applied to ethyl,methyl hexanedioate is methyl (1S)-2-oxocyclopentane-1-carboxylate, it was also necessary to introduce support in the interface and search engine for cycloalkanes with an attached ester. This required updates to the nomenclature engine.

An example search for a pathway involving Dieckmann condensation can be found here: https://tinyurl.com/5cet2mpv.

Standards: The usual IUPAC naming standards were followed. In particular, nomenclature support for cycloalkanes with ester side chains was added, e.g., carboxylate and benzoate. 

Controls: No new controls were added for this update. However, an auto-scaling feature was added to display the proper size of more complex molecules in the pathways view.

Future Considerations: Hopefully there will be requests for more reactions and more complex molecules from chemists and lecturers in the future!

Saturday, November 28, 2020

COVID-19: II. Remdesivir

Release 4.3.0

With hydroxychloroquine no longer a candidate for treating COVID-19, it was time to turn attention towards modeling the more likely helpful, yet more complex molecule, Remdesivir. This proved to be a daunting task. Rather than attempting to model Remdesivir entirely at once, the approach was taken to divide the molecule into four separate moieties. After modeling each of the four moeities indivdually, the plan would then be to combine the four moieties into the larger final molecule, Remdesivir.

More concretely, the steps taken for modeling were the following:

  1. Model the most complex of the four moieties, the fused ring structure containing a pyrrole azine fusion.
  2. Model the second most complex of the moieties, the structure containing the furan ring to which the pyrrole azine is attached. 
  3. Model the phosphoryl group to which the furan is attached.
  4. Model the structure containing the ester linkage to which the phosphoryl group is attached.
  5. Once all four groups were properly modeled individually, model all three combinations of two adjacent groups connected to each other. That is: the pyrrole azine and furan ring group, the furan ring and phosophoryl group, and finally the phosphoryl group and the ester containing group.
  6. Once the three combinations of adjacent groups had been properly modeled, model the two combinations of three adjacent groups. That is: the pyrolle azine, furan ring, and phosphoryl group combination; and the furan ring, phosphoryl group, and ester containing group combination.
  7. Finally, model all four individual groups as attached to each other thus forming Remdesivir.
While steps 5 and 6 were not explicitly necessary for joining the individual four moeities together to synthesize the overall model of Remdesivir, they did serve as very useful test cases. A bit more in depth on each of the four moeities follows:

Pyrrole Azine moeity: Initially, the nomenclature of this moeity was beyond the scope of my organic chemistry knoweldge. As such, my first step was to personally study a guide for fused-ring arenes and heterocycles. Once I felt confident enough, I went ahead and created the nomenclature logic, which is as follows: 
  1. When checking the locant numbering for a bicyclo fused ring, check if the ring is napthalene. If not, proceed to step 2.
  2. Check if the ring is aromatic. If so, proceed to step 3
  3. Determine the name of the components of the fused ring (each indvidual ring).
    • Determine the main component (larger bridge length) and side component (smaller bridge length). 
    • Name the main and side components
    • Generate the fusion numbering (following the format ([matching locant 1 of main component, matching locant 2 of main component - matching face of side component]) where the matching locants and faces are the two atoms that are found in both components
    • Generate full fusion name of both components including fusion numbering
  4. Recheck the locant numbering for the newly created fused ring using proper fused ring locant rules.
  5. Name the entire fused ring using the full fusion name as the name of the primary skeleton (thus ignoring all heteroatoms and pi bonds in the fused ring as they have already been accounted for). Normal rules for naming primary and auxiliary functional groups as well as radical locants apply.
Furan Ring moeity: This moeity was certainly less complex that the previous one. The main challenge was to appropriate the nomenclature specific for furan molecules. Particularly, detecting if the ring is of the furan family first, and then determining how many of the normal two double bonds were saturated and applying the locants for the hydrated Carbons appropriately. One other challenge was properly handling side skeletons when determing stereochemistry of each Carbon in the tetrahydrofuran.

Phosphoryl Group moeity: The phosphoryl group moeity was even less complex still than the furan ring, but it still had one tricky part, namely the fact that the primary skeleton contained zero Carbon atoms. This challenge was overcome by recognizing a phosphoryl component via its length of one (a Phosphorous atom) and the attachments of dual hydoxy groups and one carbonyl group. Once this detection was acccomplished, all attachments could be named as normal following the (attachment 1 name - attachment 2 name)phosphoryl convention. Specifically, an extra methane was used while modelling this group to be able to name the phosphoryl group properly as a radical.

Propanoate Ester moeity: Finally, and the least complex of all moeities was the propanoate ester group. Support for this group had actually already been entirely in place, although there was room for further ester group testing.

Once all four moeities had been modelled and named properly, it was time to begin the synthesis of modelling the three combinations of two adjacent groups. The combinations in more depth as follows:

Pyrrole Azine and Furan Ring: Certainly the most complicated of the three combinations of two adjacent groups. The first challenge was to provide the user with a convient way to add a skeleton attachment at a SPECIFIC location of the attachment to the existing part of the molecule in the interface. The impetus for this interface enhancement actually BEGAN with the modeling of chloroquine, but was delayed for the time being as it was not necessary for the user to create chloroquine in the interface. As the pyrrole azine ring was attached to the furan ring specifically at its number 7 locant, this combination NECESSITATED the creation of such an enhancement.

After hashing out a few different ways of specifying which atom of the new skeletal attachment should be attached to the target atom of the existing molecule in the workspace, I decided to go with handling a a new event. The user now has two options when adding a skeletal attachment to the molecule: 
  1. The existing way. That is, clicking on the attachment and dragging it to a specific target atom on the molecule. By default, this will attach the atom numbered 1 of the new attachment.
  2. If the user instead clicks and HOLDS on the attachment for one second (a long press event), the attachment will then be expanded and the user will be able to click on which specific atom of the new skeletal attachment they want to attach to the target atom of the existing molecule. The user can then drag the skeletal attachment as usual to a target atom on the molecule. 
This interface enhancement will allow creation of Remdesivir and also allow easier creation of cholroquine.

The only other challenge at this step was creating and running test cases to ensure that the stereochemistry still works properly with a radical attached not at the number one locant of the radical. 

Furan Ring and Phosphoryl Group: Again, methane was used as the primary skeleton to which the phosphoryl group was attached for sake of only needing to develop nomenclature for the phosphoryl group. This combination was rather straight forwards to model and test. The one tricky part was implenting proper use of enclosing characters (parentheses, brackets, braces) for nested and complex enough side chains. The convention used was, from outer most enclosing characters to inner most: braces, brackets, parenthesis. The reader who is also a coder might appreciate the importance in separating nomenclature demarcations from coding symbols!

Phosphoryl Group and Propanoate Ester Group: Fortunately, the work in modeling a phosphoryl radical with a primary skeleton of methane proved useful in this step. Otherwise, the one tricky part was handling the nomenclature convention of treating the phosphoryl radical attached to the amino group as  phosphoryl)amino as opposed to N-phosphoryl-2-aminopropanoate. This was essentially handled with a special case for when such a group occurs. This case may be more generalized in the future.

And with those three combinations modeled and tested, it was time to turn our attention towards the two combinations of three adjacent moeitieis attached. The two combinations in more depth:

Pyrrole Azine and Furan Rings and Phosphoryl Group: The challenges for joining these three groups together were rather straightforward. One involved testing the need for doubly nested side chain enclosing characters. A number of test cases were developed to aid in getting this correct. The other challenge, while still straightforward, was rather tedious: verifying the proper stereochemistry of all the atoms in the furan ring with the complexity of the larger molecule. Many test cases and some very scrupulous debuging was required. Both for the interface and the search engine. 

Furan Ring, Phosphoryl Group, and Propanoate Ester Group: VERY fortunately, modeling these three groups worked immediately without the need for any additional code updates.

Remdesivir: With all the pieces in place, as well as all the pieces of all the pieces in place, it was now time to combine all four individual moeities at once into the larger, final molecule, Remdesivir. Also like the previous step, modeling Remdesivir worked immediately without the need for any additional code updates. The one decision made was, since we now have TRIPLY nested side chains, to use braces again to enclose a side chain which contains braces already. This convention may change in the future, but it does not introduce any ambiguities in the full IUPAC name. 

And with Remdesivir fully modeled, this update has been officially finished.

Standards: Existing IUPAC naming conventions were followed as usual. In particular, the fused ring nomenclature including naming of primary and side components as well as fusion numbering and ring numbering after the fusion naming used the following article: Rasmussen, S.C. The nomenclature of fused-ring arenes and heterocycles: a guide to an increasingly important dialect of organic chemistry. ChemTexts 2, 16 (2016). 

The order of enclosing demarcations followed was from outer most side chain to inner most side chain: {}, [], () with braces being used to handle nested side chains beyond three levels.

The convention for naming a phosphoryl group attached to an amino group were followed per the PubChem article on Remdesivir.

Controls: The main enhancement for this update was to allow the user to specify which atom of a new alkane chain attachment to attach to the existing molecule. This was accomplished by introducing a long press event to the alkane chain attachments. The user will first press and hold on an alkane chain for one second which will cause that alkane chain to be zoomed in on. Next, the user will drag the mouse over the atom they wish to attach to the existing molecule. Finally, the user will drag the new alkane chain over the existing molecule. If the long press event is not triggered, by default the first atom of the new alkane chain will be attached to the existing molecule.

Future Considerations: Well the FOREMOST question to ask is will Remdesivir continue to be used in treatment for Covid-19 symptoms. And if so, in what way can this site most specifically aid in production of Remdesivir. The first idea I have to continue down this path is to fully model a syntehsis pathway of the drug, as was modeled for pyrimethamine. This will hopefully aid in the detection of any future more efficient or cheaper production models.

Otherwise, with the increasing complexity of molecules being modeled, it's clear the zoom out automatic detection need to be improved. 

Some more accurate zooming functionality for an alkane side chain attachment after the long press event would be helpful. A tutorial update would also be useful for users new to this task.

Finally, implementing a rotating clockwise and counterclowise set of buttons would be useful for examing certain parts of the more complex molecules. Work has actually already begun on this enhancement. 

Tuesday, November 10, 2020

COVID-19: I. Chloroquine

2020 has been an unprecedented and disorienting year for everyone. To be honest, I had to look back through my notes to really put myself in pre-Covid frame of mind to make a reasonable transition for this update. What were the goals, concerns and hopes for the site back in February 2020? And after the refreshing from my search, I did remember that a recent objective the pathway search engine had accomplished was to independently discover a synthesis pathway for Daraprim (pyrimethamine). And as always, finding ways to improve the interface and make it more user friendly was a high priority. 

But when the world changed in mid-March, I decided that I would spend as much energy as I had for the site to see if I could possibly contribute to the fight against Covid-19. I knew that it might be a long shot, and of course any work here does not merit comparison with that of our front line and essential workers, but I did want to see if there is any part the site could play in helping the world solve the pandemic.

The first idea I came up with was to model one of the most promising drugs for treatment of Covid-19. In April, I considered modeling either Remdesivir or Chloroquine. Looking at the chemical structure of the two, I considered the modeling of Chloroquine far more feasible. In fact, some of the moieties of the Remdesivir structure I had not yet acquired the chemical knowledge to model or even properly name. And at the time, Hydroxychloroquine was legitimately being considered as an effective treatment.

The first step to implement support for Chloroquine was to look at the base fused ring component of the molecule. Fortunately, support in the interface was already in place for bicyclo[4.4.0]decane, so support only had to be added for the aromatic version of the fused ring, napthalene, and then afterwards the more specific version quinoline. Support for these two mainly involved updating the IUPAC naming engine. 

Next, support for tertiary amines needed to be added to handle the N,N-diethylpentan-2-yl side chain protruding from the amino group located at locant number 5 of the quinoline. This adjustment to the interface proved to be straight forward as well. I did make a mental note at the time that it would be MUCH more efficient to allow the user to select which carbon of an alkane chain addition they wished to attach to the current molecule; the process at the time of adding a pentan-2-yl side chain involved first attaching a butyl and then attaching a methyl to the head of the butyl. 

Finally, I took a look at the resulting chloroquine molecule and thought to myself hmm, this is getting pretty convoluted and messy. And as the site is also optimized to work on a small screen device, cleaning it up became even more of a priority. I decided to implement a mode by which the user could view the molecule in a line structure format: where carbons are represented by a point and other atoms by their chemical symbol. After this clean up optimization, the resulting chloroquine molecule is easier to view and interact with.

Standards: Existing IUPAC naming conventions were again followed in the modeling of chloroquine. Specifically, once the interface recognized that the bicyclo[4.4.0]decane skeleton was aromatic, it named it as napthalene. Furthermore, once it recognized a napthalene with a nitrogen heteroatom at the 1 locant, it named it quinoline. There was some trial and error involved to ensure proper stereochemistry naming resulted.

Numbering of locants for the napthalene and quinoline molecules follows the rules per Organic Nomenclature.

Controls: The "View Atom Abbreviation Mode" toggle was added to the control buttons. This allows the user to toggle between viewing full ball and stick molecule respresentations and line structure representations of the molecules. 

Future Considerations: As mentioned previously, implementing support for chloroquine made it clear that the interface would be much more effective if the user could select which carbon of an alkane chain would be attached to the existing molecule when adding a chain. This would allow the user to select the second carbon of pentane when wishing to add the radical pentan-2-yl.

AND as most of us with some knowledge of the life sciences are aware, unfortunately hydroxychloroquine proved to NOT be effective as a treament for COVID-19. Nevertheless, I took the enhancements of the interface and search engine provided from modeling chloroquine as valuable gains for the site, and turned my attention to the drug more promising at the time: Remdesivir.


Tuesday, February 4, 2020

Quick interface update per user feedback

Release 4.2.1

A thanks to user J.G. who wrote: "'Im a software engineer, not a chemist. Approaching this website with just memory from a basic college chemistry class many years ago, so "helpful/not helpful" is more like "what parts felt natural to use/easy to understand". That said, this is so well done that I actually opted into a survey about a website. Great software. Sorry I'm not proficient enough in the subject to offer much suggestion, but a point that slowed me down starting to try to make a molecule was that I saw carbon underneath the editor and first could not figure out how to drag that in to start (rather than starting with a skeleton on the left. Tutorial cleared that right up, though. If I have to start with a skeleton, perhaps hide the "Additions" section or make it look visibly disabled until a skeleton is used." 


I hope you don't mind me sharing your review! Per feedback, the additions panel now actually IS visibly disabled until the molecule has been created by first giving it a primary skeleton. This feedback is EXACTLY what we're looking for. Keep it coming!

Saturday, February 1, 2020

Support for molecules with cycloalkane side chains, nested side chains, side chains with ether attachments, side chains attached to the parent skeleton with pi bonds and with atoms other than the first Carbon in the side chain, and introduction of support for the reactions used in the synthesis of pyrimethamine

Release 4.2.0

Perhaps the longest title of any entry thus far in the organic chem master blog. This update introduces support for, in general, molecules with more complex side chains. The main impetus for this update was actually to show the potential to take the power to unjustifiably and drastically raise prices for drugs like Daraprim away from greedy biotechnology CEOs like Martin Shkreli. Which of course is a very tall task, in no small part due to chemical patent restrictions, but hopefully the pathway synthesis search engine support added in this update will show a step in that direction and that one day the tool will be able to provide alternative synthesis pathways for important life saving medicines.

With that overarching goal in mind, the particular goal of this update was to empower the search engine to independently discover the same synthesis pathway to produce the drug Daraprim (pyrimethamine) that high school students in Sydney did in 2016. This pathway can be viewed in the image here: https://en.wikipedia.org/wiki/Pyrimethamine#/media/File:Pyrimethamine_traditional_synthesis.png .

The first step in achieving the discovery was to ensure that both the intermediate molecules involved in the synthesis and of course pyrimethamine itself were supported in both the interface and the search engine. The starting molecule, 1-chloro-4-(2-cyanoethyl)benzene, was actually already supported. The next intermediate molecule, 1-chloro-4-((2Z)-1-cyano-3-hydroxypent-2-en-2-yl)benzene, required adding support for side chains (in this case the 1-cyano-3-hydroxypent-2-en-2-yl radical) that were NOT attached to their parent chain at the first Carbon of the side chain. The proceeding intermediate molecule, the etherificated 1-chloro-4-((2Z)-1-cyano-3-methoxypent-2-en-2-yl)benzene, required adding support for side chains containing ethers. This of course leads to the concept of nested side chains! That is, the parent skeleton of a molecule can contain a side skeleton that itself contains a side skeleton. This was previously not allowed in the interface nor the search engine to keep the modeling simpler.

And, finally, support for the molecule pyrimethamine itself, or as know by its IUPAC name 5-(4-chlorophenyl)-6-ethylpyrimidine-2,4-diamine. Support for this molecule specifically required adding support for side chains that are cycloalkanes which in turn required the introduction of an algorithm to determine which of two attached cycloalkanes should function as the primary skeleton. In particular, should the pyrimidine ring be considered the primary skeleton of the molecule or should the chlorobenzene ring be considered the primary skeleton.

As a side note, support was also added for molecules containing side skeletons bonded to the primary skeleton with a pi bond, such as propylidenecyclohexane.

After support for ALL intermediate molecules and the product was added, it was time to add support for the reactions. Support for the following three reactions was added to the pathway search engine: Ethyl propionate condensation, Diazomethane etherification, and Guanidine condensation.

And once all modifications were in place, the search engine was able to successfully "rediscover" the synthesis pathway of Daraprim.

Standards: Per usual, IUPAC naming rules were followed. In particular, the style for nomenclature used for radicals with a Carbon atom with a locant other than 1 attached to the parent skeleton was to use the locant followed by "-yl or -ylidine" as in (propan-2-yl)cyclohexane. The radical prefix "ylidine" was used to indicate the radical was attached to the parent via a double bond. The condensation reactions were modeled after the wikpedia article, employing the strong deactivation properties of the cyano group. The etherification via diazomethane reaction was also modeled after the wikipedia article.

Controls: No new controls were introduced. The user can still create the molecules via the molecule design tool or entering the IUPAC name in the interface and click the beaker icon to perform a synthesis pathway search.

Future Considerations: Hopefully even more power can be added to the pathway search engine via support for more complex molecules, more reactions, and more efficient search techniques in the future.

Wednesday, October 23, 2019

Introduction of click to select and place element option in normal size screen version of molecule design and fix for heteroatom tutorial bug

Release 4.1.2

Also, a rather quick update. First, a bug found in step 7 of the heteroatom tutorial: https://www.organicchemmaster.com/MolGen/Tutorial/HeteroatomMolecule, involving adding a double bonded Oxygen to the 2,4,8,9-tetraazabicyclo[4.3.0]nona-1,3,6-triene molecule thus far created, resulted in an error that prevented the user from finishing the tutorial. This bug has been finished so the user is indeed able to create the allopurinol molecule.

Second, much of the feedback I have received thus far seems to indicate that the generally preferred method for designing a molecule is to use the click to select an element and click to place the element modality, currently in use in the small screen version. As such, I have gone ahead and introduced the click to select and click to place modality as an OPTION to use in the normal size screen version in addition to the standard drag and drop modality. This option can be selected by clicking on the drag icon in the toolbar (four arrows) to switch to click mode. Drag and drop mode can be switched back to by clicking on the icon again.

Controls: The user can now switch between the drag and drop modality of adding an element to the current molecule and the click to select an element and click to place the element modality while in normal size screen mode. This is accomplished by clicking on the drag (four arrows) icon to switch TO click mode and clicking on the arrow/pointer icon to switch TO drag and drop mode.

Thursday, August 1, 2019

Addition of heteroatom molecule design and creation tutorial

Release 4.1.1

A VERY short update. A tutorial was added to allow the user to get familiar with creating molecules involving both nitrogen heteroatoms and heterocyclic rings. The tutorial can be found at: https://www.organicchemmaster.com/MolGen/Tutorial/HeteroatomMolecule. The molecule chosen for the tutorial was allopurinol, as it was a motivating example for the previous update.

Thursday, July 25, 2019

Introduction of support for esters, Nitrogen heteroatoms, and bicyclic molecules

Release 4.1.0

This update mainly brings support for the following, more complex, molecules in the interface and the search engine: esters, Nitrogen heteroatoms and bicyclic molecules. The impetus for the full support of esters was actually to finish the work that had begun in a previous update, that is support for alkoxy side chains of hydrocarbon rings and the molecule 2-acetoxybenzoic acid (aspirin). While adding support for heteroatoms, I actually found the pyrimidine derived DNA bases (cytosine and thymine) to be especially useful as test cases. As such, when I was looking for one more direction to expand interface support for this update it was a logical next step to also add support for the purine DNA bases (adenine and guanine) which in turn required support of bicyclic molecules. This logical flow was actually coupled with my particular interest in the molecules uric acid and allopurinol, as a number of my close friends are rapidly approaching the advanced age that requires treatment of gout symptoms.

Previously, when support was added for 2-acetoxybenzoic acid (aspirin), the alkoxy side chain was treated as an acetyl group bonded by ether linkage to benzoic acid as opposed to an ester linkage between benzoic acid and an ethyl group. As such, FULL support for esters was not necessary. This update proceeds to add that full support for esters. Once support for esters was in place, I was able to add support for LiAlH₄ reduction of esters.

The approach to adding support for heteroatoms began with deciding which heteroatom to add first. The two main contenders were Oxygen and Nitrogen, with Nitrogen being chosen somewhat arbitrarily because of my particular interest in supporting DNA bases, uric acid, and allopurinol. Support began by first modifying the interface drawing engine to allow drawing of molecules containing rings and chains of elements other than Carbon. Once this update was made, the nomenclature engine for both the interface and search engine was updated to support heteroatoms. Pyrimidine was chosen as a goal case for support, as were the DNA bases cytosine and thymine. Of note, the pyrimidine derivative nomenclature style was NOT used in this update but support for this style will be added for future updates.

Once support for Nitrogen heteroatoms was in place for both the interface and the nomenclature engines, it was time to update the interface to allow the user to create molecules with heteroatoms. Simplicity and intuitiveness were the top two priorities for this interface addition. Two basic approaches were considered for this functionality: 1) Allowing the user to click on a Carbon atom to select it to be replaced and then clicking on the atom with which to replace it. 2) Introducing a "replace" mode that the user could toggle with an "add" mode. With the replace mode the user could first select an atom in the additions panel and then click on the atom to replace in the molecule. Ultimately the second option was chosen for two reasons: 1) the user interaction flow of clicking the atom to add to the molecule first then clicking the location to add/replace the new atom was maintained and 2) clicking on an existing Carbon atom in the molecule already has the function of swapping any stereochemistry associated with that Carbon. Fortunately this process is flexible enough that changes can still be explored. One last note is the approach chosen requires less accuracy in selecting a location, which is important for small screen versions.

Following the addition of support for Nitrogen heteroatoms and pyrimidine bases, a next logical step was to add support for the purine bases which would in turn require support for bridged ring heterocyclic molecules. The first step to allow support for the heterocyclic molecules was to update the drawing engine. The molecule chosen to use as a first step to model heterocyclic molecules was bicyclo[4.4.0]decane. Support also required updating the nomenclature engine and modeling on both the interface and search engine. Of specific challenge was introducing support for pi bonds between two bridgeheads, e.g. bicyclo[4.4.0]-dec-1(6)-ene. For now, to create a molecule with a heterocyclic ring, the user has two options: 1) To select either bicyclo[4.4.0]decane or bicyclo[4.3.0]nonane (the backbone for purine bases) from the skeleton panel and add it to the workspace or 2) Enter the IUPAC name. Future support will likely include a process to create such a cyclo skeleton by "fusing" smaller skeleton components.

With support for both Nitrogen heteroatoms and bicyclic molecules, the interface and search engine now support all five DNA/RNA bases!

Standards: Standard IUPAC nomenclature rules were followed for the naming of esters, Nitrogen heteroatoms (using aza to indicate a Nitrogen atom substitution), and heterocyclic molecules (specifically the bracket enclosed style of the lengths of the bridges in descending order and delimited by periods).

Numbering for atoms that are part of a heterocyclic ring follows the following rule per Chapter 13 of Organic Nomenclature by James G. Traynham: "Numbering of a bicycloalkane to indicate location of substituents begins at one bridgehead, proceeds around the longest bridge to the other bridgehead, continues around the second longest bridge back to the number 1 position (original bridgehead), and is completed across the shortest bridge." Once this rule is followed, the standard IUPAC rule of minimizing the locants of the substituents is followed. When a pi bond exists between two bridgeheads, the notation of the smallest numbered bridgehead followed by the other bridgehead in parenthesis is used.

Controls: No control changes were introduced for ester support in the interface. The user can simply create an ester per standard interface controls.

The Add/Replace mode toggle was introduced in the Additions panel. The user can toggle the mode by clicking the "Add/Replace" text. When the mode is "Add" mode, the selected addition will be added to the location chosen as the target in the existing molecule per normal (either by drag and drop or click in the small screen version.) When the mode is "Replace" mode, the selected addition will replace the existing atom at the location chosen as the target. For replacements that are either not yet supported nor chemically possible, no substitution will occur in replace mode.

Heterocyclic molecules can be created either by adding a bicyclo[4.4.0]decane cycloalkane or a bicyclo[4.3.0]nonane from the skeletons panel or by typing the name of the heterocyclic molecule in the name field.

Future Considerations: More heteroatom molecules will be possible in future updates including Oxygen, Sulfur, Phsophorous, Silicon, and Boron heteroatoms. The controls for editing heteroatoms may be altered per any user feedback. Also, the interface may be modified to allow the user to "fuse" together skeleton components to create heterocyclic molecules. Finally, the nomenclature engine for bridged ring systems will be updated to allow proper pyrimidine derivative names and purine derivative names where appropriate as well as purine/pyrimidine substituent numbering systems.

Finally, another call to please leave some feedback! In the comments, through our user feedback page, or the survey on our site. All feedback and interaction is appreciated! Let us know if the site is helping you in your chemistry endeavors!


Tuesday, April 9, 2019

Mobile and Small-Screen Optimization (Round One), addition of support for custom skeleton chains/segments, support for Iodine and Fluorine reactions, and support for free-radical chlorination

Release 4.0.0

The main motivation of this update was to introduce full mobile and small screen device support for the interface. To achieve this goal, two paths were considered: 1) Creating an android and iOS platform app. 2) Modifying and optimizing the existing interface to work on small/smaller screen devices. Eventually, the goal will be to create full fledged iOS and android platform apps, however, for this update the decision was made to keep the existing interface and tune it to work with small screens. The main reasoning for this decision is simply that it was easier to specialize the existing interface for smaller screens than it was to create an entirely new interface. Fortunately, I was also able to take advantage of the Bootstrap framework to allow stylistic changes for different page size breaks with the existing interface.

The first task for small screen optimization was chosen to be optimizing the home, or "splash" page. This was considered a good starting point because it showcases most of the features of the interface and it also is by default the first page the user views. Most stylistic modifications for the smaller screen were straightforward: wrapping text and interactive portions of the page from the same row to the next line to accommodate a smaller screen width, modifying the molecule drawing code to work with a smaller space, and using a carousel tool to display each molecule in the "Explore" section individually rather than displaying all molecules simultaneously.

The next part of the small screen optimization process involved optimizing the Reactions, Pathways, and Contact pages. These stylistic modifications were also straightforward and mainly involved re-positioning the page elements to work on a smaller screen width.

The final, and certainly most time intensive task, was to optimize the molecule design tool. A few chief considerations were made when figuring the best course to take:

  1. A goal was to make the workspace panel containing the molecule being designed/edited as large as possible, thus taking most of or the entire width of the screen in space limited environments.
  2. Given the lower precision of touch events on a mobile device, and the general use of dragging on a mobile device to move the portion of the page currently viewed, the decision was made to move away from the drag and drop method of adding atoms/skeletal chains and towards a click to select a new atom/skeletal chain and click to add the selected item to the existing molecule. This new method is also more similar to other molecule design tools and likely is more familiar to users.
  3. Although dragging on a mobile device is generally associated with moving the portion of the page currently viewed by the user, I also wanted to maintain the ability to pan to different areas of a complex molecule as well as to zoom in and out of the molecule. 
Work began attempting to satisfy the first consideration: as large a workspace panel as possible. Clearly having it take the full width (or nearly the full width) of the screen while maintaining proper height to width ratio was a good place to start. It then became a question of where the panels for the skeletal attachments and individual attachments to be added would be placed. I first attempted to keep the skeletal attachments panel to the left of the workspace and allowed the user to collapse and expand the panel as desired. A similar approach was used to keep the individual atom attachments on the bottom. This ultimately proved unsuccessful as it required the skeletal panel to overlay the molecule workspace when expanded, which resulted in it being difficult to properly place a new skeletal attachment. For example, adding an ethyl side chain to a pentane. I learned from this failed approach that it would be easiest to keep the skeletal and individual atom attachment panels separate from the main workspace panel.

After deciding to keep the panels of skeletal and individual atom attachments separate from and NOT overlaying the main workspace panel, it came time to decide where else on the screen to place the attachment panels. It seemed obvious that the individual atom panel would be placed on the bottom, as it was in that location in the original larger screen interface. As for the skeletal attachment panel, I first placed it above the workspace, but ultimately decided against this approach for two reasons: 1) It made more sense to keep both attachment panels near each other 2) the top of the workspace panel was already associated with the function buttons of the molecule editor (cut, paste, new, etc). With these two reasons in mind, I placed both attachment panels below the workspace panel. 

Transforming from the drag and drop approach of designing a molecule to the click to select an element and click where the element would be placed approached was relatively straight forward. The code was actually designed to abstract and separate the layers of handling interface events and handling the changes to the molecule as much as possible, so I merely had to switch from wiring a drag and drop handler to indicate that an attachment should be added to the molecule to wiring two clicks to indicate the same process. Fortunately, this approach is also more similar to existing, commonly-used molecule design tools and can even be implemented as an alternative to the drag and drop system used for a large size screen.

Finally, work was done to satisfy the third consideration: allowing the user both to drag the molecule around in the workspace panel and still affording the user the expected functionality of dragging on a mobile page; that is to navigate to a different part of the same page. This was trickier and I'm actually experimenting with the solution for now. As such I more than welcome all feedback on this approach! The approach is as follows. When the user starts a drag on a mobile device with the user's finger over the molecule workspace, the DEFAULT mobile behavior will be executed: the page will move to the position that the user has dragged to. When the user FIRST clicks on the molecule workspace, THEN performs a drag, instead of the page moving the molecule will move around inside the workspace panel. The user may click repeatedly on the molecule workspace to toggle exactly what drag operation does. This seemed to be an appropriate compromise, but I recognize that the user will need to get used to this functionality. With that in mind, the default result of a drag will be to move the position of the page. 

Phew! Compared to the overhaul of the interface for mobile optimization, the rest of the updates were much more minor. They were as follows:
  1. The addition of support for custom skeleton chains/segments. The impetus for this addition was to allow the user to add common elements of a more complex molecule component, such as a benzene ring, without needing to recreate the element from scratch. The user can find the custom skeleton chains/segments by cycling through the arrows in the skeletal attachments panel.
  2. The addition of support for molecules and reactions involving the elements Iodine and Fluorine.
  3. Support for the free-radical Chlorination reaction.
Standards: Similar to modeling for other supported reactions, the Fluorination and Iodination reactions were modeled after this article:  https://en.wikipedia.org/wiki/Halogen_addition_reaction.  The free-radical Chlorination reaction was modeled after this article: https://en.wikipedia.org/wiki/Free-radical_halogenation. No other new standards were introduced with this update. 

Controls: The major change in the controls of the interface involves the molecule design process on a small screen. The user will no longer add elements to a molecule in the design process by dragging an element from either the skeletal or individual atoms panels and then dropping the element on the chosen target in the workspace panel, but rather click an element to select it then click again on the target to add it. To compensate for the lower precision of click events on a smaller screen, I introduced a tolerance variable to play with how easily a click was registered. The tolerance was set at 5 pixels for now. That is any click within 5 pixels (in both dimensions) of the portion of the workspace where the atom is rendered will register as a click on that atom. 

There is also now a tutorial icon button in the upper right of the control button section which will open up all available tutorials on the small screen. I actually recommend following the Intermediate Molecule Design Tutorial to become acquainted with the new process.

Finally, the user can add a custom skeletal segment to the molecule in EITHER small screen mode or normal mode by selecting the "Custom Skeletons" page of the skeletal attachments. 

Future Considerations: One major consideration is potentially allowing the user to CHOOSE between the drag and drop approach or the click to select and click to place approach on all size screens. This would be useful if the user prefers one approach more than the other. Also to be considered is adding a "zig zag" type tool for drawing alkane chains. Finally, to be considered is the best level for the tolerance of a click action. This might even be a feature that is adjustable by the user.

Like the small screen design? Hate it???? Is this making Chemistry any easier yet??? Feel free to respond!!



Friday, January 25, 2019

Introduction of Smart Search feature, fix to bug with the Cumene process reaction, minor stylistic and interface updates, fix for bug of adding a cycloalkane to a smaller linear chain in interface

Release 3.1.0

A pretty exciting update for the search engine with this release! This time, first I'll begin with the interface and search engine bug fixes:

  1. Upon using the Discover feature of the home page, the user will now be greeted with a more friendly message upon selecting a reaction that cannot be applied to the selected molecule.
  2. A minor stylistic fix on the Reactions section was made. For example, see the first reaction of the Calvin cycle, the arrow in the View Reaction panel now looks correct.
  3. Previously, in the interface, the user was unable to design a molecule with a cyclic alkane primary skeleton and a straight-chain alkane attachment (for example propylcyclohexane) by first dragging the straight-chain alkane into the workspace and then adding the cyclic alkane. The user was required to first add the cyclohexane and then add the propyl attachment. Now either order is possible.
  4. A bug was fixed in the search engine for the modeling of the Cumene process reaction. The hydroxylation of benzene now results in the proper search engine modeling of Phenol.

And the exciting part of the update: the introduction of a Smart Search feature for the search engine. This new feature will use a heuristic calculation to guide its pathway search from the origin molecule to the goal molecule. For this release, the heuristic used in the smart search is NOT admissible, that is it will potentially overestimate the cost for the synthesis pathway between any given intermediate molecule and the goal molecule. The synthesis pathway found will thus POSSIBLY be sub-optimal. This was an acceptable trade-off made for the first release/iteration of the smart search. Subsequent releases will use admissible heuristics only to guarantee optimality. I am personally more than happy to explain more of the nature of the heuristic calculation used if you private or direct message me.

A motivating example for introducing a heuristic was the search to find a synthesis pathway from benzene to 2-acetoxybenzoic acid (aspirin) using ONLY the Pathway Calculations search option. This search had actually been previously accomplished utilizing both the Pathway Calculations and the MolGen Reactions search options. However, removing the MolGen Reactions search option (which basically provided a very strong hint for the search engine to begin with converting benzene to phenol), would result in a search timed out. The goal was to find such a synthesis pathway without the strong hint.

As I introduced the smart search option using a heuristic, I actually discovered the aforementioned bug in the modeling of the Cumene process reaction. Figuring it was more essential/urgent to fix the modeling bug, I went ahead and did so before proceeding with implementing the smart search feature. Low and behold, fixing this bug actually resulted in a successful synthesis pathway search from Benzene to Aspirin using ONLY the Pathway Calculations search option! There was no longer a time out issue! Running the following search for a pathway from Benzene to Aspirin using ONLY the pathway calculations search (and NOT the smart search feature) will now successfully find the synthesis pathway.

As I had already begun working on implementing the smart search feature, I went ahead and finished that feature as well. I ran benchmark tests on my local development environment and did indeed find that the search performs faster with the Smart Search feature turned on. Tests can actually be performed on www.organicchemmaster.com as well as the user wishes, comparing the search WITHOUT the Smart Search feature to the search WITH the Smart Seach feature. The user SHOULD see a shorter search time for the latter, but I have less control in performing benchmark tests on the server that hosts www.organicchemmaster.com than I do in my local environment.

Standards: Per usual, IUPAC naming rules were followed. Specifically, in this case the fix to the interface allowing the user to attach a cyclic alkane to a straight-chain alkane results in the properly named molecule: the cyclic alkane being designated the parent skeleton chain and taking naming precedence. Of note, the heuristic used for the Smart Search feature is by design NOT an admissible heuristic for this release/iteration. It will thus NOT necessarily guarantee an optimal synthesis pathway. Turning the feature off will STILL result in an optimal and complete (if there is one) synthesis pathway.

Controls: The only significant update to the controls is adding the new Smart Search feature option. This option can be selected in the "Search" checkbox section under the options popup.

Future Considerations: Obviously, we will eventually want the Smart Search feature to use an admissible heuristic to guarantee optimality of the pathway search. There will be a lot of choices to be taken into consideration to improve the heuristic(s) used in terms of trading off heuristic function calculation time and search time. That said, I am looking forward to utilizing the more power this update provides to the search engine !

Tuesday, December 11, 2018

Upgrade to SSL site and addition of user accounts

Release 3.0.0

Although this update does not bring any interesting interface or search engine changes, it nevertheless is a pretty major milestone for the site as a whole as it involves a transition to the secure https protocol as well as the introduction of user logins.

In order to use the most secure login tools, it was necessary to migrate the site to use the ASP.NET Core framework. Once this migration was finished, two login processes were created: 1) The process to allow the user to log in with an account specifically for the site. 2) The process to allow the user to use open authentication to log in with a Google account. The hope is that this flexibility will allow the user to log in in his or her preferred manner.

I am excited about the doors that having user logins will open such as personalized stored pathways and the ability to interact with other site users! The login page can be reached at: https://www.organicchemmaster.com/Identity/Account/Login and the register for account page can be reached at: https://www.organicchemmaster.com/Identity/Account/Register .

Sunday, November 4, 2018

Introduction of Intermediate Molecule Design and Intermediate Pathway Search Tutorials, fix of nomenclature bug

Release 2.11.1

A shorter update than last time, two more new tutorials were added: 1) An intermediate molecule design tutorial and 2) An intermediate pathway search tutorial.

The goals for the new intermediate level tutorials were:

  1. Get the user comfortable with designing a molecule with a more complex base skeleton.
  2. Familiarize the user with the two methods of changing types of bonds between two atoms in a molecule: clicking on the existing bond, and selecting a new bond type from the drop down list in the inspector.
  3. Familiarize the user with the New (+), Undo, Redo, Copy, and Paste control buttons.
  4. Introduce the process of adding more complex side chains to the molecule, such as acetyl groups, to the user.
  5. Familiarize the user with the process of using the zoom in, zoom out, and drag controls to edit/create more complex molecules.
  6. Familiarize the user with a more complicated pathway search. This includes using the MolGen Reaction database as a source for the pathway search and a longer time limit, of one minute, to perform the search. 
  7. Introduce the user to a pathway search that has real world applications as part of the tutorial. 
The chosen molecules for the tutorials were benzene and aspirin (2-acetoxybenzoic acid). Fortunately, the framework was already in place for creating the two new tutorials, so not much of the interface needed to be modified at all. The two new tutorials are up as the Intermediate Molecule Design tutorial and the Intermediate Pathway Search tutorial.

Additionally, one nomenclature bug was fixed. Previously, a molecule that contained a side chain of methyl that in turn contained two or more of the same functional group would NOT properly display the multiple group prefix (di, tri) in the radical name. One example of this (dihydroxymethyl)cyclohexane. This was previously, incorrectly named as (hydroxymethyl)cyclohexane, even with two hydroxyl groups attached to the methyl radical.This bug was actually discovered while creating the molecule 2-acetoxy-1-(dihydroxymethyl)benzene, a molecule the user will create on the way to creating aspirin.

Thanks! Again, keep the comments and emails support@organicchemmaster.com coming!


Friday, October 19, 2018

Introduction of Basical Molecule Design and Basic Pathway Search Tutorials, Undo/Redo feature, and create molecule by IUPAC name feature

Release 2.11.0

This update was directly inspired by a comment on the previous post:

Hi, is there any intro-level text or blog post you recommend before using your tool?

Great question! I think it was indeed high time some sort of introductory text or tutorial was, for lack of better word, introduced. I played with a few options: creating a blog post detailing how to get started, creating some sort of slide based demonstration, and finally implementing an interactive tutorial. I still might add the first two options, but I was most excited about the interactive tutorial; not only would it provide the most hands on way to introduce the tool to a new user, it would also serve as a great way to clean up/test the interface while designing the tutorial. Which in fact it did quite a bit.

The three goals for the first round of tutorials were: 
  1. Get the user able to create/design a simple molecule via the interface by physically adding and attaching the atoms of the molecule. In this case, ethanol (ethan-1-ol) was chosen as a good example molecule because it is simple in structure, a very well known molecule, and very readily reactive. 
  2. Get the user able to use the create molecule by IUPAC name feature. This feature involves the user typing the IUPAC (or common) molecule name in the appropriate field, then viewing the resulting molecule in the interface. Essentially, this is the opposite of the first goal: going from the IUPAC name to the molecule structure rather than vice versa. Ethanal (commonly acetaldehyde) was chosen as it also has a simple structure and can be formed via an oxidation of ethanol.
  3. Get the user able to perform a simple pathway search between two molecules. In this case, ethanol and ethanal, logically chosen because they were created in the first two steps.
The second goal actually required adding the feature of creating a molecule by IUPAC name to the main molecule workspace page. This feature was already on the home/splash page in the first section, so it just needed to be added to the molecule workspace page as well. The user can now click on the molecule name, enter a new molecule name, press enter, and see the new molecule created in the workspace.

After the create molecule by IUPAC name feature was finished, it became clear during the tutorial implementation process that having undo functionality would be VERY helpful. Namely to provide step by step instructions on successfully completing each tutorial, it would be necessary to undo a user's step if it was incorrect. That is, for the first goal of creating ethanol, if the user added a Chlorine atom to ethane, for example, we would want to undo the addition of Chlorine and instead instruct the user to add an Oxygen/Hydroxyl group. Undo/redo functionality had been on the plate for a while now, so it seemed like a perfect time to implement it. For now, the maximum amount of undos/redos allowed was set to five, though this may be changed in the future.

With both the undo/redo feature and the create molecule by IUPAC name feature implemented, it was possible to finish the tutorials in mind to accomplish the three goals listed above. The first two goals were accomplished with the Basic Molecule Design and Creation tutorial. The third goal was accomplished with the Basic Pathway Search tutorial.

Standards: No significant new standards were introduced. Per normal, all existing IUPAC naming rules were followed.

Controls: The controls for the undo/redo functionality should be straightforward. The icons at the top control bar of the workspace are now enabled to allow the user to click undo and redo when desired. In the case of an undo or a redo not being possible/allowed, that particular icon will be disabled.

The user can utilize the create molecule by IUPAC name feature as follows: 1) Click on the molecule name or the text "Click to enter molecule name" if one the workspace is currently blank. 2) Enter the IUPAC or common name of the desired molecule. (Note: this feature does not yet support EVERY possible molecule, but that indeed is the goal eventually.) 3) Click "enter".

Beginning the two tutorials that were added should be straightforward. The user can either click the "Open Tutorials" button in the Instructions panel, or click on one of the tutorial links on the Help page.

Future Considerations: The two added tutorials seem to be enough to get the user started. However, of course more tutorials for advanced molecule creation/design and pathway searches need to be added. Also, we MAY increase the possible number of undo steps. Finally, the create molecule by IUPAC name feature will eventually be improved to add a certain level of tolerance. That is, we would expect the user entering "1, 3-dichlorobutane" to result in the same molecule as "1,3-dichlorobutane". That extra space should be considered a tolerable discrepancy.

I greatly appreciate the user's comment and absolutely welcome more! Please go ahead and comment!


Monday, August 13, 2018

Addition of support for Cumene process, introduction of timeout feature for search engine, redesign of search engine result display, and addition of copy search link feature

Release 2.10.0

The impetus for this update was to enhance the user experience with the search engine interface. This was realized by three main improvements:

  1. More detailed information and feedback on the results of the pathway search. The results panel now shows: the result status, the start and goal molecules of the search, the number of steps in the pathway found (if one was found), the total search time, the search tools used, and the optimization.
  2. Addition of get link to pathway search button, which results in copying a link containing the search parameters to the user's clipboard. Similar to the get link to molecule button, the user can paste the generated link in a browser URL window and repeat the search with the same parameters. 
  3. Introduction of the search time limit feature. As searches are getting more and more complex with support for additional reactions, the timeout feature serves as sort of a "safety limit" to allow control over how long a search runs and if necessary stop it. The current limit choices are: 15 seconds, 30 seconds, 1 minute, and no limit. 
Additionally, support for the Cumene process reaction, a reaction allowing the hydroxylation of benzene to produce phenol, was added. This reaction is useful for extending the possible syntheses pathways of both Tylenol and Aspirin to begin with benzene. 

Standards: Similar to modeling for other support reactions, support for the Cumene process reaction was modeled after the description found here: https://en.wikipedia.org/wiki/Cumene_process. Otherwise no new IUPAC naming rules were added.

Controls: The additional information and feedback of the results are included in the same modal that shows the progress bar and the link to the pathway (if the search was a success). The get link to pathway search button was added to that same modal. The search time limit feature was added to the settings/options drop up menu of the reaction interface below the Optimize and Search settings. The user can select the time limit from the select list.

Future Considerations: It is clear after this update the pathway search engine can benefit from refinement to improve the speed and the robustness of the search algorithms. Of course the goal is to ultimately deliver all possible synthesis pathways in a short amount of time!

And finally a HUGE encouragement to go ahead and comment in the blog if you are so inclined, and/or to visit our contact page. We appreciate it!


Thursday, July 26, 2018

Introduction of two new features to the Interface: Locked Mode and Get Link to Molecule

Release 2.9.2

This release introduces two new, relatively minor Interface features: edit locked mode and get link to molecule functionality.

The edit locked mode will allow the user to view and inspect the created molecule without being concerned about inadvertently modifying it. I anticipate that this will be useful for larger, more complex molecules where the user might wish to pan and zoom in on a particular part of the molecule. In particular the user can drag the view of the molecule on the screen without worrying about clicking an atom to alter stereochemistry or a bond to change the bond type. I also anticipate this will be useful eventually on a mobile interface that does not support a hover event; the user can click on an atom to inspect it without modifying it.

The get link to molecule button is straightforward. Clicking on the button will copy a link to the current molecule to the operating system clipboard.

Controls - Use of the lock/unlock icon in the workspace toolbar will allow the user to toggle between edit locked mode and edit unlocked mode. Simply clicking the share icon in the molecule properties panel (next to the PubChem and Google search icons) will copy a link to the molecule.

Future Considerations - The link feature will likely be expanded to also allow the user to quickly get a link to a reaction pathway calculation.

Introduction of Bond Addition Tool

Release 4.6.1 With this update, the user is now able to add bonds of the single, double, and triple variety to the molecule as well as updat...