From f13dc34a358758490f7c70ac4d38d94019e5a612 Mon Sep 17 00:00:00 2001 From: guoyongzhi Date: Sun, 7 Mar 2021 12:43:11 +0800 Subject: [PATCH] clean up history & bug fixes --- README.md | 8 ++-- "examples/\344\270\255\346\226\207.jl" | 12 +++--- res/gathering.png | Bin 0 -> 147097 bytes res/heart_mask.png | Bin 0 -> 6084 bytes src/qtree.jl | 12 +++--- src/qtreetools.jl | 51 ++++++++++++------------- src/rendering.jl | 4 +- src/strategy.jl | 20 +++++----- src/train.jl | 28 +++++++------- src/wc-helper.jl | 1 + src/wc-method.jl | 40 ++++++++++--------- test/runtests.jl | 8 ++++ test/test_qtree.jl | 4 +- 13 files changed, 103 insertions(+), 85 deletions(-) create mode 100644 res/gathering.png create mode 100644 res/heart_mask.png diff --git a/README.md b/README.md index 0374a9e..bd656ba 100644 --- a/README.md +++ b/README.md @@ -41,10 +41,10 @@ paint(wc, "alice.png", ratio=0.5, background=outline(wc.mask, color="purple", li ![animation](res/animation.gif) [Training animation](./examples/animation.jl) *Run the command `runexample(:animation)` or `showexample(:animation)` to get the result.* -## Specifying the style of a particular word -![specifiedstyle](res/specifiedstyle.png) -[Speciying the style of a particular word](./examples/specifiedstyle.jl) -*Run the command `runexample(:specifiedstyle)` or `showexample(:specifiedstyle)` to get the result.* +## Gathering style +![gathering](res/gathering.png) +[gathering style](./examples/gathering.jl) +*Run the command `runexample(:gathering)` or `showexample(:gathering)` to get the result.* ## Comparison ![compare](res/compare.png) [Comparison of Obama's and Trump's inaugural address](./examples/compare.jl) diff --git "a/examples/\344\270\255\346\226\207.jl" "b/examples/\344\270\255\346\226\207.jl" index 5f29877..2063bf5 100644 --- "a/examples/\344\270\255\346\226\207.jl" +++ "b/examples/\344\270\255\346\226\207.jl" @@ -21,10 +21,12 @@ jieba.add_word("英特纳雄耐尔") wc = wordcloud( processtext(jieba.lcut(TheInternationale)), colors = "#DE2910", - mask = WordCloud.randommask("#FFDE00", 400), - density=0.65)|>generate! -println("结果保存在 中文.svg") -paint(wc, "中文.svg") +# mask = WordCloud.randommask("#FFDE00", 400), + mask = loadmask(pkgdir(WordCloud)*"/res/heart_mask.png", color="#FFDE00"), + density=0.65) |> generate! + +println("结果保存在 中文.png") +paint(wc, "中文.png") wc #eval# runexample(:中文) -#md# ![](中文.svg) \ No newline at end of file +#md# ![](中文.png) \ No newline at end of file diff --git a/res/gathering.png b/res/gathering.png new file mode 100644 index 0000000000000000000000000000000000000000..18544cd08992b4ff456f0d85291757b4c5ec1aa3 GIT binary patch literal 147097 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 QkX38j3z=n&Rt=64Bh%8tXB-eeN+H`aH z(udpD`%{X7cs%omI-z>t1U47sPt+`z_L=o9kVX92$(>`-0QT8h4A#Ns@k*kubt(m zbQCn1bKn+J&Oj`HNb2&{ir2s*Dy#CIjBt7Mp>Y`=-xGwJT_k>gK?EC8S~-_~{I|+| zq8+@yA6>P0J$dgJ%-CLrF@pt�c4aX{2~aH# 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

QkQ82s=7nG8- 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%0D-`cE_*6ju3 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

4C&l#*XBRc_HJ4mY0YO`c>u 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�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%0Dt?=r1nt?;t{DpVV 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 HtfKx0K^iJk literal 0 HcmV?d00001 diff --git a/res/heart_mask.png b/res/heart_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..4f554b8f99f51abc0c4c7564512c6912bcd022b4 GIT binary patch literal 6084 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 collect |> shuffle! - listcollision_native(qtrees, mask, indpairs, collist=collist, at=at) + batchcollision_native(qtrees, mask, indpairs, collist=collist, at=at) end -function listcollision_native(qtrees::AbstractVector, mask::AbstractStackedQtree, +function batchcollision_native(qtrees::AbstractVector, mask::AbstractStackedQtree, inds::AbstractSet; kargs...) - listcollision_native(qtrees, mask, inds|>collect; kargs...) + batchcollision_native(qtrees, mask, inds|>collect; kargs...) end -function findroom_rand(ground, q=[(levelnum(ground), 1, 1)]) +function findroom_uniform(ground, q=[(levelnum(ground), 1, 1)]) if isempty(q) push!(q, (levelnum(ground), 1, 1)) end @@ -253,6 +253,7 @@ end "将sortedtrees依次叠加到ground上,同时修改sortedtrees的shift" function placement!(ground, sortedtrees; kargs...) # pos = Vector{Tuple{Int, Int, Int}}() + ind = nothing for t in sortedtrees ind = placement!(ground, t; kargs...) overlap!(ground, t) @@ -261,21 +262,17 @@ function placement!(ground, sortedtrees; kargs...) end # push!(pos, ind) end - nothing + ind # return pos end -function placement!(ground, qtree::ShiftedQtree; roomfinder=findroom_rand, kargs...) +function placement!(ground, qtree::ShiftedQtree; roomfinder=findroom_uniform, kargs...) ind = roomfinder(ground; kargs...) # @show ind if ind === nothing return nothing end - l, r, c = ind - x = floor(2^(l - 1) * (r - 1) + 2^(l - 2)) - y = floor(2^(l - 1) * (c - 1) + 2^(l - 2)) - m, n = kernelsize(qtree[1]) - setshift!(qtree, 1, x - m ÷ 2, y - n ÷ 2) # 居中 + setcenter!(qtree, getcenter(ind)) # 居中 return ind end @@ -296,11 +293,13 @@ function placement!(ground, sortedtrees, indexes; kargs...) end overlap!(ground, sortedtrees[i]) end + ind = nothing for i in indexes - placement!(ground, sortedtrees[i]; kargs...) + ind = placement!(ground, sortedtrees[i]; kargs...) + if ind === nothing return ind end overlap!(ground, sortedtrees[i]) end - nothing + ind end function locate(qt::AbstractStackedQtree, ind::Tuple{Int, Int, Int}=(levelnum(qt), 1, 1)) @@ -367,7 +366,7 @@ function locate!(qts::AbstractVector, inds::Union{AbstractVector{Int}, AbstractS end -function listcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, loctree::QtreeNode; +function batchcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, loctree::QtreeNode; collist = Vector{ColItemType}(), queue = Vector{Tuple{Int, Int, Int}}(), ) @@ -379,12 +378,12 @@ function listcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, # @show length(loctree.value.loc), length(loctree.value.cumloc) indpairs = combinations(loctree.value.loc, 2) |> collect indpairs = [(min(p...), max(p...)) for p in indpairs] |> shuffle! - listcollision_native(qtrees, mask, indpairs, collist=collist, queue=queue, at=loctree.value.ind) + batchcollision_native(qtrees, mask, indpairs, collist=collist, queue=queue, at=loctree.value.ind) end if length(loctree.value.loc) > 0 && length(loctree.value.cumloc) > 0 indpairs = Iterators.product(loctree.value.cumloc, loctree.value.loc) |> collect |> vec indpairs = [(min(p...), max(p...)) for p in indpairs] |> shuffle! - listcollision_native(qtrees, mask, indpairs, collist=collist, queue=queue, at=loctree.value.ind) + batchcollision_native(qtrees, mask, indpairs, collist=collist, queue=queue, at=loctree.value.ind) end for c in loctree.children if c !== nothing @@ -394,21 +393,21 @@ function listcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, end collist end -function listcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree; kargs...) +function batchcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree; kargs...) loctree = locate!(qtrees) loctree = locate!(mask, loctree, label=0, newnode=LocQtreeInt) - listcollision_qtree(qtrees, mask, loctree; kargs...) + batchcollision_qtree(qtrees, mask, loctree; kargs...) end -function listcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, inds::Union{AbstractVector{Int}, AbstractSet{Int}}; kargs...) +function batchcollision_qtree(qtrees::AbstractVector, mask::AbstractStackedQtree, inds::Union{AbstractVector{Int}, AbstractSet{Int}}; kargs...) loctree = locate!(qtrees, inds) loctree = locate!(mask, loctree, label=0, newnode=LocQtreeInt) - listcollision_qtree(qtrees, mask, loctree; kargs...) + batchcollision_qtree(qtrees, mask, loctree; kargs...) end -function listcollision(qtrees::AbstractVector, mask::AbstractStackedQtree, args...; kargs...) +function batchcollision(qtrees::AbstractVector, mask::AbstractStackedQtree, args...; kargs...) if length(qtrees) > 25 - return listcollision_qtree(qtrees, mask, args...; kargs...) + return batchcollision_qtree(qtrees, mask, args...; kargs...) else - return listcollision_native(qtrees, mask, args...; kargs...) + return batchcollision_native(qtrees, mask, args...; kargs...) end end diff --git a/src/rendering.jl b/src/rendering.jl index a590975..144fa0b 100644 --- a/src/rendering.jl +++ b/src/rendering.jl @@ -6,7 +6,7 @@ using Luxor using Colors using ColorSchemes using ImageMagick -import ImageTransformations.filter +import ImageTransformations.imresize save = Luxor.FileIO.save @@ -225,7 +225,7 @@ schemes_seaborn = filter(s -> occursin("seaborn", colorschemes[s].category), col schemes = [schemes_colorbrewer..., schemes_seaborn...] """ -get box or ellipse image +get a box or ellipse svg image ## Examples * shape(box, 80, 50) #80*50 box * shape(box, 80, 50, 4) #box with cornerradius=4 diff --git a/src/strategy.jl b/src/strategy.jl index 28b8b35..03e6c69 100644 --- a/src/strategy.jl +++ b/src/strategy.jl @@ -24,12 +24,13 @@ function feelingoccupied(imgs, border=0, bgvalue=imgs[1][1]) sum(s) - er end -function textoccupied(words, fontsizes, fonts; border=0) +function textoccupied(words, fontsizes, fonts) + border=1 imgs = [] for (c, sz, ft) in zip(words, fontsizes, fonts) # print(c) - img = Render.rendertext(string(c), sz, backgroundcolor=(0,0,0,0),font=ft, border=border) - push!(imgs, wordmask(img, (0,0,0,0), border)) + img = Render.rendertext(string(c), sz, backgroundcolor=(0,0,0,0), font=ft, border=border) + push!(imgs, img) end feelingoccupied(imgs, border) #border>0 以获取背景色imgs[1] end @@ -57,7 +58,7 @@ function preparebackground(img, bgcolor) return img, maskqt, groundsize, groundoccupied end -function prepareword(word, fontsize, color, angle, groundsize; backgroundcolor=(0,0,0,0), font="", border=0) +function prepareword(word, fontsize, color, angle; backgroundcolor=(0,0,0,0), font="", border=0) rendertext(string(word), fontsize, color=color, backgroundcolor=backgroundcolor, angle=angle, border=border, font=font, type=:both) end @@ -66,17 +67,17 @@ wordmask(img, bgcolor, border) = dilate(img.!=img[1], border) #https://github.com/JuliaGraphics/Luxor.jl/issues/107 ## weight_scale -function cal_weight_scale(words, fontsizes, fonts, target, initialscale; kargs...) +function cal_weight_scale(words, fontsizes, fonts, target, initialscale) input = initialscale - output = textoccupied(words, fontsizes, fonts; kargs...) + output = textoccupied(words, fontsizes, fonts) return output, sqrt(target/output) * input# 假设output=k*input^2 end -function find_weight_scale!(wc::WC; initialscale=0, density=0.3, maxiter=5, error=0.05, kargs...) +function find_weight_scale!(wc::WC; initialscale=0, density=0.3, maxiter=5, error=0.05) ground_size = wc.params[:groundoccupied] words = wc.words if initialscale <= 0 - initialscale = √(ground_size/length(words)/0.4*density) + initialscale = √(ground_size/length(words)/0.4*density) #初始值假设字符的字面框面积占正方格比率为0.4(低估了汉字) end @assert sum(wc.weights.^2 .* length.(words)) / length(wc.weights) ≈ 1.0 target_lower = (density - error) * ground_size @@ -91,8 +92,7 @@ function find_weight_scale!(wc::WC; initialscale=0, density=0.3, maxiter=5, erro break end wc.params[:scale] = sc - tg, sc = cal_weight_scale(words, getfontsizes(wc, words), fonts, - density*ground_size, sc; kargs...) + tg, sc = cal_weight_scale(words, getfontsizes(wc, words), fonts, density*ground_size, sc) println("scale=$(wc.params[:scale]), density=$(tg/ground_size)") if target_lower <= tg <= target_upper break diff --git a/src/train.jl b/src/train.jl index 91ac87f..b798b19 100644 --- a/src/train.jl +++ b/src/train.jl @@ -126,7 +126,7 @@ trainepoch_E!(tr_ma) = Dict(:collpool=>Vector{QTree.ColItemType}(), :queue=>Vect trainepoch_E!(s::Symbol) = get(Dict(:patient=>10, :nepoch=>1000), s, nothing) function trainepoch_E!(qtrees, mask; optimiser=(t, Δ)->Δ./4, queue=Vector{Tuple{Int, Int, Int}}(), collpool=trainepoch_E!(:collpool)) - listcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) nc = length(collpool) if nc == 0 return nc end step_inds!(mask, qtrees, collpool, optimiser) @@ -134,7 +134,7 @@ function trainepoch_E!(qtrees, mask; optimiser=(t, Δ)->Δ./4, pop!(inds,0, 0) # @show length(qtrees),length(inds) for ni in 1:length(qtrees)÷length(inds) - listcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni > 8length(collpool) break end end @@ -148,7 +148,7 @@ trainepoch_EM!(tr_ma) = Dict(:collpool=>Vector{QTree.ColItemType}(), trainepoch_EM!(s::Symbol) = get(Dict(:patient=>10, :nepoch=>1000), s, nothing) function trainepoch_EM!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, queue=Vector{Tuple{Int, Int, Int}}(), collpool=Vector{QTree.ColItemType}()) - listcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) nc = length(collpool) if nc == 0 return nc end step_inds!(mask, qtrees, collpool, optimiser) @@ -158,14 +158,14 @@ function trainepoch_EM!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds) inds = take(memory, length(inds)*2) for ni in 1:length(qtrees)÷length(inds) - listcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni > 4length(collpool) break end inds2 = first.(collpool)|>Iterators.flatten|>Set pop!(inds2,0, 0) # @show length(qtrees),length(inds),length(inds2) for ni2 in 1:length(inds)÷length(inds2) - listcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni2 > 8length(collpool) break end end @@ -177,7 +177,7 @@ trainepoch_EM2!(tr_ma) = trainepoch_EM!(tr_ma) trainepoch_EM2!(s::Symbol) = trainepoch_EM!(s) function trainepoch_EM2!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, queue=Vector{Tuple{Int, Int, Int}}(), collpool=Vector{QTree.ColItemType}()) - listcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) nc = length(collpool) if nc == 0 return nc end step_inds!(mask, qtrees, collpool, optimiser) @@ -187,7 +187,7 @@ function trainepoch_EM2!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds) inds = take(memory, length(inds)*4) for ni in 1:length(qtrees)÷length(inds) - listcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni > 4length(collpool) break end inds2 = first.(collpool)|>Iterators.flatten|>Set @@ -195,14 +195,14 @@ function trainepoch_EM2!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds2) inds2 = take(memory, length(inds2)*2) for ni2 in 1:length(inds)÷length(inds2) - listcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni2 > 4length(collpool) break end inds3 = first.(collpool)|>Iterators.flatten|>Set pop!(inds3,0, 0) # @show length(qtrees),length(inds),length(inds2),length(inds3) for ni3 in 1:length(inds2)÷length(inds3) - listcollision(qtrees, mask, inds3, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds3, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni3 > 8length(collpool) break end end @@ -216,7 +216,7 @@ trainepoch_EM3!(tr_ma) = trainepoch_EM!(tr_ma) trainepoch_EM3!(s::Symbol) = trainepoch_EM!(s) function trainepoch_EM3!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, queue=Vector{Tuple{Int, Int, Int}}(), collpool=Vector{QTree.ColItemType}()) - listcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, queue=queue, collist=empty!(collpool)) nc = length(collpool) if nc == 0 return nc end step_inds!(mask, qtrees, collpool, optimiser) @@ -226,7 +226,7 @@ function trainepoch_EM3!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds) inds = take(memory, length(inds)*8) for ni in 1:length(qtrees)÷length(inds) - listcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni > 4length(collpool) break end inds2 = first.(collpool)|>Iterators.flatten|>Set @@ -234,7 +234,7 @@ function trainepoch_EM3!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds2) inds2 = take(memory, length(inds2)*4) for ni2 in 1:length(inds)÷length(inds2) - listcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds2, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni2 > 4length(collpool) break end inds3 = first.(collpool)|>Iterators.flatten|>Set @@ -242,14 +242,14 @@ function trainepoch_EM3!(qtrees, mask; memory, optimiser=(t, Δ)->Δ./4, push!.(memory, inds3) inds3 = take(memory, length(inds3)*2) for ni3 in 1:length(inds2)÷length(inds3) - listcollision(qtrees, mask, inds3, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds3, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni3 > 4length(collpool) break end inds4 = first.(collpool)|>Iterators.flatten|>Set pop!(inds4,0, 0) # @show length(qtrees),length(inds),length(inds2),length(inds3) for ni4 in 1:length(inds3)÷length(inds4) - listcollision(qtrees, mask, inds4, queue=queue, collist=empty!(collpool)) + batchcollision(qtrees, mask, inds4, queue=queue, collist=empty!(collpool)) step_inds!(mask, qtrees, collpool, optimiser) if ni4 > 8length(collpool) break end end diff --git a/src/wc-helper.jl b/src/wc-helper.jl index c86e535..c03bdf6 100644 --- a/src/wc-helper.jl +++ b/src/wc-helper.jl @@ -28,6 +28,7 @@ function randommask(color, sz=800) ratio = ratio>0.9 ? 1.0 : ratio h = round(Int, sqrt(s*ratio)) w = round(Int, h/ratio) + println("mask size is $((h, w))") if rand() > 0.5 return shape(box, w, h, round(Int, h*(0.05+rand()/5)), color=color, backgroundcolor=ARGB(1, 1, 1, 0)) else diff --git a/src/wc-method.jl b/src/wc-method.jl index 0c876ac..6030330 100644 --- a/src/wc-method.jl +++ b/src/wc-method.jl @@ -12,7 +12,7 @@ initqtree!(wc, i; kargs...) = initqtree!.(wc, index(wc, i); kargs...) function initimage!(wc, i::Integer; backgroundcolor=(0,0,0,0), border=wc.params[:border]) params = wc.params img, svg = prepareword(wc.words[i], getfontsizes(wc, i), params[:colors][i], params[:angles][i], - params[:groundsize], font=getfonts(wc, i), backgroundcolor=backgroundcolor, border=border) + font=getfonts(wc, i), backgroundcolor=backgroundcolor, border=border) wc.imgs[i] = img wc.svgs[i] = svg initqtree!(wc, i, backgroundcolor=backgroundcolor, border=border) @@ -45,26 +45,29 @@ initimages! = initimage! * placement!(wc, style=:uniform) * placement!(wc, style=:gathering) * placement!(wc, style=:gathering, level=5) #`level` controls the intensity of gathering, typically between 4 and 6, defaults to 5. -* placement!(wc, style=:gathering, level=6, p=1) #`p` refers to p-norm (Minkowski distance), defaults to 2. +* placement!(wc, style=:gathering, level=6, p=4) #`p` refers to p-norm (Minkowski distance), defaults to 2. p=1 produces a rhombus, p=2 produces an ellipse, p>2 produces a rectangle with rounded corners. -When setting `style=:gathering`, you need to disable teleport (`generate!(wc, patient=-1)`). +When you have set `style=:gathering`, you should disable teleporting in ``generate!` at the same time(`generate!(wc, patient=-1)`). """ function placement!(wc::WC; style=:uniform, kargs...) if getstate(wc) == nameof(wordcloud) initimages!(wc) end @assert style in [:uniform, :gathering] - if style == :gathering - if wc.maskqtree[1][(wc.params[:groundsize].÷2)] == EMPTY && (length(wc.qtrees)<2 - || (length(wc.qtrees)>=2 && prod(kernelsize(wc.qtrees[2]))/prod(kernelsize(wc.qtrees[1])) < 0.5)) - setcenter!(wc.qtrees[1], wc.params[:groundsize] .÷ 2) - QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, 2:length(wc.qtrees)|>collect, - roomfinder=findroom_gathering; kargs...) + if length(wc.qtrees) > 0 + if style == :gathering + if wc.maskqtree[1][(wc.params[:groundsize].÷2)] == EMPTY && (length(wc.qtrees)<2 + || (length(wc.qtrees)>=2 && prod(kernelsize(wc.qtrees[2]))/prod(kernelsize(wc.qtrees[1])) < 0.5)) + setcenter!(wc.qtrees[1], wc.params[:groundsize] .÷ 2) + ind = QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, 2:length(wc.qtrees)|>collect, + roomfinder=findroom_gathering; kargs...) + else + ind = QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, roomfinder=findroom_gathering; kargs...) + end else - QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, roomfinder=findroom_gathering; kargs...) + ind = QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, roomfinder=findroom_uniform; kargs...) end - else - QTree.placement!(deepcopy(wc.maskqtree), wc.qtrees, roomfinder=findroom_rand; kargs...) + if ind === nothing error("no room for placement") end end wc.params[:state] = nameof(placement!) wc @@ -85,8 +88,8 @@ end * wc: the wordcloud to train * nepoch: training epoch nums # Keyword Args -* retry: shrink & retrain times, default 3 -* patient: number of epochs before teleporting +* retry: shrink & retrain times, defaults to 3, set to `1` to disable shrinking +* patient: number of epochs before teleporting, set to `-1` to disable teleporting * trainer: appoint a training engine """ function generate!(wc::WC, args...; retry=3, krags...) @@ -96,9 +99,12 @@ function generate!(wc::WC, args...; retry=3, krags...) ep, nc = -1, -1 for r in 1:retry if r != 1 - rescale!(wc, 0.95) + rescale!(wc, 0.97) + dens = textoccupied(getwords(wc), getfontsizes(wc), getfonts(wc))/wc.params[:groundoccupied] + println("#$r. try scale = $(wc.params[:scale]). The density is reduced to $dens") + else + print("#$r. scale = $(wc.params[:scale])") end - println("#$r. scale = $(wc.params[:scale])") ep, nc = train!(wc.qtrees, wc.maskqtree, args...; krags...) wc.params[:epoch] += ep if nc == 0 @@ -110,7 +116,7 @@ function generate!(wc::WC, args...; retry=3, krags...) wc.params[:state] = nameof(generate!) @assert isempty(outofbounds(wc.maskqtree, wc.qtrees)) else #check - colllist = first.(listcollision(wc.qtrees, wc.maskqtree)) + colllist = first.(batchcollision(wc.qtrees, wc.maskqtree)) get_text(i) = i>0 ? wc.words[i] : "#MASK#" collwords = [(get_text(i), get_text(j)) for (i,j) in colllist] if length(colllist) > 0 diff --git a/test/runtests.jl b/test/runtests.jl index d82762b..1ab0b8c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -31,6 +31,14 @@ include("test_textprocessing.jl") @test wc.params[:groundoccupied] == WordCloud.occupied(WordCloud.QTree.kernel(wc.maskqtree[1]), WordCloud.QTree.FULL) @test wc.params[:groundoccupied] == WordCloud.occupied(wc.mask .!= wc.mask[1]) + words = ["." for i in 1:500] + weights = [1 for i in 1:length(words)] + + @test_throws ErrorException begin + wc = wordcloud(words, weights, mask=shape(ellipse, 5, 5, color=0.95, backgroundsize=(10,10)), density=1000, angles=0) + placement!(wc) + end + wc = wordcloud( processtext(open("../res/alice.txt"), stopwords=WordCloud.stopwords_en ∪ ["said"], maxnum=300), mask = loadmask("../res/alice_mask.png", color="#faeef8", backgroundcolor=0.97), diff --git a/test/test_qtree.jl b/test/test_qtree.jl index 61a242f..04666e2 100644 --- a/test/test_qtree.jl +++ b/test/test_qtree.jl @@ -32,7 +32,7 @@ testqtree = WordCloud.testqtree words = [Random.randstring(rand(1:8)) for i in 1:rand(100:1000)] weights = randexp(length(words)) .* 1000 .+ randexp(length(words)) .* 200 .+ rand(20:100, length(words)); wc = wordcloud(words, weights, density=0.7) - clq = WordCloud.QTree.listcollision_qtree(wc.qtrees, wc.maskqtree) - cln = WordCloud.QTree.listcollision_native(wc.qtrees, wc.maskqtree) + clq = WordCloud.QTree.batchcollision_qtree(wc.qtrees, wc.maskqtree) + cln = WordCloud.QTree.batchcollision_native(wc.qtrees, wc.maskqtree) @test Set(first.(clq)) == Set(first.(cln)) end \ No newline at end of file