| | <!DOCTYPE html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>Hugging Face Network by Bunka</title> |
| |
|
| | <style> |
| | :root { |
| | --primary-color: #4a4a4a; |
| | --secondary-color: #6c757d; |
| | --background-color: #f8f9fa; |
| | --hover-color: #007bff; |
| | } |
| | html, body { |
| | height: 100%; |
| | margin: 0; |
| | padding: 0; |
| | } |
| | body { |
| | font-family: 'Arial', sans-serif; |
| | line-height: 1.6; |
| | color: var(--primary-color); |
| | background-color: var(--background-color); |
| | display: flex; |
| | flex-direction: column; |
| | } |
| | header { |
| | background-color: white; |
| | box-shadow: 0 2px 4px rgba(0,0,0,0.1); |
| | padding: 15px 0; |
| | text-align: center; |
| | display: flex; |
| | justify-content: space-between; |
| | align-items: center; |
| | } |
| | .logo-container { |
| | padding-left: 20px; |
| | } |
| | .logo { |
| | max-width: 100px; |
| | height: auto; |
| | } |
| | .title-container { |
| | flex-grow: 1; |
| | text-align: center; |
| | } |
| | h1 { |
| | color: var(--primary-color); |
| | margin: 0 0 10px 0; |
| | font-size: 1.8em; |
| | } |
| | .subtitle-container { |
| | display: flex; |
| | justify-content: center; |
| | align-items: center; |
| | } |
| | .subtitle { |
| | font-size: 1em; |
| | color: var(--secondary-color); |
| | margin: 0; |
| | } |
| | .help-icon { |
| | margin-left: 10px; |
| | cursor: help; |
| | position: relative; |
| | } |
| | .help-icon:hover::after { |
| | content: attr(data-tooltip); |
| | position: absolute; |
| | top: 100%; |
| | left: 50%; |
| | transform: translateX(-50%); |
| | background-color: #333; |
| | color: white; |
| | padding: 10px; |
| | border-radius: 5px; |
| | width: 300px; |
| | z-index: 1; |
| | font-size: 0.9em; |
| | line-height: 1.4; |
| | text-align: left; |
| | } |
| | .graph-container { |
| | flex-grow: 1; |
| | width: 100%; |
| | display: flex; |
| | } |
| | iframe { |
| | flex-grow: 1; |
| | border: none; |
| | } |
| | footer { |
| | background-color: var(--secondary-color); |
| | color: white; |
| | text-align: center; |
| | padding: 10px 0; |
| | } |
| | .social-links { |
| | display: inline-block; |
| | vertical-align: middle; |
| | } |
| | .social-links a { |
| | opacity: 0.7; |
| | transition: opacity 0.3s ease; |
| | margin: 0 5px; |
| | } |
| | .social-links a:hover { |
| | opacity: 1; |
| | } |
| | .social-links img { |
| | width: 20px; |
| | height: 20px; |
| | } |
| | .pagination { |
| | display: flex; |
| | justify-content: center; |
| | align-items: center; |
| | padding: 15px 0; |
| | background-color: white; |
| | box-shadow: 0 -2px 4px rgba(0,0,0,0.1); |
| | } |
| | .pagination button { |
| | background-color: transparent; |
| | border: none; |
| | color: var(--secondary-color); |
| | font-size: 16px; |
| | padding: 5px 10px; |
| | margin: 0 5px; |
| | cursor: pointer; |
| | transition: color 0.3s ease; |
| | } |
| | .pagination button:hover { |
| | color: var(--hover-color); |
| | } |
| | .pagination button.active { |
| | color: var(--primary-color); |
| | font-weight: bold; |
| | } |
| | .pagination .page-numbers { |
| | display: flex; |
| | align-items: center; |
| | } |
| | .pagination .divider { |
| | width: 1px; |
| | height: 20px; |
| | background-color: var(--secondary-color); |
| | margin: 0 10px; |
| | } |
| | </style> |
| | </head> |
| | <body> |
| | <header> |
| | <div class="logo-container"> |
| | <img src="https://huggingface.co/spaces/bunkalab/README/raw/main/bunka_logo.png" alt="Bunka Logo" class="logo"> |
| | </div> |
| | <div class="title-container"> |
| | <h1 id="main-title">Open Source AI Network - Mapping the top 500 HF users</h1> |
| | <div class="subtitle-container"> |
| | <p id="subtitle" class="subtitle">Two users are closer if they are followed by the same people.</p> |
| | <span class="help-icon" data-tooltip="• We collected and analyzed data about 895,007 models and 204,371 datasets |
| | • We filtered those into 14,620 content providers |
| | • 2,615 organizations (not users) were filtered, associated with 15,611 most relevant users |
| | • We then used the Force Atlas and Leiden algorithm to create this network. |
| | Package by github.com/medialab/ipysigma">ⓘ</span> |
| | </div> |
| | </div> |
| | </header> |
| | |
| | <div class="graph-container"> |
| | <iframe id="graph-frame" src="co_user.html" width="100%" height="100%" frameborder="0"></iframe> |
| | </div> |
| |
|
| | <div class="pagination"> |
| | <button id="prev"><</button> |
| | <div class="page-numbers"> |
| | <button id="page1" class="active">1</button> |
| | <div class="divider"></div> |
| | <button id="page2">2</button> |
| | </div> |
| | <button id="next">></button> |
| | </div> |
| |
|
| | <footer> |
| | <div class="social-links"> |
| | <a href="https://github.com/charlesdedampierre/BunkaTopics" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/github-logo.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2dpdGh1Yi1sb2dvLnBuZyIsImlhdCI6MTcyNDgzOTk3NywiZXhwIjoxNzg3OTExOTc3fQ.qPEnoJOVqTkWdquVPkMWZFYHv29q8pb5mbcVBGFZWTU&t=2024-08-28T10%3A12%3A58.108Z" alt="GitHub"></a> |
| | <a href="https://huggingface.co/bunkalab" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/hugging%20face.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2h1Z2dpbmcgZmFjZS5wbmciLCJpYXQiOjE3MjQ4Mzk4NDAsImV4cCI6MTc4NzkxMTg0MH0.6gOtEK2BXc3kSL3PIswY0LJyvp790580Jm6vxztiFhw&t=2024-08-28T10%3A10%3A40.145Z" alt="Hugging Face"></a> |
| | <a href="https://www.linkedin.com/company/85881815" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/LinkedIn_logo_initials.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L0xpbmtlZEluX2xvZ29faW5pdGlhbHMucG5nIiwiaWF0IjoxNzI0ODQwMDQ1LCJleHAiOjE3ODc5MTIwNDV9.9d6MAK3x9LOmsYyB8KyGk5PPFGkPNoGjsW7wdxiZt3M&t=2024-08-28T10%3A14%3A05.996Z" alt="LinkedIn"></a> |
| | <a href="https://discord.gg/3YRPVqXabQ" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/discord.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2Rpc2NvcmQucG5nIiwiaWF0IjoxNzI0ODM5ODc4LCJleHAiOjE3ODc5MTE4Nzh9.w1Ggb_Nh1UnjKeVujp_7ljAW0ZSP3ETNkYJLKuBZ_Zo&t=2024-08-28T10%3A11%3A18.993Z" alt="Discord"></a> |
| | </div> |
| | </footer> |
| |
|
| | <script> |
| | const graphFrame = document.getElementById('graph-frame'); |
| | const prev = document.getElementById('prev'); |
| | const next = document.getElementById('next'); |
| | const page1 = document.getElementById('page1'); |
| | const page2 = document.getElementById('page2'); |
| | const mainTitle = document.getElementById('main-title'); |
| | const subtitle = document.getElementById('subtitle'); |
| | |
| | let currentPage = 1; |
| | |
| | function updateGraph() { |
| | if (currentPage === 1) { |
| | graphFrame.src = 'co_user.html'; |
| | page1.classList.add('active'); |
| | page2.classList.remove('active'); |
| | mainTitle.textContent = 'Open Source AI Network - Mapping the top 500 HF users'; |
| | subtitle.textContent = 'Two users are closer if they are followed by the same people.'; |
| | } else { |
| | graphFrame.src = 'co_organization.html'; |
| | page2.classList.add('active'); |
| | page1.classList.remove('active'); |
| | mainTitle.textContent = 'Open Source AI Network - Mapping dataset/model producing organizations'; |
| | subtitle.textContent = 'Two organizations are closer if their members have common followers.'; |
| | } |
| | } |
| | |
| | prev.addEventListener('click', () => { |
| | if (currentPage > 1) { |
| | currentPage--; |
| | updateGraph(); |
| | } |
| | }); |
| | |
| | next.addEventListener('click', () => { |
| | if (currentPage < 2) { |
| | currentPage++; |
| | updateGraph(); |
| | } |
| | }); |
| | |
| | page1.addEventListener('click', () => { |
| | currentPage = 1; |
| | updateGraph(); |
| | }); |
| | |
| | page2.addEventListener('click', () => { |
| | currentPage = 2; |
| | updateGraph(); |
| | }); |
| | </script> |
| | </body> |
| | </html> |