์ง๋ ๋
ผ์์์ ์ฐ๋ฆฌ๋ ์ผ๋จ์ Cytoscape๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํ์ ์ง์๊ณ ,
๊ทธ๋ฌ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๊ฐ ๋ง์์ก์ ๋ ๋๋ ค์ง๋ ํ์์ ๋ํ ๋ฐฉ์์ ๋ ์ฌ๋ ค์ผ ํ๋ค.
๊ฐ๋จํ๊ฒ 2๊ฐ์ง์ ์ ํ์ง๋ฅผ ์๊ฐํ ์ ์๋ค.
1. ์๋ฒ์์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์, ์ด๋ฏธ์ง ํ์ผ๋ง ํด๋ผ์ด์ธํธ์ธก์ผ๋ก ์ ์กํ๋ค.
2. ํด๋ผ์ด์ธํธ์ธก์์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋, ์ต์ ํํด์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋ชจ์ํ๋ค.
1๋ฒ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ธก์ ๋ถ๋ด์ ๋์ด์ค ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋์ ์ฌ์ฉ์๊ฐ ๋ ธ๋๋ฅผ ๋์ด๋ค๊ฐ ์์ง์ธ๋ค๋๊ฐ์ ์ํธ์์ฉ์ ๋ถ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
2๋ฒ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ๋ถ๋ด์ด ๊ฐ์ง๋ง, ์ํธ์์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ฅ์ ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์กฐ๊ต๋์ ์๊ตฌ์ฌํญ์ผ๋ก๋ ์ํธ์์ฉ์ด ๊ฐ๋ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ 2๋ฒ ์ผ๋ก ๋ฐฉํฅ์ฑ์ ์ก์๋ค.
Layout
์ง๋ ๋ฒ ์์ฐ์์๋ Cytoscape.js์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ "breadthfirst (๋๋น์ฐ์ )" ๋ ์ด์์์ ์ ์ฉํด์ ๋ณด์ฌ๋๋ ธ๋ค.
- ํ์ง๋ง breadthfirst์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ์์ด ๋ง์์ง๋ฉด ๊ฐ๋ณ์ ์ธ ๋ ธ๋๋ฅผ ์์๋ณด๊ธฐ ํ๋ค๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฒ์ ์ฐ๋ฆฌ์ ๋ฏธ์
์ ๋ฐ์ดํฐ์ ์์ ์กฐ์ ํ๋ฉด์, ์ ๊ณต๋๋ ๋ ์ด์์๋ค ์ค ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ์ ์ ์ ํ ๋ ์ด์์์ ํ์ํ๊ณ ,
๊ฐ ๋ ์ด์์๋ง๋ค์ ๋ ๋๋ง ์๋๋ฅผ ์ธก์ ํ๋ ๊ฒ์ด๋ค.
์ฌ์ด์ฆ ๋ณ๊ฒฝ & ํํฐ ๊ตฌํ
๋ฐ์ดํฐ์ ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ฒํผ๊ณผ, ํน์ ํค์๋๋ฅผ ํํฐ๋งํ ์ ์๋ ๊ธฐ๋ฅ์ ๋ง๋ค์๋ค
- ์ผ๋จ ํ์ฌ ์๋ฒ์ ์ฐ๋ํด์ ์์ ์ ํ๋ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํด์ ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ฌ์ด์ฆ๋ณ๋ก ์ฑ๋ฅ์ ์ธก์ ํ๊ธฐ ์ํด์ ๋ฒํผ์ ์์ฑํ๋ค.
๋ฆฌ์กํธ๋ฅผ ์๋ ์ฌ์ฉํด๋ดค๊ธฐ ๋๋ฌธ์, ๋ฒํผ์ ๋ง๋๋๋ฐ๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์์ง๋ง ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ๊ทธ๋ํ๋ง ๋ค์ ๋ ๋๋งํ๋ ๋ฑ์ Cytoscape ๊ด๋ จ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์กฐ๊ธ ๊น๋ค๋ก์ ๋ค.
๋คํํ ๋ฆฌ์กํธ์์ cytoscape๋ฅผ ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์, ๊ทธ๋๋ง ์์ํ๋ค.
๋ํ ๋ก๋ฉ ์ปดํฌ๋ํธ๋ฅผ ๋ฃ๊ณ ์ถ์๋ฐ ์ด๋์ isLoading state์ ๊ฐ์ true๋ก ๋ฐ๊พธ๊ณ , false๋ก ๋ฐ๊ฟ์ผ ํ ์ง๋ cytoscape ๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋ฉฐ ์ง์ ํ๋ค.
const [layout, setLayout] = useState({
name: "breadthfirst",
...
ready: () => {
setIsLoading(true);
},
stop: () => {
setIsLoading(false);
},
});
๋ ์ด์์์ run์ํจ ๋ค์ ready, stop ์์ ์ ๋์ํ ํจ์๋ฅผ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํด์ ๋ก๋ฉ์ ๊ตฌํํ ์๋ ์์๋ค.
Layout ๋น๊ต ๋ฐ ์ฑ๋ฅ ์ธก์
Cytoscape.js ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ ์ด์์๋ค๊ณผ, ์ค์นํด์ ์ฌ์ฉํ ์ ์๋ ๋ ์ด์์์ ์ฐพ์๋ณด์๋ค.
1. Circle
: ๋ชจ๋ ๋ ธ๋๋ฅผ ์ํ์ผ๋ก ๋ฐฐ์นํ๋ ๋จ์ํ ๋ ์ด์์. ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ ๋ ๊ฐ์กฐ๋์ง๋ง, ๋ชจ๋ ๋ ธ๋๊ฐ ๋๋ฑํ๊ฒ ์๊ฐํ๋๋ค.
2. Grid
: ๋ ธ๋๋ฅผ ๊ท ์ผํ ๊ฒฉ์ ํจํด์ผ๋ก ๋ฐฐ์นํ๋ ๋ ์ด์์. ์๊ฐ์ ์ง์๊ฐ ์ค์ํ ๊ฒฝ์ฐ์ ์ ํฉํ๋ฉฐ, ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ณด๋ค๋ ๋ ธ๋ ์์ฒด์ ์ด์ ์ ๋ง์ถ๋ค.
3. Breadthfirst
: ๋๋น ์ฐ์ ํ์(breadth-first search) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ ธ๋๋ฅผ ๋ฐฐ์นํ๋ ๋ ์ด์์.
- ํธ๋ฆฌ๋ ๊ณ์ธต์ ๊ตฌ์กฐ์ ์ ํฉํ๋ค.
- ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๋ช ํํ๊ฒ ํํํ๋๋ฐ ์ ํฉํ๋ค.
4. Preset
: ์ด๋ฏธ ์ ์๋ ์์น์ ๋ฐ๋ผ ๋ ธ๋๋ฅผ ๋ฐฐ์นํ๋ค. ๋ ธ๋์ ์์น๊ฐ ๋ฏธ๋ฆฌ ์ง์ ๋์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ.
- cytoscape.js์์๋ position ์์ฑ์ ์ด์ฉํด์ ์ฌ์ ์ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค.
5. Concentric
: ๋ ธ๋๋ฅผ ๋์ฌ์ ํํ๋ก ๋ฐฐ์นํ๋ค. ์ค์ฌ์์๋ถํฐ ๋ฉ์ด์ง์๋ก ๋ ธ๋๋ค์ด ์์ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ฐฐ์น๋๋ค.
- ์ค์ฌ์์๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ ๋ค๋ฅธ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ ธ๋๋ฅผ ๊ทธ๋ฃนํํ ์ ์๋ค.
6. Dagre
: Directed Acyclic Graph(DAG)๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ ๋ ์ด์์. ๋ ธ๋ ๊ฐ์ ๋ฐฉํฅ์ฑ์ ๊ณ ๋ คํ์ฌ ๊ณ์ธต์ ์ผ๋ก ๋ฐฐ์น.
- ๋ฐฉํฅ์ฑ์ด ์๋ ๊ทธ๋ํ์ ์ ํฉ
7. Cose
: Compound Spring Embedder(CoSE) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ ์ด์์์ ๊ตฌ์ฑํฉ๋๋ค.
- CoSE ๋ ์ด์์์ ‘Force-Directed layout’์ ๊ธฐ๋ฐ์ผ๋กํ ๋ ์ด์์.
- Force directed layout์ ๊ทธ๋ํ ์๊ฐํ์ ๊ธฐ๋ฒ ์ค ํ๋๋ก, ๋ ธ๋๋ผ๋ฆฌ๋ ์ฒ๋ ฅ์ ์ฃ์ง๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋๋ผ๋ฆฌ๋ ์ธ๋ ฅ์ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ.
- ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ ๊ฒฐ๊ณผ๊ฐ ํํฉ๋ฌผ์ ํํ์ ๋น์ทํ๊ณ , ๋ ธ๋๋ผ๋ฆฌ์ ์ธ๋ ฅ์ ์ฉ์์ฒ ํํ๋ก ์ ์ฉํ๊ธฐ ๋๋ฌธ์ Compound Spring Embedder ๋ ์ด์์์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ผ๋ก ์์๋๋ค.
์๋์ ์์์ ๋ณด๋ฉด, ์ด๋ค ์์ผ๋ก ์ ์ฉ๋์ด ๊ฐ๋์ง ์ ์ ์๋ค.
8. Fcose
: Fase CoSE ๋ ์ด์์์ผ๋ก, ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด CoSE ๋ ์ด์์์์ ํ์๋์๋ค.
- FCoSE๋ CoSE๋ณด๋ค ๋น ๋ฅธ ๊ฒ์ด ํน์ง์ธ๋ฐ, ์ด๋ป๊ฒ ๊ฐ๋ฅํ ๊น?
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์
- fcose๋ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํ์ฌ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค
- ํ(heap) ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ธ๋ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋, ๊ณ์ฐ ์ค์ ๋ณ๊ฒฝ๋๋ ์์๋ค์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธ
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์บ์ ์ต์ ํ
- ํ๋์ ์ปดํจํ ํ๊ฒฝ์์๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์บ์ ์ต์ ํ๊ฐ ์ค์ํ ์์๊ฐ ๋๋ค.
- fcose๋ ์ด๋ฌํ ์์๋ค์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์ด, ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์์ ์ด์ ์ ์ทจํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ต์ ํํ๋ค
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์
9. Avsdf
: Average Stress Directed Force Layout. ๋ ธ๋๋ค ์ฌ์ด์ ์คํธ๋ ์ค(์ฆ, ๊ฑฐ๋ฆฌ์ ๋ถ๊ท ํ)๋ฅผ ์ต์ํํ๋ฉด์ ๋ ธ๋๋ฅผ ๋ฐฐ์นํ๋ค.
10. Klay
: ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๊ทธ๋ํ์ ์ฌ์ฉ๋๋ฉฐ, ๋ ธ๋๋ฅผ ์ฌ๋ฌ ๋ ๋ฒจ๋ก ๋๋์ด ๊ฐ ๋ ๋ฒจ์ ๊ณ์ธต์ ์ผ๋ก ํ์ํ๋ค.
11. Cola
: ์ ์ฝ ์กฐ๊ฑด ๊ธฐ๋ฐ ๋ ์ด์์. ๋ ธ๋ ๊ฐ์ ๊ฑฐ๋ฆฌ, ๋ฐฉํฅ์ฑ, ๊ฐ๋ ๋ฑ์ ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์ค์ ํ์ฌ ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ด์์์ ์์ฑํ๋ค.
- Cola ์ญ์ Force-Directed layout ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
Cola ๋ ์ด์์์ ์ ์ฉ ๊ณผ์
1. ์ด๊ธฐ ๋ฐฐ์น : ๋ ธ๋๋ค์ ์ด๊ธฐ์ ๋ฌด์์๋ก ๋ฐฐ์น๋๊ฑฐ๋ ํน์ ํจํด์ ๋ฐ๋ผ ๋ฐฐ์น๋๋ค.
2. ์ ์ฝ ์กฐ๊ฑด ์ค์ : ๋ ธ๋ ๊ฐ์ ๊ด๊ณ, ๊ฑฐ๋ฆฌ, ๋ฐฉํฅ ๋ฑ์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ . ์ด๋ ๊ทธ๋ํ์ ์์์ด๋ ์๋ฏธ๋ฅผ ๋ฐ์ํ๋๋ฐ ์ค์ํ๋ค. 3. ํ์ ๊ณ์ฐ : ๊ฐ ๋ ธ๋๋ ๋ค๋ฅธ ๋ ธ๋์์ ๊ด๊ณ์ ๋ฐ๋ผ ์๋ก๋ฅผ ๋ฐ์ด๋ด๊ฑฐ๋ ๋น๊ธฐ๋ ํ์ ๊ฐ์ง๋ค. ์ด ํ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด ๊ณ์ฐ๋๋ค.
4. ํํ ์ํ ๋๋ฌ : ์๊ณ ๋ฆฌ์ฆ์ ๋ ธ๋๋ค์ด ์๋ก์ ๋ํด ํ์ ๊ฐํ๋ฉฐ ์์ง์ด๋ค๊ฐ, ์ ์ฝ ์กฐ๊ฑด์ ์ํด ์ ์๋ ์ต์ ์ ์์น์ ๋๋ฌํ ๋๊น์ง ๊ณ์๋๋ค.
5. ๋ฐ๋ณต ์กฐ์ : ๋ ธ๋๋ค์ด ํํ ์ํ์ ๋๋ฌํ๋ฉด, ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฃ๋๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์๊ตฌํ๋ ๋์ ๋ฐ๋ณต.
๊ฒฐ๋ก
์ง๊ธ๊น์ง ์ดํด๋ณธ ๊ฒ์ ๋ฐํ์ผ๋ก ๊ฒฐ์
- ๊ทธ๋ํ์ ํํ๋, ๋ ์ด์์์ ๊ทธ๋ ค๋ด๋ ์๋๋ฅผ ๋ดค์ ๋, FCoSE ๋ ์ด์์ ์ด ๊ฐ์ฅ ์ ํฉํ ๊ฒ ๊ฐ๋ค.
- ์ฐ๋ฆฌ์ ๋ชฉํ๊ฐ ๊ฐ์ผ๋ณ์ ๋์ํ๊ธฐ ์ํ ๋คํธ์ํฌ๋ฅผ ์๊ฐํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์,
- ์ฃ์ง๊ฐ ๋ง์ด ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ์ค์ฌ์ผ๋ก ๋ชจ์ฌ์ง๋ ํํ๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฌํ ๋ ธ๋๊ฐ ๋์์ ์ค์ฌ์ง๊ฐ ๋ ๊ฒ์ด๋ค.
๋ค์ ๋ชฉํ
๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ฌํ ์ค์ฌ์ง๋ฅผ ๋ ๋๋ ทํ๊ฒ ํ์ธํ๊ธฐ ์ํด์, ์ด์ ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ๊ฒ์
1. ๊ฐ ์ปค๋ฎค๋ํฐ ๋ณ๋ก ๋ค๋ฅธ ์์ผ๋ก ๋คํธ์ํฌ๋ฅผ ๋ํ๋ด๊ณ ,
2. Degree๊ฐ ํฐ ๋ ธ๋์ผ์๋ก ๋ ธ๋์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ํํํ๋ ๊ฒ์ด๋ค.
Reference
'HYU > ์กธ์ ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. ์ ์ , ๊ฐ์ ์ถ๊ฐ ๋ฐ ์ญ์ (0) | 2024.03.04 |
---|---|
4. ํ์ด์ง ๋ ์ด์์ ๋์์ธ ๋ฐ ๋ณ๊ฒฝ (0) | 2024.02.26 |
3. Community Detection (2) | 2024.02.09 |
1. ๋คํธ์ํฌ ์๊ฐํ ํด ํ์ (0) | 2024.01.25 |
0. ์ฃผ์ ํ์ธ ๋ฐ ๊ณํ (0) | 2024.01.24 |