Sup.
I was bored this evening so I compiled a list of all TFA flavors available from their MSDS sheets to make it easier to look up a flavor's weight when mixing.
Flavor | Weight in grams/ml ---|--- Absinthe | Acai | 1.034 Acetyl Pyrazine5 P G | 1.0375 Almond Amaretto | 1.0290 Apple Candy | 1.0231 Apple | 1.0406 Apple Pie | 1.0660 Apple Tart Granny Smith | 1.025 Bacon | 1.0430 Banana Cream | 1.0195 Banana Nut Bread | 1.0336 Bavarian Cream | 1.0681 Bittersweet Chocolate | 1.0436 Blackberry | 1.0291 Black Cherry | 1.0423 Black Currant | 1.037 Black Honey | 1.0380 Black Tea | 0.8137 Blueberry Candy P G | 1.1312 Blueberry Candy Triacetin | 1.1507 Blueberry Extra | 1.0520 Blueberry Wild | 1.0283 Boysenberry | 1.0078 Brandy | 1.0410 Brown Sugar Extra | 1.0660 Bubblegum | 1.0392 Bubblegum Juicy Style | 0.9800 Butter | 1.0333 Butterscotch | 1.0387 Cappuccino | 1.0765 Caramel Candy | 1.0681 Caramel Cappuccino | 1.040 Caramel | 1.0399 Caramel Original | 1.0538 Chai Tea | 1.0170 Champagne Type P G | 0.9643 Cheesecake | 1.0180 Cheesecake Graham Crust | 1.0417 Cherry Blossom P G | 1.0398 Cherry Extract | 0.896 Chocolate | 1.0309 Cinnamon Danish | 1.0530 Cinnamon | 0.9728 Cinnamon Red Hot Concentrate | 0.9598 Cinnamon Red Hot | 0.9598 Cinnamon Red Hot P G | 1.049 Cinnamon Spice | 1.036 Cinnamon Sugar Cookie | 1.0687 Citrus Punch | 0.9271 Clove | 1.0690 Coconut Candy | 1.0500 Coconut Extra | 1.0220 Coconut | 1.0333 Coffee | 1.0615 Coffee Extra Clear | 1.0615 Coffee Kona | 1.0615 Cola | 0.8621 Cola Syrup | 0.8621 Cotton Candy Circus | 1.0690 Cotton Candy | 1.0519 Cranberry | 0.8777 Cremede Menthe | 0.9452 Cubano Type | 1.036 Dill Pickle | 1.1422 D K Tobacco Base | 1.0827 Double Chocolate Clear | 1.0492 Double Chocolate Dark | 1.0761 Dragonfruit | 1.0240 Dulcede Leche | 1.0232 Earl Grey Tea | 0.9901 Egg Nog | 1.0513 Elderberry | 1.0400 Energy Drink | 1.0403 English Toffee | 1.0440 Espresso | 1.0395 Flue Cured | French Vanilla Deluxe | 1.0140 French Vanilla | 1.0623 Fudge Brownie | 1.072 Gingerbread Cookie | 1.0507 Gingerbread | 0.9132 Graham Cracker Clear | 1.0490 Graham Cracker | 1.0587 Grape Candy | 1.0260 Grapefruit | 0.928 Grape Juice | 1.0410 Green Apple | 1.0279 Green Tea | 1.0340 Gummy Candy | 1.0781 Gummy Candy P G | n/a Hawaiian Drink | 1.0240 Hazelnut | 1.0458 Hazelnut Praline | 1.0480 Hibiscus | 1.0349 Hickory Smoke | 1.0623 Honeydew | 1.0231 Honey | 1.0448 Honeysuckle P G | 1.1562 Horchata | 1.0435 Horehound | 0.9630 Hpno Type | 0.8137 Huckleberry | 1.0182 Irish Cream | 0.9989 Jackfruit | 1.04 Jamaican Rum | 1.0471 Kaluaand Cream Type | 1.0633 Kentucky Bourbon | 1.0290 Kettle Corn | 1.0455 Key Lime | 1.027 Kiwi Double | 1.0645 Koolada10 P G | 1.0519 Lemon Lime | 0.9840 Lemonwatersoluble | 0.9944 Lychee | 1.0447 Malted Milk Conc | 1.0483 Mango | 1.0333 Maple | 0.908 Maple Syrup | 1.0459 Maraschino Cherry P G | 0.8982 Marshmallow | 1.0423 Mary Jane | 1.0363 Menthol Liquid P G | .9403 Mexican Liqueur | 1.049 Mild Black | 1.053 Milk | 1.0291 Mint Candy | 1.0375 Mocha | 1.0291 Molasses | 1.0399 M Type Premium | 1.0615 Musk Candy | 1.0388 Nectarine | 1.0160 Orange Cream | 0.9699 Orange Mandarin | 1.049 Papaya | 1.0303 Passion Fruit | 1.0530 Peach | 1.0363 Peach Juicy | 1.0349 Peanut Butter | 1.0460 Pear | 1.0291 Pecan | 1.0375 Peppermint | 0.9403 Pie Crust | 1.0519 Pina Colada | 1.0356 Pineapple | 1.0140 Pizza | 1.0004 Plum P G | .9080 Pomegranate Deluxe | 1.0140 Pomegranate | 1.0410 Popcorn | 1.0423 Pralinesand Cream | 1.078 Pumpkin | 1.0375 Pumpkin Spice | 1.0124 Raisin | 1.0507 Raspberry | 0.9403 Raspberry Sweet | 1.0399 Red Licorice | 1.0392 Red Oak | 1.0380 Red Type Blend | 1.0327 Red Velvet Cake | 1.080 Ripe Banana | 0.9390 Root Beer P G | 1.1539 Root Beer Tri | 1.1539 Rose Candy | 1.0269 R Y4 Asian | 1.0440 R Y4 Double | 1.0600 R Y4 Type | 1.0410 Sea Buckthorn | 1.0309 Smooth | 1.0459 Sour | 1.1071 Spearmint | 0.96 Strawberriesand Cream | 1.0471 Strawberry | 1.0410 Strawberry Ripe | 1.0410 Sweetand Tart | 1.0327 Sweet Cream | 1.0400 Sweetener | 1.0560 Sweet Woodruff | 1.0309 Tiramisu | 1.0450 Toasted Almond | 1.0397 Toasted Marshmallow | 1.0924 Tobacco | 1.0374 Turkish | 1.052 Tutti- Frutti | 0.9967 Vanilla Bean Ice Cream | 1.0623 Vanilla Bourbon | 1.0827 Vanilla Cupcake | 1.0623 Vanilla Custard | 1.0484 Vanilla Swirl | 1.0549 Vanillin10 P G | 1.0519 Violet Candy | 1.0076 Waffle Belgian | 1.0570 Waffle | 0.8456 Watermelon | 1.0370 Western | 1.0547 Whipped Cream | 1.0441 White Chocolate | 1.0042 Wintergreen | 1.0519 Yam | 1.0423
As you can see, not every flavor is listed and formatting's a bit wonky, but I couldn't be arsed fixing them. I hate working with regular expressions enough as it is. The flavor name is based off the file name of the MSDS sheet so it's no doubt prone to error.
^^Here ^^be ^^dragons... >for i in $(ls *.doc); do echo "$(echo $i | sed 's/.doc//;s/Flavor//;s/([[:upper:]])/ \1/g') | $(catdoc $i | grep Gravity | cut -d ' ' -f 7 | tr -d '[:blank:]')"; done
This is the one liner I wrote to parse the sheets. I'll leave grabbing all the .doc files from their website as an exercise for you. ;)
Edit: Now outputs in reddit's table format instead of bullet list. Looks prettier.
Thanks! All this list needs now is weight of PG, VG, and a few % of nic PG and nic VG.
> All this list needs now is weight of PG, VG
Those are pretty well-documented but these are the numbers I use (try to be slightly more accurate when more accurate numbers are available):
Item|Sp.Gr (g/mL) ---|--- Pure nicotine|1.00925 PG|1.0373 VG|1.2613
> and a few % of nic PG and nic VG
Nah, easy enough to just calculate it if we know the percentages. 100% pure nicotine is 1.009g/mL or 1,009mg/mL, but since 100% purity doesn't really happen we just call it 1000mg/mL for pure nicotine, but at any rate that translates to 100mg/mL concentration being 10%. Thus 100mg/mL in VG is 0.1*1.00925+0.9*1.2613=1.2361g/mL
100mg/mL in PG is just as easy to figure: 0.1*1.00925+0.9*1.0373=1.0345g/mL
Now if the diluent is 50/50 instead of all VG, you'd instead take the density of a 50/50 mix with no nicotine ((1.2613+1.0373)/2=1.1493) and use that in the diluent's portion of the equation, thus 0.1*1.00925+0.9*1.1493=1.1353g/mL.
Only slightly more complicated, say we were instead only dealing with 24mg/mL (2.4%) nicotine in 50/50 diluent, now we're looking at 0.024*1.00925+0.976*1.1493=1.146g/mL.
Edit:
Hell, I'm bored and can't sleep so instead of telling you to not be lazy I made you a table so you can be lazy. :P
Took me all of two minutes to whip up in a spreadsheet, took several times as long getting it formatted correctly for reddit's weird ass-table markup.
nic(mg/mL)|%VG|%PG|SG(g/mL) ---|---|---|--- 100|100|0|1.236095 100|50|50|1.135295 100|0|100|1.034495 50|100|0|1.2486975 50|50|50|1.1422975 50|0|100|1.0358975 48|100|0|1.2492016 48|50|50|1.1425776 48|0|100|1.0359536 24|100|0|1.2552508 24|50|50|1.1459388 24|0|100|1.0366268 18|100|0|1.2567631 18|50|50|1.1467791 18|0|100|1.0367951 12|100|0|1.2582754 12|50|50|1.1476194 12|0|100|1.0369634 6|100|0|1.2597877 6|50|50|1.1484597 6|0|100|1.0371317
> for i in $(ls *.doc); do echo "$(echo $i | sed 's/.doc//;s/Flavor//;s/([[:upper:]])/ \1/g') | $(catdoc $i | grep Gravity | cut -d ' ' -f 7 | tr -d '[:blank:]')"; done
Hey i'm a bit of an Amateur dev here and i'm trying to work it out.
Did you download all the .doc first and then ran that line from the command line? Was the output right in the bash which you then copied into this post?
Here's they way i'm understanding it :
for i in $(ls *.doc) > for each .doc
do echo > print
echo $i | > is the value of i the part before .doc at this point?
sed 's/.doc//;s/Flavor//;s/([[:upper:]])/ \1/g') | > I'm lost here lol
$(catdoc $i | grep Gravity | cut -d ' ' -f 7 | > reads the .doc, grep "gravity" cut what's after 7 characters ignoring spaces? or cut out the 7 characters and the spaces? leaving only the weight value?
tr -d '[:blank:]') > cut what's after the 7 characters ignoring spaces until the next space?
; done > end loop
Feel free to share or not it's cool either way :)
> Did you download all the .doc first and then ran that line from the command line? Was the output right in the bash which you then copied into this post?
Yeah, the doc files were grabbed from their MSDS page beforehand. And yes, this outputs it directly to whichever shell you run this from. You can easily output this somewhere else by using shell redirection. Doing this inside or outside the loop should make no difference.
Admittedly, I have no idea whether this one-liner is POSIX compliant, so run this in BASH to be safe.
> Here's they way i'm understanding it : > for i in $(ls *.doc) > for each .doc > do echo > print > echo $i | > is the value of i the part before .doc at this point?
No, the i variable is the complete file name of a single file gathered from the alphabetical output of running ls *.doc
I wanted to preserve the file name to avoid having to manually input it somewhere. Which brings us to the next part. > sed 's/.doc//;s/Flavor//;s/([[:upper:]])/ \1/g') | > I'm lost here lol
Understandably so. :)
Regex is hard to wrap ones head around at first. I won't go into detail on what each metacharacter does as this would make this post as long as a book. Basically what this part does is strip (technically replacing it with nothing) the string that is stored in the variable i of its' ".doc" extension, then stripping the word Flavor which is also a part of the file name and lastly, inserting a blank space after every upper case character to make it look prettier. This part is basically just aesthetic.
The sed statement is concatenated but can easily be broken down into multiple, like so:
echo something | sed 's/.doc//' | sed 's/Flavor//' | sed 's/([[:upper:]])/ \1/g'
> $(catdoc $i | grep Gravity | cut -d ' ' -f 7 | > reads the .doc, grep "gravity" cut what's after 7 characters ignoring spaces? or cut out the 7 characters and the spaces? leaving only the weight value?
The -d ' ' argument tells cut that we'll be treating spaces as delimiters for the outputted fields and -f 7 tells it to trim everything but the 7th because this the field that contains the gravity we're looking for. > tr -d '[:blank:]') > cut what's after the 7 characters ignoring spaces until the next space?
This trims away a leading tab because I was too lazy to look up how to specify tab as delimiter for cut at the time. Which, for the record, is $'\t'
Now that I know what the delimiter is I could've done: >$(catdoc $i | grep Gravity | cut -d $'\t' -f 4)
Hope this helps. :)
So does it make a huge difference if in just use 1g/ml?
Some of the heavier ones are 6% more than 1g/ml so assuming you use 15% flavor @ 1g/ml you would actually be getting 15% * 1.06% = 15.9% @ 1.06g/ml. I believe the whole point of measuring by weight over volume is better precision.
Ya that's what I was thinking, ever time someone says, it doesn't matter that as long as its repeatable that didn't make sense to me. So should I weigh all my ingredients? What's the best way to weigh them? If I'm new to diy that seems like a daunting task and kinda makes the whole weigh method not very good looking to me, like I don't mind cleaning out some syringes over having to weigh and keep track of everything.
> it doesn't matter that as long as its repeatable
Yeah, the really only applies to recipes you've created/fine tuned yourself. If you like a flavour at "10%" and mix it at "10%" every time, does it matter to you if the "10%" is really "10.6%"? This only becomes a problem when sharing recipes with someone who uses a different weight for the same flavour as they won't get the same result as you do.
Awesome! You can mix by weight on e-liquid-recipes.com, but you can't yet set a flavor's weight. I should implement that soon :P So many things on my todo :P