Yeast Naming Inconsistencies

AHarper

Well-Known Member
Premium Member
Established Member
Joined
Mar 23, 2018
Messages
1,116
Reaction score
2,170
Points
113
There is an inconsistency in the naming of yeasts across the editor that you may not have noticed - or indeed care about - but if you ever download the data for your own use, as I do, then you may need to be careful. I shall use Fermentis Safale yeasts as that is where I found problems but it may exist elsewhere though I haven't come across it yet.

Browse Yeast Table
If you look at this table from the Browse menu you will see how Fermentis yeasts are listed. The Yeast name is listed with the parts of the name separated by hyphens. The Laboratory (Brand) is listed as Fermentis / Safale with a / separator.
upload_2020-10-23_20-8-58.png


Recipe Editor
If you create a recipe then the Yeast dropdown list uses the same list data so in the recipe you will see the names the same way - with hyphens separating the name parts.
upload_2020-10-23_20-13-33.png


Recipe Export
If you save a recipe and then do a Text export of the recipe you will get the Yeast name in a different format. Still with a hyphen but now the Brand name part has been truncated. (I suspect the background code splits at the first hyphen but that is a guess).
upload_2020-10-23_20-16-1.png

Inventory
Now go to your inventory (if you use it) and add an entry for the same yeast. What do you know? The Name of the same yeast in the drop down list is different again. This time the Fermentis part has gone and the most usual form of Safale - American Ale Yeast US-05 remains. (I personally would like the "Safale -" bit dropped too but that is another matter).
upload_2020-10-23_20-31-28.png


Inventory Listing
Go to the list view of the Inventory and, hey! What's this? Another version appears.
upload_2020-10-23_20-34-32.png


Inventory Export
Ok use the new (and excellent) export function and see what is listed now. The Brand name is the full Fermentis / Safale and the Yeast Name is the Safale - American Ale Yeast US-05.

upload_2020-10-23_20-58-56.png
 
Last edited:
Man, you and your export...

Thanks for the report Alan, I'm like 90% sure I already have this tracked but I'll double check and add this thread to the ticket.
 
Man, you and your export...

Thanks for the report Alan, I'm like 90% sure I already have this tracked but I'll double check and add this thread to the ticket.

Hi, Sorry lol. I think most of it is ok as it all seems to tie up EXCEPT for the Recipe Export in text - I don't know about the other export types as I don't use them but I will take a look.

I have a get round fix here in my Spreadsheet app so I can handle it. I just thought I'd point it out in case someone else was wondering where things were going wrong with their data - should they be mad enough to do what I do lol
 
Thanks Alan, keep letting us know whatever issues / feature requests you have.
 

Defer( function () { $(document).ready(function() { if ( ! document.cookie.match(/^(.*;)?\s*bf_adfpv_v1\s*=\s*[^;]+(.*)?$/) ) { var date = new Date(); var now = new Date(); date.setTime(date.getTime()+(10*365*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); document.cookie = "bf_adfpv_v1="+now.toGMTString()+expires+"; path=/"; } else { // Initialize AdSense (adsbygoogle = window.adsbygoogle || []); // Affiliate ad override configuration from PHP var affiliateOverrides = {"top-leaderboard-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/810X100.webp","width":810,"height":100}]},"inline-unit-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/810X100.webp","width":810,"height":100}]},"sidebar-block-1-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/300x250.webp","width":300,"height":250}]}}; // Process each potential ad override if (affiliateOverrides && Object.keys(affiliateOverrides).length > 0) { Object.keys(affiliateOverrides).forEach(function(adSlotId) { var override = affiliateOverrides[adSlotId]; var adElement = document.getElementById(adSlotId); // Check if ad exists and should be replaced based on total percentage if (adElement && override.options && override.options.length > 0 && (Math.random() * 100 < override.total_percentage)) { // Choose an option based on weights var option = chooseWeightedOption(override.options); // Build affiliate ad HTML var style = option.style || ''; if (option.width && option.height) { style += (style ? '; ' : '') + 'max-width:100%;'; } var attributes = ''; if (option.target) attributes += ' target="' + option.target + '"'; if (option.rel) attributes += ' rel="' + option.rel + '"'; var affiliateAdHtml = '
' + '' + '' + '
'; // Replace the AdSense container with affiliate ad $(adElement).closest('ins.adsbygoogle').replaceWith(affiliateAdHtml); } }); } // Helper function to select a weighted random option function chooseWeightedOption(options) { if (!options || options.length === 0) { // This case implies an issue with how options are passed or an empty configuration. // Returning undefined is safer than the original's options[0] which would error. return undefined; } var eligibleOptions = []; var totalPositiveWeight = 0; // First pass: Collect options with strictly positive weights and sum these weights. for (var i = 0; i < options.length; i++) { var option = options[i]; // Ensure weight is treated as a number; default undefined/non-numeric to 0. var weight = (typeof option.weight === 'number') ? option.weight : 0; if (weight > 0) { eligibleOptions.push(option); totalPositiveWeight += weight; } } if (totalPositiveWeight > 0) { // If there are options with positive weights, choose from them. var randomValue = Math.random() * totalPositiveWeight; var cumulativeWeight = 0; for (var j = 0; j < eligibleOptions.length; j++) { // eligibleOptions[j].weight is guaranteed to be > 0 here. cumulativeWeight += eligibleOptions[j].weight; if (randomValue <= cumulativeWeight) { return eligibleOptions[j]; } } // Fallback for rare floating-point precision issues or if randomValue is exactly totalPositiveWeight. // Returning the last eligible option is a robust choice here. return eligibleOptions[eligibleOptions.length - 1]; } else { // No options with positive weight were found. // This means all original options had weights <= 0 (e.g., all zeros or empty list of positive weights). // In this scenario, pick one randomly from the original 'options' list, // giving all of them an equal chance. return options[Math.floor(Math.random() * options.length)]; } } // Initialize all remaining AdSense ads $("ins.adsbygoogle").each(function() { $("(adsbygoogle = window.adsbygoogle || []).push({})").insertAfter($(this)); }); var js = document.createElement("script"); js.type = "text/javascript"; js.async = true; js.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"; document.body.appendChild(js); } }); });
Back
Top