diff --git a/SmearcarDB/phoible b/SmearcarDB/phoible new file mode 100644 index 0000000..75a3590 --- /dev/null +++ b/SmearcarDB/phoible @@ -0,0 +1,2000 @@ +m +k +i +a +j +u +p +w +n +s +t +b +o +e +l +h +ɡ +ŋ +d +ɲ +f +t̠ʃ +ʔ +ɛ +ɔ +ʃ +r +z +ɾ +d̠ʒ +iː +v +aː +uː +˦ +˨ +t̪ +ts +ə +oː +eː +ĩ +ã +ũ +ɨ +x +d̪ +kʰ +ɡb +kp +n̪ +pʰ +ɪ +ʊ +kʷ +ʒ +õ +c +ɣ +ɓ +mb +ẽ +˧ +ɟ +ŋɡ +nd +β +tʰ +ɔː +ɛː +ɗ +o̞ +e̞ +l̪ +dz +ɛ̃ +s̪ +ɔ̃ +q +kʼ +ʈ +ɡʷ +ɖ +t̪ʰ +t̠ʃʰ +t̠ʃʼ +tʼ +˦˨ +ɸ +æ +pʼ +ɯ +ɨ̃ +n̠d̠ʒ +χ +ɑ +ʂ +˨˦ +ɽ +ɳ +cç +ɬ +ŋʷ +ç +ɟʝ +ʌ +ʎ +əː +ɭ +ð +tsʼ +tsʰ +ŋmɡb +ŋm +ɪ̃ +θ +y +ʊ̃ +kʲ +z̪ +ɦ +mː +ʊː +ũː +ʈʰ +ĩː +nː +ɪː +ə̃ +t̪s̪ +ɨː +xʷ +r̪ +õ̞ +˥ +kː +hʷ +qʼ +ʁ +lː +ãː +tʲ +ɡʲ +ai +mʷ +ŋɡʷ +ħ +ʈʂ +t̪ʼ +bʷ +b̤ +˩ +cʰ +ø +bː +˥˩ +ndz +sː +ẽ̞ +kʷʼ +ʝ +ʉ +ɑː +au +ɤ +pː +tː +nz +ɱv +ɡʰ +cçʰ +qʷ +n̠ +ɡː +m̥ +ʄ +qʰ +œ +pʲ +õː +mʲ +ɮ +fʷ +æː +ɥ +dʲ +ʕ +a̟ +jː +pʷ +χʷ +ɐ +ɹ +ŋk +d̪z̪ +ɖ̤ +d̪̤ +ɒ +ʐ +ɻ +nt +rː +ɘ +˩˥ +kʷʰ +bʲ +pf +*R̪ +dː +æ̃ +ɲː +ɲɟ +ẽː +t̪s̪ʰ +sʷ +n̥ +mp +n̪d̪ +tʷ +lʲ +ʋ +ɰ +ɯ̃ +ɾ̪ +o̞ː +wː +˨˧ +ɛ̃ː +j̰ +w̰ +ʍ +fː +ɔ̃ː +ɯː +ɢ +ŋː +˧˨ +ɺ +ɜ +ɑ̃ +hʲ +ɬ̪ +e̞ː +t̠ʃː +ʃː +nʲ +ʃʷ +ⱱ +ŋ̥ +ɕ +æ̞̃ +β̞ +l̥ +m̰ +ɟ̤ʝ +ɲ̥ +ia +ui +tɬʼ +t̠ʃʷ +t̪s̪ʼ +tɕ +cʼ +b̰ +a̰ +j̥ +ɣʷ +nʷ +sʲ +d̠ʒː +øː +yː +t̠ +bv +qʷʼ +ʔʷ +ḭ +zː +fʲ +m̤ +o̤ +ua +ʔʲ +ns +ʈʂʰ +ɡ̤ +ə̃ː +ɠ +n̠t̠ʃ +ɗ̪ +dʷ +lʷ +oi +ei +ṵ +o̰ +ḛ +w̃ +d̠ʒʷ +ɾʲ +ɱ +ɲʷ +e̤ +i̤ +l̤ +n̰ +ʔː +ʌ̃ +ʌː +ṳ +a̤ +˦˧ +uə +˥˦ +t̪ː +d̤ +m̩ +ɲ̟ +ou +ɔ̤ +t̪ʲ +zʷ +s̻ +ʁʷ +mbʷ +tɬ +sʼ +ɵ +ɟː +kǃ +vʲ +l̰ +jʷ +d̠ʒ̤ +ʈː +kʼː +rʲ +l̠ +ɔi +ʑ +dʑ +k̰ +p̰ +bʰ +kʼʲ +ɗː +u̞ +a̟ː +r̥ +n̩ +ie +ʀ +t̠ʃʼː +kǀ +ʏ +t̪ɬ̪ʼ +ɛ̤ +ɱf +t̰ +lˠ +ə̆ +ˀm +ˀj +hː +tʼː +ʒː +ɓ̥ +ɑ̃ː +n̪̥ +iə +l̪̥ +d̰ +rʷ +ɓː +ɵ̞ +d̪ː +ɒː +ˀn +ɯ̞ +ŋ̩ +xː +tɬʰ +ʈʂʼ +ɤ̞ +j̃ +œː +l̪ˠ +ɽ̤ +*R +n̪̰ +↓˦ +tsʷ +r̃ +N +ɤː +ɢʷ +qʷʰ +ʃʼ +ɖʐ +˩˨ +ˀw +˦˥ +˧˩ +qː +jˀ +ndʲ +ʃʲ +ᶑ +βʲ +ʉː +t̠ʃʲ +ɨ̃ː +n̪̤ +n̤ +ʒʷ +s̪ʲ +l̪ʲ +iu +vʷ +cː +dʰ +ʐ͇ +ɖː +uo +nts +pʼː +ã̟ +ɐː +pʲʰ +kǁ +ɒ̃ +zʲ +tsʲ +ie̞ +d̪ʲ +t̪ɬ̪ +ŋkʷ +əi +ɺ̠ +s̪ʼ +ŋǃ +kǃʰ +ŋɡʲ +kˀ +sˀ +qχ +ˀb +sʰ +˧˦ +ĭ +χː +sˤ +kʲʼ +ɗ̥ +ɤ̃ +ᴅ +cɕ +e̞i +l̪̰ +ɯa +ndʷ +kǀʰ +q̰ +t̠ʃ̰ +d̪ʰ +cʷ +wʲ +i̤ː +ã̰ +pˀ +t̠ʃʷʰ +n̻ +s̪ː +tsː +ˀl +ɔ̰ +nˀ +mˀ +ŭ +ă +ŋʲ +kʲʰ +t̻ +c̟ +æ̃ː +wˀ +ɸʲ +zˤ +lˤ +tˤ +dˤ +d̠ʒʲ +vː +n̪t̪ +ɯ̤ +d̠ +ɯə +l̃ +əu +o̞i +ɨi +n̪ʲ +ɡǃ +tr +dr +ɡǀ +ts̰ +mʰ +nʰ +ea +tɕʰ +ṳː +a̤ː +ɛ̤ː +ɔ̤ː +ḭ̃ +r̤ +iˑ +aˑ +uˑ +oˑ +t̠ʃˀ +t̠ʃʷʼ +e̞ˤ +t̻s̻ +dzː +ɛ̰ +u̥ +i̥ +ɘː +l̻ +ɳɖ +tx +t̪θʼ +t̪θ +kx +h̃ +t͉ +p͉ +k͉ +ʰt +ʰk +ɳɖʐ +ʕː +ħː +kʷː +iɛ +pfʰ +kxʰ +ø̞ +ɜ̃ +aˤ +ɮ̪ +t̪ɬ̪ʰ +mbʲ +kǀ͓ +ŋǀ͓ +d̪ɮ̪ +o̞u +ŋ̰ +kpʷ +ndr +n̠ʃ +↓ +ɲʒ +˦˨˦ +˨˦˨ +ŋmkp +dzʷ +d̠ʒʰ +d̃ +b̃ +oa +ao +eu +o̤ː +ɖʰ +e̝ +e̤ː +ŋǁ +kǁʰ +ŋǀ +ɲ̤ +eˑ +ɵ̞ː +k̟ +d̻ +t̻ʰ +z̻ +ɬʲ +r̠ +ˀɲ +ɪ̈ +ə˞ +ɴ +t̪θʰ +ʔˤ +xʼ +ɯ̃ː +ɤ̞̃ +t̠ʃ͉ +kʰː +t̠ʃʰː +tsʼː +ʰp +n̠ʒ +t̠ʃʲʰ +dˤː +zˤː +sˤː +tˤː +ɟʝʷ +kǂ +ɐ̃ +tʲʰ +ɽ̃ +ɾ̤ +dɮ +n̠d̠ +uˤ +t̪ˤ +kpʰ +ɨ̞ +ɛi +ao̞ +aɛ +ɤ̤ +t̪s̪ʲ +mpʰ +kǁ͓ +kǃ̠ +v̤ +ae̞ +d̪̰ +ɲ̰ +ɻʲ +βʷ +ɟʷ +ue +ɽʰ +ɠɓ +ʊ̤ +k̰ʷ +ae +ɑ̤ +ɡ̰ +ṵ̃ +aɪ +ʈʼ +ʰm +õ̰ +ð̞ +kpʲ +ps +ɥ̃ +ɾʷ +kǀʼ +ɡǁ +cçʼ +β̃ +w̤ +ë +tˀ +tsʷʰ +fʼ +d̻z̻ +qχʷ +ɮʲ +õ̞ː +ẽ̞ː +ˀd +a˞ +ɛ̆ +l̩ +r̩ +tːs +ɪ̃ː +ɬʼ +ɨ˞ +ʰt̠ʃ +ʌ̃ː +rˤ +çʷ +ɡ̤ʷ +d̪ð +e̯ +mʷˠ +ɡ̟ +ø̞ː +œ̃ +ʁ̞ +ɨ̆ +ɵ̞̆ +ɔ̆ +cçʷ +s̪ʷ +iˤ +ɬ̪ː +o̞ˤ +t̪s̪ʷʰ +t̪s̪ʷʼ +z̪ˤ +s̪ˤ +d̪ˤ +t̪s̪ː +ʕ̝ +z̪ʲ +t̪ˀ +cɕʰ +ɲc +ɴq +ŋkʰ +aɯ +ɺ̪ +e̞u +l̪̤ +ŋǃ̠ +ŋ̥ǀ͓ˀ +kǀ͓ʰ +ŋǁ͓ +t̪ʷ +ɳʈ +xʲ +e̞o̞ +ɯi +s̪ʰ +ɡǃx +ɡǂ +kǃx +ŋ̥ǃ +ɡ̤ǃ +æi +n̪d̪z̪ +ɟ̰ +r̪ʲ +*R̪̰ +iˠ +nsʷ +ntʷ +˦↓˦ +ndʑ +ʄ̥ +ɻʷ +kʰʷ +ö +tʲʼ +iaː +ʕʷ +lʼ +ŋɣ +nɡ +cʲ +ɟʲ +ja +q̰ʷ +oe +s̺ +c̰ +˧˦˧ +o̝ +bz +eo +ɯ̰ +ə̰ +tç +t̺ +ɡbʲ +ɡᶣ +ɖr +ʈr +kxʼ +ɟ̤ +ɵː +ᶑʼ +cʼː +nɗ +kǁʼ +kǃʼ +ɗʲ +i̞ +ɔ̝ +ï +r̠ʲ +t̪̰ +üː +c̤ +d̤z +ʰɾ +ḛ̃ +ø̞ˤ +t͈ +p͈ +k͈ +æˤ +t̻s̻ʼ +qχʷʼ +qχʼ +β̞ː +ˀr +ˀŋ +˩̰ +˨˩ +˧˥ +˧˨˥ +b̤̥ +tz̤̥ +˥˧˥ +ɡ̤̥ +d̤̥ +z̞̩ +k̟ʰ +˥̰ +ɾˀ +ĕ +ŋ̥ʲ +ʂ͇ +ɲ̩ +ɡɣ +ʎ̟ +ɸʷ +ɬː +s̻ː +dl +ʃ͈ː +k͈ː +s͈ː +t͈ː +ɤ̞ː +ʊ̃ː +ɸʼ +ʰkʷ +çʲ +ɺʲ +bˀ +dˀ +kˤ +ɪ̈ː +ʊ̈ +sʼː +ʁː +ħʷ +l̪ː +ɾˤ +lˤː +ʃ͉ +s͉ +uɔ +b̤ʲ +o̯ +l̥ˠ +bʷˠ +ɾˠ +nˠ +n̥ʲ +n̥ˠ +ɸʷˠ +pʷˠʰ +l̥ʲ +ə̯ +ɾ̥ʲ +ɾ̥ˠ +ʃˠ +ʒˠ +ʒʲ +ʈʰː +pʰː +n̪ː +t̪ʰː +ɟʝː +cçː +ĕ̞ +ɒ̆ +ŏ̞ +z͇ +ʊ̙ +ʊ̙ː +ɪ̙ +ɔˤ +ɪˤ +ʊˤ +ɹ̪ +ʃʷː +ʁʷˤ +qχʼː +t̪s̪ʼː +χʷˤ +χʷː +χˤ +ʁˤ +ɤ̟ +ɯ͓ +ɞ +ʌ̤ +ɒ̤ +ɘ̃ +z͇̪ +n̠̥ +ỹ +ɬ̪ʲ +n̪t̪ʰ +n̪t̪s̪ +ɳʈʂ +ŋ̥ʷ +nr +aɨ +kǃ̠ʰ +ŋ̥ǁ͓ˀ +ŋ̥ǃ̠ˀ +kǁ͓ʰ +ɭ̥ +ɡbʷ +ɔ̃ĩ +ŋkʲ +t̪ɦ +pɦ +kɦ +ɣʲ +ʊi +e̠ +õ̞ĩ +ũĩ +ɨa +ɜː +ɟʑ +aˤː +ɡʼ +ãˤ +ɡǀ͓ +dʼ +tˠ +dˠ +ɡǂx +d̠ʒʼ +o̞a +kǂʰ +ŋ̤ǃ +dz̤ +ẽ̞ĩ +ŋ̥ǀ͓ʰ +ŋǂ +ŋ̥ǃˀ +kǂx +b̪ +ts͇ +ɲɟʑ +n̪ʷ +ɨə +ŋ̤ +kʷˀ +ɰ̰ +ɬ̪ʼ +ɓʲ +uʌ +n̪z̪ +ðʲ +nzʷ +n̠d̠ʒʷ +˨˦˧ +ɡv +kf +ɠ̥ +ɗʒ +eˠ +nh +nl +r̝ +˨˥˩ +dʲʷ +tʰʷ +cʷʰ +uaː +mʼ +nʼ +wʰ +ɾʰ +ɗʰ +ˀp +ɾ̥ +ɟʰ +dzʰ +k̃ +ɡ̃ +ntʰ +ṽ +nɟ +ju +wə +ʉ̃ +æ̤ː +æ̤ +ɵ̤ +ʊ̤ː +ay +vʰ +s̰ +iã +ʌi +lʰ +ʊa +w̥ +ts̪ +uai +iau +˧˨˧ +ɔu +ⱱ̟ +wa +aʊ +io +ɥ̥ +ʊu +ʊɪ +ɔɪ +ɲj +ʰn̪ +ɛə +iɔ +ɑi +ɡbː +kpː +ə̰̃ +t̪s +ɲʰ +uj +aj +aw +t̪n̪ +tn +pm +kŋ +ʈɳ +tl +nd̪ +eɪ +˥˧ +tɕᶣ +ɕᶣ +sᶣ +dʑᶣ +ɲᶣ +ʙ +ɦʷ +i̤ˑ +ɔ̤ˑ +ṳˑ +e̤ˑ +a̤ˑ +ɛ̤ˑ +ɗʷ +ɓʷ +m̤b̤ +n̤d̤ɮ̤ +ɦ̤ +mbv +n̤d̤ +ntsʼ +n̠t̠ʃʼ +z̤ +ɪ̤ +kᶣ +mɓ +dx +kǁxʼ +ɡǁx +kǁx +kʘ +ɡǀx +kǀx +kǃxʼ +kǀxʼ +oˤ +bβ +tɾ +dɾ +ndɾ +u̞ː +ɔ̝ː +ɛ̝ː +i̞ː +ɛ̝ +mpʲ +ɡʲʷ +lˀ +u̜ +i̜ +ə̤ +k̙ +ë̞ +ä +ɽ̩ +l̠˞ +ʰw +ʰn +aʲ +ʰd +t͈sʷ +x͈ +k͈ʷ +s͈ +ʃ͈ +χ͈ +t͈s +x͈ʷ +tsʷʼ +t̠͈ʃʷ +q͈ +q͈ʷ +χ͈ʷ +ʃ͈ʷ +t̠͈ʃ +k̟ʲʼ +ʝ̟ +x̟ʲ +ɬʲʼ +ɡ̟ʲ +k̟ʲʰ +t̻ʼ +ɣ̟ʲ +ç̟ +ɭː +ˀɖ +ˀɡ +ˀd̠ʒ +ɪ̯ +ʊ̯ +ei̙ +əɨ̙ +o̘ː +ou̙ +ɛ̘ː +a̟̙ː +ə̘ː +e̘ː +ɔ̘ː +ʌ̯ +˨˩̤ +˦˥̰ +ə̃˞ +a̟˞ +u˞ +ɑ̃˞ +ɤ˞ +w˞ +ə̟ +ŋɡ̟ +˧˩̰ +˧˨ˤ +oũ +eĩ +ŋˀ +˧˨̤ +ŭ̃ +ã̆ +˨˧˩ +ɛ̆̃ +iẽ +ŏ̃ +ʈr̥̠ +ɳʈr̠̥ +ɖr̠ +ɳɖr̠ +d̠͈ʒ +d͈ +b͈ +d̪̤̥ +m̥ʷ +ɲ̟ʝ̟ +ɶ̝ +ɴː +kxʷ +t̻s̻ʰ +p͈ː +t̠͈ʃː +l̻̰ +t͉s +s̻θ +t̠ːʃ +ɬ̻ +xh +kʷʼː +kʷʰː +tsʰː +ã̟ː +ɯ̆ +oːu +y̆ +ʰts +ʰq +ʈ͉ +ɺː +˦˩ +z̞̩̃ˠ +z̞̩ˠ +r͈ː +ɡ͈ː +d͈ː +b͈ː +z͈ː +ʒ͈ː +x͈ː +f͈ː +n͈ː +ħ͈ː +ɣ͈ː +l͈ː +m͈ː +ɪ̠ +ɜɪ̯ +ʊ̈ː +ᶑː +ɢː +ðˤ +mˤ +bˤː +fʷː +z̪ː +bʷː +bˤ +mʷː +rˤː +mˤː +f͉ +d̩ +ŋ̩ʷ +b̩ +ɣ̩ +z̩ +ɡ̩ +v̩ +ɡb̩ +ɡ̩ʷ +cçʷʰ +kʟ̥͓ʼ +ˀd̪ +ˀo̯ +ɤ̯ +ɯ̞̯ +ɸ̃ +ŋˑ +ɹ̩ +ɭ̩ +l̪̩ +ð͉ +ɔ̯ +ɛ̯ +n̻ʲ +d̻ʲ +t̻ʲ +t̻ː +n̻ː +d̻ː +t̻ʰː +l̻ː +ʋː +æẽ̯ +ɔo̯ +d̪̤ː +ɡ̤ː +æe̯ +ɔõ̯ +ɖ̤ː +d̠ʒ̤ː +b̤ː +ə̥ +p͉ʲ +t͉ʲ +ioː +iæ +i̙ː +çː +pfʼ +ɡⁿ +dⁿ +d̠ⁿ +bⁿ +d̪ⁿ +ɖⁿ +ɐˤ +ɜi +s̪ʷː +d̪ʷ +qχʷˤʼ +χˤː +t̪ɬ̪ʷʰ +t̪ɬ̪ʷʼ +qχˤ +ɬ̪ʷ +z̪ʷ +qχˤː +χʷˤː +ɬ̪ʷː +qχˤʼ +t̪ʷʰ +qχʷˤ +ʈʂ͇ +kxʼː +qχː +t̪ɬ̪ʼː +t̪ɬ̪ː +kxː +n̪s̪ +*Rʲ +ɛo̞ +ɛ̃ɔ̃ +ɑ̃ɔ̃ +ɬʟ̥͓ +t̪s̪ˀ +kɬ +ɯ̤ə̤ +*R̪̥ +i̤ə̤ +ṳə̤ +t̪ˠʰ +kxʷʰ +ø̆ +n̪d̪ʲ +t̪ʲʰ +r̠̙ +n̠t̠ʃʰ +ɳʈʂʰ +ɴqʰ +n̪t̪s̪ʰ +ɛɯ +ɗ̠ +ɡˡ +ɹ̪̥ +ia̟ +ɾ̠ +i͓ +u͓ +ŏ +ɲcɕ +əɯ +r͓̪ +j̟ +ɳ̥ +ŋ̥m̥ +ɾ̪ʲ +ḁ +o̞̥ +e̞̥ +ãĩ +ɨ̃ĩ +ʛ̥ +n̠t̠ +tɦ +tsɦ +ɾ̰ +tsˀ +ɘ̃ː +ʃ͇ +ʒ͇ +ɬ̪ʲʼ +ɮ̪ʲ +o̟ +e̞ə +a̟i +ã̟ĩ +d̪l̪ +ɕʼ +ʂʼ +ᴅ̪̰ +ᴅ̪ +s̪ˀ +ɐ̹̆ +ɐ̆ +ʉ̆ +bʼ +ŋ̥ǂˀ +ãẽ̞ˤ +dzʼ +ao̞ˤ +ŋ̥ǀ͓xˀ +ŋ̥ǂʰ +dzˠ +ŋ̥ǃˠˀ +kǀ͓x +tsˠ +o̞ˤː +ae̞ˤ +ŋˤ +ŋǂ͓ˡ +o̞iˤ +ŋ̥ǂxˀ +õ̞ã +õ̞ˤ +ɡ̰ǃx +ɡ̰ǀ͓x +ãˤː +ɡ̤ǂ͓ˡ +õ̞ãˤ +ɡǂ͓ˡ +ẽ̞ũ +kǂ͓ˡʰ +ŋ̤ǀ͓ +t̠ʃˠ +d̠ʒˠ +o̞e̞ +õ̞ĩˤ +ɡ̰ǂ͓ˡx +ŋ̥ǂ͓ˡxˀ +ŋ̤ǂ +ɡǀ͓x +ɔ̃ˤː +ŋ̥ǂ͓ˡʰ +ɡǂ͓ˡx +ɡ̰ǂx +ɡ̤ǂ +ŋ̥ǂ͓ˡˀ +ãõ̞ˤ +ɡ̤ǀ͓ +kǂ͓ˡ +kǂ͓ˡx +o̞aˤ +ŋ̤ǂ͓ˡ +ĩẽ̞ +xʷː +t̪s̪ʷː +qʷː +t̠ʃʷː +ø̠ +õ̞ũ +õ̞̰ +ḭ̃ +ã̰ +ẽ̞̰ +e̞̰ +o̞̰ +ɺ̠̰ +hˀ +kǃxʰ +kǀ͓ˠʰ +ŋ̥ǃ̠ʰ +kǃ̠xʰ +kǁ͓xʰ +ŋ̥ǁ͓ʰ +ɸ̞ +d̪z̪̤ +t̠ʰ +ɪe̞ +ɭ͓ +ɔy +øy +æʉ +ɒ̝ +ʊ̆ +ɪ̆ +ɯ̞̆ +ʰs̪ +ʰʃ +d̠̰ +ɖr̠͓ +ʈɹ̠̥ +a̤ṳ +ɯ̤i̤ +l̠̤ +ʒ̤ +i̤a̤ +n̠̤ +ɤ̤i̤ +ṳi̤ +i̤ɛ̤ +ɔ̤i̤ +ɤi +a̤ɯ̤ +a̤i̤ +o̤i̤ +i̤ṳ +io̞ +ṳa̤ +e̞a +ɢʷˤ +qˤʰ +qˤʼ +qʷˤʼ +qʷˤʰ +ɢˤ +kǀ͓ˀ +ɡǁ͓ +kǁ͓ˀ +ɡǃ̠ +kǃ̠ˀ +yø̞ +r̪̰ +r̪̥ +r̪ˤ +l̪ˤ +ʁ̞̰ʷ +qʷˀ +t̪ɬ̪ˀ +qˀ +ʁ̞ʷ +ɨ̞̃ +d̪z̪ʲ +β̞ʲ +ʈˀ +ɖ̰ +ʉ̞ +ɑ̝ +ĩˠ +n̪d̪ʷ +ɣ̰ +ts͇ʰ +cɕʼ +χʼ +χʷʼ +xʷʼ +ɾ͓ +uˤː +iˤː +ɲɟʝ +β̞ˠ +ɵ̃ +ɯʌ +iʌ +ʐ̰ +ʟ̥͓ +e̞̠ +o̞̟ +t̪s̪ɦ +ʟ +r̪ˠ +ʔ̬ +ɤ̞̟̃ +kʟ̥ʼ +kǃ͓ +ɣː +ɱfʷ +n̠ʃʷ +˨˧˨ +↓˦˨ +mv +lʔ +nð +ŋmˤ +ɡbˤ +kpˤ +ɠ̥ʷ +ɠ̥ʲ +aˠ +ɪˠ +ɛˠ +fʰ +ẅ +ɣv +a̠ː +a̠ +ɕː +ʑː +pˤ +wˤ +jˤ +kǀ̪ +kǀʷ +kǃ̪ +tsʰʷ +kǀʰʷ +rʰ +ü +ʕʼ +yʼ +wʼ +ɹˤ +ʕʷʼ +ɹ̰ˤ +jʰ +ˀt +ŋb +kʰʲ +ɲcʲ +ˀɗ +ˀɟ +dz̃ +p̃ +t̃ +pʰʷ +b̃ʷ +k̃ʷ +z̃ +m̃ʷ +jɔ +eə +oe̞ +ʡ +ɵ̤ː +n̥ʃ +n̠̥t̠ʃ +ɱ̥f +b̻ +k̻ +p̻ +t̺s̺ +o˞ +r̺ +n̺ +uẽ +ɳʰ +ɪa +ɪʌ +æe +ɪã +ʊe +ṳa +ɯ̤ː +i̤a +ɤ̤ː +ʌ̤ː +ɑ̤ː +ɯ̤a +ʕ̰ʷ +ʕ̰ +r̰ +pʃʼ +pʃʰ +fʃ +pʷˠː +pʷˠ +mʷˠː +ɻː +ɟ̩̰ +f̰ +θ̰ +ɹ̝ +t̰s̰ +uei +t̠ʃ̺ʰ +iou +ye +ʃ̺ +ɔɛ +dzʲ +ɛɪ +ɛj +œy +ˀj̰ +ˀw̰ +oi̯ +wei̯ +au̯ +wai̯ +jau̯ +ai̯ +jai̯ +ei̯ +we +ou̯ +jeu̯ +wo +wi +jo +ui̯ +je +eu̯ +ld +n͉ +eˀ +l͉ +aˀ +m͉ +ʂ͉ +oˀ +iˀ +uˀ +k͉ʷ +˦ː +˨ː +ɐu +ɐi +w̞ +ɛʊ +ʰɾ̪ +ʎ̥ +ũə +ɔə +ɛ̃ə +ĩə +ãi +ɯ̃ə +ʌə +uɨ +iɨ +zˠ +ɾ̪ˠ +ðˠ +æu +ɪi +mˠ +sˠ +ieː +iɛː +˦˥˦ +tɬ̰ +ʉi +ɫ +ɨ̥ +ɛ̰̃ +ˀl̪̥ +ˀq +ˀt̪ +ˀn̪̥ +ˀw̥ +ˀt̪ɬ +ˀt̪s +ˀj̥ +ˀm̥ +ˀkʷ +ɑʊ +æɪ +ʎʼ +ʎʰ +ɲʼ +ŋʷː +ej +ɛw +jɛ +ow +ɛu +ɛ̙ː +a̙ˠ +ɔ̙ +ɛ̙ˠ +ɔ̙ː +a̙ː +ɛ̙ +ɪ̙ˠ +ɪ̙ː +a̙ +oj +ɡɦ +lɦ +nɦ +ɟɦ +bɦ +mɦ +ɖɦ +d̪ɦ +ɳɦ +ʉ̟ +ɧ +tʰʲ +dz̪ +tçʰ +cɲ +ʊɔ +ɪɛ +ɲʄ +ɑ̃ĩ +ɑ̃õ +ẽĩ +ɑu +ɑe +õũ +ɑo +z̥ +ɣ̥ +x̥ +ɴɢ +oʊ +aɔ +eɔ +iʊ +uɛ +oɛ +oɪ +eʊ +uɪ +˥˧̰ +˧˩̤ +a̰ḭ +a̰ṵ +˨˥ +u̙ +o̙ +o̘ +u̘ +e̘ +i̙ +i̘ +e̙ +t̠n̠ +ʃʰ +mw +ʑᶣ +lᶣ +ŋmʲ +br +ŋɡː +mbː +ndː +ʔʲː +t̠ʃʱ +wʱ +tʱ +tʷʰ +pkʰ +bɡ +pʱ +kʷʱ +tsʱ +eʲ +↓˦↓˦ +sʲʷ +a̰ˑ +o̰ː +o̰ˑ +ḭː +ɛ̰ː +ɛ̰ˑ +ɔ̰ˑ +ɔ̰ː +ḛˑ +ḛː +o̤ˑ +a̰ː +ḭˑ +l̥ː +ɱð +uːʌ +iːɛ +iːe +uːa +ɰ̃ +ɤ̃ː +d̤z̤ +mbz +psʰ +tlʰ +n̠̩d̠ʒ +d̤ʒ̤ +d̤ɮ̤ +ŋ̤ɡǃ +b̤z̤ +n̤ɡ̤ +ndl +b̤v̤ +ntʼ +ɡ̤ǁ +ŋ̤ǀ +n̤d̤z̤ +d̠̤ʒ̤ +ŋǃʼ +mpʼ +ŋǁʼ +ɮ̤ +ŋ̤ǁ +n̠̤d̠̤ʒ +mpfʼ +ntlʼ +ɲ̤ɟ̤ +ɲcʼ +m̤b̤v̤ +ɣ̤ +ɡ̤ǀ +ŋkʼ +ŋ̤ɡ̤ +l̪ʷ +ɳɖr +jʔ +y̤ +œ̤ +rᶣ +e̥ː +m̪ +e̥ +p̪ +ᶑʼː +n̠t̠ʃʷ +nˤ +nˤː +rʼː +lʼː +rʼ +ɡɓ +ˀy +ʔw +dʼkxʼ +d̪ʼkxʼ +eˤ +ɢʰ +kʘxʼ +ɢʘ +ɡǂqʰ +ŋʘ +ɡǀkxʼ +qǀʼ +qʘ +qǀʰ +ˀnʘ +ŋ̥ʘ +ɴɢǀqʰ +kǂxʼ +ɡǃkxʼ +ɡʘqʰ +ɡǀqʰ +o̰ʰ +qʘʰ +ɡǂkxʼ +ŋ̥ǀ +qʘʼ +pʼkxʼ +d̪x +tʼkxʼ +ɴɢǁqʰ +ṵʰ +qǂʰ +qǂʼ +ɡǃqʰ +ɡʘkxʼ +ɡǁkxʼ +t̪ʼkxʼ +ɡǁqʰ +kʘʼ +kǂʼ +kʘʰ +ɴɢǃqʰ +qǁʰ +qǁʼ +ɡʘx +ɢǀ +ɢǁ +ɢǂ +ɢǃ +ɡʘ +a̰ʰ +t̪x +ɡʼkxʼ +qǃʰ +ˀnǁ +ˀnǀ +ˀnǃ +ˀnǂ +ŋ̥ǂ +ŋ̥ǁ +qǃʼ +qǁ +qǀ +qǃ +qǂ +kʘx +ŋǃǃʰ +kǃǃʼ +kǃǃʰ +qm +kǃǃ +ɡǀxʼ +ɡǃǃʰ +kǃǃx +d̠ʒxʼ +kǁʼʰ +õˤ +ɡǃʰ +ɡǃxʼ +qn +ʼŋǃ +ʼŋǀ +ɡǃǃxʼ +ŋǀʰ +ʼn +ʼm +kǃǃxʼ +kǀʰʼ +tʰʼ +ŋǃʰ +kǃǃʰʼ +ɡǀʰ +ɡǃǃ +ũˤ +ɡǃǃx +t̠ʃx +kǃʰʼ +ɡǁxʼ +ŋǃǃ +pɸ +ŋʰ +nθ +˥˨˧ +˧˥˨ +ɒ̃ː +t̪ʃ +ɪ̝ +øɘ +eɘ +œu +œi +oɘ +ɘi +ɪ̝ː +hʼ +b͉ +ˀb͉ +q̚ +ɡbr +kpr +ðː +ʈɽ +ɳɖɽ +ɖɽ +r̪ː +ɸː +ɸʰ diff --git a/SmearcarDB/server.py b/SmearcarDB/server.py index 32b7f4a..18037eb 100644 --- a/SmearcarDB/server.py +++ b/SmearcarDB/server.py @@ -1,9 +1,15 @@ from flask import Flask from flask import render_template, jsonify, request from flask_sqlalchemy import SQLAlchemy +from numpy.polynomial.polynomial import polyfit +from numpy import corrcoef +import numpy as np +import tkinter +import matplotlib.pyplot as plt from flask import send_file import datetime import os +from scipy import stats app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db' @@ -41,7 +47,6 @@ class Update(db.Model): date = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now()) - class Editor(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) authority = db.Column(db.Integer, nullable=False, default=1) @@ -49,10 +54,91 @@ class Editor(db.Model): # 1: Below + create Updates # 2: Edit values and Add files # 3: No Access - username = db.Column(db.String(32), nullable=False) password = db.Column(db.String(32), nullable=False) +def rand_jitter(arr): + stdev = .01*(max(arr)-min(arr)) + return arr + np.random.randn(len(arr)) * stdev + +def uniqueness(title="Figure 1"): + x = [] + y = [] + languages = Language.query.all() + for phoneme in Phoneme.query.all(): + frequencies = Frequency.query.filter_by(phoneme_id=phoneme.id).all() + values = [x.value for x in frequencies] + x.append(len(frequencies) / len(languages)) + y.append(sum(values) / len(frequencies)) + print(corrcoef(x, y)) + b, m = polyfit(x, y, 1) + plt.scatter(rand_jitter(x), y, s=7) + bestfit = [b + m * number for number in x] + plt.plot(x, bestfit, '-') + plt.xlabel("Phoneme Presence in Studied Languages") + plt.ylabel("Average Frequency / %") + plt.title(title) + plt.show() + +def phoneme_rank(scatter=False, detail=1000, textOutput=False, title="Figure 2"): + speakers = { + 'Spanish (Castillian)': 46.4, + 'English (American)': 308.9, + 'Spanish (American)': 435.7, + 'Japanese': 128, + 'German': 76, + 'Arabic': 315, + 'Mandarin': 909, + 'Portuguese (Brazilian)': 194, + 'French': 76.8, + 'Hindi': 260, + 'Polish': 40.3, + 'Samoan': 0.40742, + 'Kaiwa': 0.0021, + 'Bengali': 243, + 'Swedish': 12.8, + 'Malay': 60.7, + 'Italian': 64.8 + } + total = sum(speakers.values()) + calculation = sorted([(phoneme.name, sum([frequency.value * speakers[Language.query.filter_by(id=frequency.language_id).first().name] / (total * len(Language.query.filter_by(name=Language.query.filter_by(id=frequency.language_id).first().name).all()) ) for frequency in Frequency.query.filter_by(phoneme_id=phoneme.id).all()])) for phoneme in Phoneme.query.limit(detail).all()], key=lambda x:-x[1]) + labels, data = zip(*calculation) + if textOutput: + return labels + + if scatter: + plt.yscale("log") + plt.plot(range(len(data)), data) + else: + plt.bar(range(len(data)), data) + + plt.xlabel("Phoneme Rank") + plt.ylabel("Frequency weighted by Number of Speakers / %") + plt.title(title) + plt.show() + +def phoible_compare(): + # lang_id = Language.query.filter_by(name=lang).first().id + with open("phoible", "r") as f: + phoible = f.read().splitlines() + phonemes = [phoneme.name for phoneme in Phoneme.query.all()] + return [x for x in phoible if x in phonemes] + +def rank_compare(textOutput=True, title="Rank Comparison"): + phoible = phoible_compare() + original = phoneme_rank(textOutput=True) + phoible_ranks = list(range(len(phoible)+1))[1:] + original_ranks = [original.index(phoneme) + 1 for phoneme in phoible] + if textOutput: + return {"kendall": stats.kendalltau(phoible_ranks, original_ranks), + "spearman": stats.spearmanr(phoible_ranks, original_ranks), + "wilcoxon": stats.wilcoxon(phoible_ranks, original_ranks, zero_method="pratt")} + plt.scatter(phoible_ranks, original_ranks) + plt.xlabel("Phoible Rank") + plt.ylabel("Weighted Rank") + plt.title(title) + plt.show() + def database(): final = {'values': []} @@ -83,18 +169,19 @@ def phoneme_add(info): # } phoneme = Phoneme.query.filter_by(name=info['phoneme']).first() language = Language.query.filter_by(id=info['language_id']).first() + if not phoneme: + phoneme = Phoneme(name=info['phoneme']) + db.session.add(phoneme) link = Frequency.query.filter_by( language_id=language.id, phoneme_id=phoneme.id).first() - if phoneme and link: - link.value = info['value'] - else: - if not phoneme: - phoneme = Phoneme(name=info['phoneme']) + if not link: link = Frequency(value=info['value']) link.phoneme = phoneme language.phonemes.append(link) - db.session.add_all([phoneme, link]) + db.session.add(link) + else: + link.value = info['value'] def phoneme_remove(info):