{"id":822,"date":"2012-02-02T17:51:01","date_gmt":"2012-02-02T22:51:01","guid":{"rendered":"http:\/\/stringpage.com\/blog\/?p=822"},"modified":"2012-02-02T17:51:01","modified_gmt":"2012-02-02T22:51:01","slug":"a-tiny-intersection","status":"publish","type":"post","link":"https:\/\/www.stringpage.com\/blog\/?p=822","title":{"rendered":"A tiny intersection"},"content":{"rendered":"<p>I use the statistical software language <a href=\"https:\/\/www.r-project.org\" target=\"_blank\">R<\/a> extensively at work: all my data analysis and graphing is done in R. I have a couple of software packages in the R archive, and have published peer-reviewed papers on those R packages.<\/p>\n<p>And so everything starts to look like a nail&#8230;<\/p>\n<p>I&#8217;m working on a project that requires drafting lots of new <a href=\"https:\/\/www.stringpage.com\/tw\/tw.html\" target=\"_blank\">tablet weaving<\/a> patterns: doubleface, 3\/1 broken twill, maybe some pebble weave. I&#8217;ve done patterns with colored pencil and graph paper, with a spreadsheet, and with <a href=\"https:\/\/www.guntram.co.za\/tabletweaving\/gtt.htm\" target=\"_blank\">GTT<\/a>, but none of those are exactly what I need. <\/p>\n<p>I could write my own pattern software in R! (Yes, I am clearly approaching maximum possible geekiness. But you knew that, right?) Right now, it will take a bitmap image, check it for weavability, and create a pattern draft for either doubleface or twill. <\/p>\n<p>The intersection of the sets of avid tablet weavers and avid users of <a href=\"https:\/\/www.r-project.org\" target=\"_blank\">R<\/a> is likely very small, but it may well be greater than one. If there&#8217;s interest, I may eventually polish the code and turn it into a proper package with documentation and such.<\/p>\n<p>This is what tablet weaving looks like, in miniature.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.stringpage.com\/blog\/photos\/silk1-20090111.jpg\" alt=\"tiny silk band\" \/><\/p>\n<p>This section is doubleface, <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.stringpage.com\/blog\/photos\/silk3-20090111.jpg\" alt=\"doubleface\" \/><\/p>\n<p>and this one 3\/1 broken twill.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.stringpage.com\/blog\/photos\/silk4-20090111.jpg\" alt=\"broken twill\" \/><\/p>\n<p>Take an image, say the R logo.<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/R-logo.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/R-logo-300x227.png\" alt=\"\" title=\"R-logo\" width=\"300\" height=\"227\" class=\"alignnone size-medium wp-image-829\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/R-logo-300x227.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/R-logo-1024x776.png 1024w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/R-logo.png 1450w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Shrink it to a weaveable number of pixels and convert it to black and white. For this one, rotate it too.<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/1-image1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/1-image1-150x150.png\" alt=\"R logo in black and white\" title=\"R logo\" width=\"150\" height=\"150\" class=\"alignnone size-thumbnail wp-image-830\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/1-image1-150x150.png 150w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/1-image1-300x300.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/1-image1.png 500w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Run it through the doubleface check routine, and plot the result. The plotting function automatically puts red X symbols on the spots where the pattern needs tweaking before it can be woven in the desired structure. (Color changes must be an even number of pixels \/ weft picks apart vertically for this structure.)<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/2-check.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/2-check-300x300.png\" alt=\"check the pattern\" title=\"2-check\" width=\"300\" height=\"300\" class=\"alignnone size-medium wp-image-824\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/2-check-300x300.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/2-check-150x150.png 150w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/2-check.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The lines by default are every 10 pixels, but that can be changed.<\/p>\n<p>Fix those problems, and run the check again. Repeat as needed until the design is weaveable.<\/p>\n<p>Then run the doubleface pattern generator on it. The weaver needs to specify whether SS or SZ structure is desired. A twining plan is returned that shows the direction of twist in the band (though it doesn&#8217;t cancel out the reversal points). This is the same as the turning plan if all tablets are S-threaded.<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/4-dfss.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/4-dfss-300x300.png\" alt=\"Doubleface in SS structure\" title=\"4-dfss\" width=\"300\" height=\"300\" class=\"alignnone size-medium wp-image-826\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/4-dfss-300x300.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/4-dfss-150x150.png 150w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/4-dfss.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>For this one, the doubleface is in SS structure, with all tablets threaded the same way.<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/5-dfsz.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/5-dfsz-300x300.png\" alt=\"\" title=\"5-dfsz\" width=\"300\" height=\"300\" class=\"alignnone size-medium wp-image-827\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/5-dfsz-300x300.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/5-dfsz-150x150.png 150w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/5-dfsz.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>That&#8217;s the effect of using an alternating threading instead. If you want to weave it with tablets actually threaded alternately instead of all S, there&#8217;s a function for that too. That function takes the twining plan and creates a turning plan with a particular threading.<\/p>\n<p>I think this is the best one: I swapped the SZ for ZS setup, and created the corresponding SZ turning plan. Now someone just needs to weave it (set the cards up ZS across the pack).<\/p>\n<p><a href=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/7-dfzs2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/7-dfzs2-300x300.png\" alt=\"final doubleface R logo\" title=\"7-dfzs2\" width=\"300\" height=\"300\" class=\"alignnone size-medium wp-image-835\" srcset=\"https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/7-dfzs2-300x300.png 300w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/7-dfzs2-150x150.png 150w, https:\/\/stringpage.com\/blog\/wp-content\/uploads\/2012\/02\/7-dfzs2.png 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>There&#8217;s no hand-holding. This is a command-line tool, and you need to keep track of what you&#8217;re doing, and what the output files are. It won&#8217;t tell you how to set your tablets up: you need to know what you&#8217;re doing. But there&#8217;s nothing better if you have a stack of images to draft, and it runs on Windows\/Linux\/Mac.<\/p>\n<p>It does do twill, though that&#8217;s harder to design and to weave, and using the patterns may require a bit of knowledge on the part of the weaver. I&#8217;m going to add pebble weave, and I&#8217;ve set it up in such a way that other structures are possible if I have a need for them.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I use the statistical software language R extensively at work: all my data analysis and graphing is done in R. I have a couple of software packages in the R archive, and have published peer-reviewed papers on those R packages. And so everything starts to look like a nail&#8230; I&#8217;m working on a project that [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[70],"tags":[92,93],"class_list":["post-822","post","type-post","status-publish","format-standard","hentry","category-tablet-weaving","tag-geekery","tag-r"],"_links":{"self":[{"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=822"}],"version-history":[{"count":8,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/822\/revisions"}],"predecessor-version":[{"id":839,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/822\/revisions\/839"}],"wp:attachment":[{"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stringpage.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}