Skip to content

File Types in Wheeler's Wort Works

James Blackburn edited this page Mar 31, 2019 · 5 revisions

Before this guide begins it is important to note when you see ~4 spaces then that should be a tab (\t) to prevent issues found later down the line.


The .berf format

The Basics

The first of Wheeler's Wort Works core save files is the .berf format. It is inherited from Graham Wheeler's Original Beer Engine. They have been implemented into Wheeler's Wort Works to provide loose backwards compatibility with the Original Beer Engine.

Wheeler's Wort Works' implementation of the .berf format allows the opening of old files and also allows a user to open Wheeler's Wort Works created .berf files in the Original Beer Engine. NOTE: Properties such as Water Chemistry Additions and Yeasts are not compatible with the Original Beer Engine.

Further Information

The .berf format use Latin encoding - specifically 'ISO-8859-1'- it is required to open the files. Some text editors may encounter issues when saving/opening this encoding. It is required as the save format due to it being the default and only accepted format for Graham Wheeler's Beer Engine and also seems to help with Graham's use of the symbol \xa7 otherwise known as§ to split sections.

File Layout/Format

As mentioned in the previous section you must be using 'ISO-8859-1' as the encoding for this file or it will not be accepted/will not work in the intended way.

At the top of file there should be all your ingredients laid out in the following fashion:

Grists (Grains):

grain§[Grist Name]    [EBC]    [Type]    [Units]    [Moisture]    [Fermentability]    [Mass in grams]    [Percentage]

Hops:

hop§[Hop Name]    [Type]    [Alpha]    [IBU/EBU]    [Grams]    [Time]    [Percentage] 

Yeasts/Water Chemistry Additions (WWW Only):

add§[Name]    [Dictionary of data]

Or

add§[Yeast Name]    {'Type': '[Generally D or L]', 'Lab': [Yeast Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '[Temperature (found in form 19-22°)]', 'Description': '[A Single Line Description of the Yeast]', 'Origin': '[Origin]'}

Or

add§[Hop Like Water Chemistry Addition]	{'Values': {'Type': 'Hop', 'Time': [Time]}}
add§[Malt Like Water Chemistry Addition]    {'Values': {'Type': 'Malt'}}

Then you should have the brew data
default§efficiency	[Brew Efficiency in Percentage (i.e. 75)]
default§volume	[Brew Volume (Litres)]
miscel§recipename	[Brew Name]
miscel§ogfixed	[Is Original Gravity Fixed (1 or 0)]
miscel§ebufixed	[Are the IBU/EBUs Fixed (1 or 0)]
miscel§origgrav	[Brew Original Gravity]

The .berfx format

The Basics

Wheeler's Wort Works incorporates an alternative saving system that is missing from Graham Wheeler's Beer Engine (this results in a loss in compatibility between the Original Beer Engine and Wheeler's Wort Works when using it). It's sole intent is to prevent the following occurrence/theoretical story:


It has been a grueling day of work, and a home brewer finally sits at his computer ready to set up for his next brew he is hoping to make at the week-end. He then discovers his current Belgian Pale Malt doesn't conform with his Baird Low Colour Pale Malt that was his normal Pale Malt. He decides to temporarily change his Pale Malt data to the values of his Belgian Pale Malt. After finishing he chooses to save the file as a .berf and walks away all his numbers exactly how he both expected and wanted.

A month goes past and he comes back to his Brew; however, on opening it he discovers all his numbers have deviated from what he had originally. He rushes to the Grist Editor and suddenly realizes he has reset his Pale Malt back to the Baird Low Colour Pale Malt values. He now has a file which looks different whenever he checks it, it deviates on any update of his database. A single change of a database value could provide drastically different results.

Here arrives the convenience of .berfx. He could simply have saved the file as a .berfx and it doesn't change when being opened, it works on anybodies' system even if they lack any database values.


File Layout/Format

These files have no specific encoding (native utf-8) and also follow a very simple layout.

At the top of file there should be all your ingredients laid out in the following fashion:

Grists (Grains):

grain§[Grist Name]    {'EBC': [EBC], 'Grav': [Gravity], 'lb:oz': ([Pounds], [Ounces]), 'Grams': [Mass in Grams], 'Percent': [Percentage]}

Hops:

hop§[Hop Name]    {'Type': '[Type]', 'Alpha': [Alpha], 'Time': [Time], 'Util': [Utilization], 'ibu': [IBU/EBUs], 'lb:oz': ([Pounds], [Ounces]), 'Grams': [Mass in Grams], 'Percent': [Percentages]}

Yeasts/Water Chemistry Additions:

add§[Name]    [Dictionary of data]

Or

add§[Yeast Name]    {'Type': '[Generally D or L]', 'Lab': [Yeast Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '[Temperature (found in form 19-22°)]', 'Description': '[A Single Line Description of the Yeast]', 'Origin': '[Origin]'}

Or

add§[Hop Like Water Chemistry Addition]	{'Values': {'Type': 'Hop', 'Time': [Time]}}
add§[Malt Like Water Chemistry Addition]    {'Values': {'Type': 'Malt'}}
Then you should have the brew data
miscel§ogfixed	[Is Original Gravity Fixed (1 or 0)]
miscel§ebufixed	[Are the IBU/EBUs Fixed (1 or 0)]
miscel§recipename	[Brew Name]
Then you should have the database

It follows the exact same format as brew_data.py with a slight twist.

Grists:

database§grist§[Grist Name]    {'EBC': [EBC], 'Type': [Type Int or Str], 'Extract': [Extract], 'Description': '[Single Line Description]', 'Moisture': [Moisture Content], 'Fermentability': [Fermentability]}

Hops:

database§hop§[Hop Name]    {'Form': '[Form]', 'Origin': '[Origin]', 'Alpha': [Alpha], 'Use': '[Use]', 'Description': '[Single Line Description]'}

Yeasts:

database§yeast§[Yeast Name]    {'Type': '[Generally D or L]', 'Lab': [Lab], 'Flocculation': '[Flocculation]', 'Attenuation': '[Attenuation]', 'Temperature': '18-21°', 'Description': '[Single Line Description]', 'Origin': '[Origin]'}

Water Chemistry Additions:

database§water_chem§[Name]	{'Values': {'Type': 'Hop', 'Time': [Time]}}

or

database§water_chem§[Name]	{'Values': {'Type': 'Malt'}}

Now you have the constants:

database§constant§{'Efficiency': [Efficiency i.e. 0.75], 'Hop Time': [Default Hop Insertion Time], 'Conversion': {'lb-g': [Pounds to Grams Conversion Rate], 'oz-g': [Ounces to Grams Conversion Rate], 'usg-l': [US Gallons to Litres Conversion Rate]}, 'Volume': [Recipe Volume], 'Boil Volume Scale': [How much more Boil Volume is i.e. 1.1], 'Liquor To Grist Ratio': [Liquor to Grist Ratio], 'Attenuation Default': [Current attenuation], 'Save On Close': [Whether or not to save on close], 'Default Boil Time': [Boil Time], 'Replace Defaults': [Overwrite Defaults]}

Configuration Files

File Layout/Format

grain_data.txt:

[Grist Name]    [EBC]    [Type]    [Extract]    [Moisture]    [Fermentability]    [Single Line Description]

hop_data.txt:

[Hop Name]     [Type]    [Origin]    [Alpha]    [Use]    [Single Line Description]

yeast_data.txt:

[Yeast Name]    [Lab]    [Flocculation]    [Attenuation]    [Temperature]    [Origin]    [Single Line Description]

water_chem_data.txt:

[Addition Name]    [Time or N/A]    [Type]

defaults.txt:

efficiency=Efficiency Percentage
volume=Default Volume
evaporation=Scale from Volume to Boil Volume
LGratio=Liquor To Grist Ratio
attenuation=Default Attenuation
save_close=Save on Close
boil_time=Default Boil Time
replace_defaults=Wipe Default Database on Launch

Editing Configuration Files

When editing Configuration Files you have two main options. Firstly, to open Wheelers Wort Works and edit the values based off there retrospective editor (hop_data.txt:Hop Editor, grain_data.txt:Grist Editor, yeast_data.txt:Yeast Editor, defaults.txt:Defaults Editor). The other option is to open the retrospective text files and use the above formatting to input data. hop_data.txt and grain_data.txt can be overwritten by Graham Wheeler's Beer Engine Configuration Files if you wish to use an old database.

Import Note when Editing Configuration Files: By default, when you make changes to Database Files they merely append to/change the default values found inside brew_data.py and brew_data2.py. If you wish to overwrite the database (use only Configuration Files), you must uncheck the button Update Default Configuration or change replace_defaults under defaults.txt to True.

The .html files

The Simple HTML Option

The idea of the HTML Option is a sharable document anybody can open, and also an easy to read record of your project. It may also be used as a quick reference point while brewing.

The Complex HTML Option

The Complex HTML File requires an internet connection; however, adds the ability to press on headers and sort by on each section

Clone this wiki locally