{"id":33248,"date":"2025-09-26T16:40:14","date_gmt":"2025-09-26T20:40:14","guid":{"rendered":"https:\/\/www.pedroandretta.info\/index\/?page_id=33248"},"modified":"2026-02-07T09:20:34","modified_gmt":"2026-02-07T13:20:34","slug":"arquivos-net","status":"publish","type":"page","link":"https:\/\/www.pedroandretta.info\/index\/arquivos-net\/","title":{"rendered":"Gerador e visualizador de arquivos de redes sociais *.Net"},"content":{"rendered":"\n<p class=\"has-x-large-font-size\"><strong>Gerador e visualizador de arquivos de redes sociais *.Net<\/strong><\/p>\n\n\n\n<p>Os sistemas a seguir t\u00eam car\u00e1ter pedag\u00f3gico\/demonstrativo e n\u00e3o substituem o uso do <a href=\"http:\/\/mrvar.fdv.uni-lj.si\/pajek\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pajek<\/a>, <a href=\"https:\/\/gephi.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gephi<\/a>, <a href=\"https:\/\/www.vosviewer.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">VOSViews<\/a>, <a href=\"https:\/\/smartdata.las.ac.cn\/citeinsight\/login\/en\">CiteInsight<\/a> ou outros softwares. Os <em>inputs<\/em> e <em>outputs<\/em> dos sistemas n\u00e3o ficam armazenados nos servidores. A velocidade de processamento pode variar em fun\u00e7\u00e3o da carga de dados e do funcionamento do servidor.<\/p>\n\n\n\n<p><strong>O que voc\u00ea quer fazer?<\/strong><\/p>\n\n\n\n<p><strong><a href=\"#gerador\" data-type=\"internal\" data-id=\"#gerador\">Gerar arquivo *.Net<\/a><\/strong><\/p>\n\n\n\n<p><strong><a href=\"#visualizador\" data-type=\"internal\" data-id=\"#visualizador\">Visualizar arquivo *.Net<\/a><\/strong><\/p>\n\n\n\n<p><a href=\"#indicadores\"><strong>Ver m\u00e9tricas de arquivo *.Net<\/strong><\/a><\/p>\n\n\n\n<p><a href=\"#conversor\"><strong>Converter arquivo *.Net em *.Gexf<\/strong><\/a><\/p>\n\n\n\n<p><a href=\"#leitura\" data-type=\"internal\" data-id=\"#leitura\"><strong>Indica\u00e7\u00e3o de leitura sobre an\u00e1lise de redes sociais<\/strong><\/a><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?resize=600%2C600&#038;ssl=1\" alt=\"\" class=\"wp-image-33425\" srcset=\"https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?resize=600%2C600&amp;ssl=1 600w, https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.pedroandretta.info\/index\/wp-content\/uploads\/2025\/09\/rede.jpg?w=1080&amp;ssl=1 1080w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption class=\"wp-element-caption\">Rede de amigos da turma do PPGA\/UNIR &#8211; Turma de 2025<\/figcaption><\/figure>\n<\/div>\n\n\n<p>&#8211;<\/p>\n\n\n\n<h1 class=\"wp-block-heading has-x-large-font-size\" id=\"gerador\"><strong>Gerador de arquivo *.Net<\/strong><\/h1>\n\n\n\n<p>Considere:<br><strong><em>Rede unipartida<\/em><\/strong> = Mapear intera\u00e7\u00f5es entre coocorr\u00eancia sem liga\u00e7\u00e3o com ID, indicado para analisar coautoria, afilia\u00e7\u00e3o, palavras-chave.<br><em><strong>rede bipartida<\/strong><\/em> = Mapear intera\u00e7\u00f5es entre coocorr\u00eancia e manter liga\u00e7\u00e3o com ID,= indicado para analisar cita\u00e7\u00f5es e rela\u00e7\u00f5es entre dois tipos de entidades.<\/p>\n\n\n    <style>\n      .arsnet-wrap{max-width:900px;margin:1.5rem auto;padding:1rem;border:1px solid #e5e7eb;border-radius:12px;background:transparent;color:#111827;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,'Helvetica Neue',Arial}\n      .arsnet-wrap h2{margin:0 0 .75rem;font-size:1.25rem;font-weight:700;color:#0f172a}\n      .arsnet-row{display:flex;gap:1rem;flex-wrap:wrap}\n      .arsnet-col{flex:1 1 320px}\n      .arsnet-textarea{width:100%;min-height:300px;padding:.75rem;border-radius:10px;border:1px solid #d1d5db;background:transparent;color:#111827;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace}\n      .arsnet-textarea::placeholder{color:#9ca3af}\n      .arsnet-controls{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin:.75rem 0}\n      .arsnet-radio{display:flex;gap:.5rem;align-items:center}\n      .arsnet-btn{appearance:none;border:1px solid #111827;border-radius:12px;padding:.75rem 1rem;font-weight:700;cursor:pointer;background:#111827;color:#fff;transition:transform .02s ease,opacity .2s ease}\n      .arsnet-btn:hover{opacity:.95}\n      .arsnet-btn:active{transform:scale(.99)}\n      .arsnet-muted{opacity:.8;font-size:.9rem}\n      .arsnet-sample{font-size:.85rem;white-space:pre-wrap;background:transparent;border:1px dashed #d1d5db;padding:.5rem;border-radius:8px}\n      .arsnet-badge{display:inline-block;font-size:.75rem;padding:.15rem .5rem;border:1px solid #e5e7eb;border-radius:999px;margin-left:.5rem}\n      .arsnet-note{font-size:.85rem;line-height:1.5}\n      .arsnet-footer{margin-top:.75rem;font-size:.8rem;opacity:.75}\n      .arsnet-switch{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border:1px solid #e5e7eb;border-radius:999px}\n      .arsnet-switch input{accent-color:#111827}\n    <\/style>\n\n    <div class=\"arsnet-wrap\" id=\"arsnet-root\">\n      <h2>Conversor .NET para An\u00e1lise de Redes Sociais <span class=\"arsnet-badge\">[Processamento local - Sem armazenamento no servidor]<\/span><\/h2>\n\n      <div class=\"arsnet-row\">\n        <div class=\"arsnet-col\">\n          <label for=\"arsnet-input\" class=\"arsnet-muted\">Cole aqui (formato: <strong>ID [TAB] Coocorr\u00eancia<\/strong> - (Itens de Coocorr\u00eancia separados por ponto e v\u00edrgula)<\/label>\n          <textarea id=\"arsnet-input\" class=\"arsnet-textarea\" placeholder=\"Ref A\tTermo 1; Termo 2; Termo 3\nRef B\tTermo 4\nRef C\tTermo 2; Termo 4; Termo 5\nRef D\tTermo 1; Termo 3; Termo 5\n...\"><\/textarea>\n          <p class=\"arsnet-note arsnet-muted\">Separador: <strong>\" ;\"<\/strong>. Linhas vazias ou malformadas s\u00e3o ignoradas.<\/p>\n        <\/div>\n        <div class=\"arsnet-col\">\n          <div class=\"arsnet-sample\">\nExemplo:\nRef A\tTermo 1; Termo 2; Termo 3\nRef B\tTermo 4\nRef C\tTermo 2; Termo 4; Termo 5\nRef D\tTermo 1; Termo 3; Termo 5\n          <\/div>\n\n          <div class=\"arsnet-controls\">\n            <label class=\"arsnet-radio\"><input type=\"radio\" name=\"arsnet-mode\" value=\"unipartida\" checked> <span>Rede <strong>unipartida<\/strong> (termo\u2013termo)<\/span><\/label>\n            <label class=\"arsnet-radio\"><input type=\"radio\" name=\"arsnet-mode\" value=\"bipartida\"> <span>Rede <strong>bipartida<\/strong> (ID\u2013termo)<\/span><\/label>\n          <\/div>\n\n          <div class=\"arsnet-controls\">\n            <label class=\"arsnet-switch\"><input type=\"checkbox\" id=\"arsnet-normalize-diacritics\"> Remover acentos<\/label>\n            <label class=\"arsnet-switch\"><input type=\"checkbox\" id=\"arsnet-uppercase\"> Converter tudo em CAIXA ALTA<\/label>\n          <\/div>\n\n          <button class=\"arsnet-btn\" id=\"arsnet-convert\">Converter e baixar<\/button>\n          <p class=\"arsnet-footer\">Sa\u00edda: arquivo <code>.net<\/code> compat\u00edvel com Pajek\/Gephi.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n   <script>\n(function(){\n  const byId = (id)=>document.getElementById(id);\n  const $input = byId('arsnet-input');\n  const $btn = byId('arsnet-convert');\n  const $normalize = byId('arsnet-normalize-diacritics');\n  const $uppercase = byId('arsnet-uppercase');\n\n  \/\/ Checagem defensiva\n  if(!$input || !$btn){\n    console.error('Elementos obrigat\u00f3rios n\u00e3o encontrados: #arsnet-input e\/ou #arsnet-convert.');\n    return;\n  }\n\n  \/\/ Utilidades\n  function stripDiacritics(str){\n    try{ return str.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, ''); }\n    catch(e){ return str; }\n  }\n  function normalizeTerm(term){\n    let t = String(term).trim();\n    \/\/ remove zero-width e normaliza espa\u00e7os Unicode para espa\u00e7o normal\n    t = t\n      .replace(\/[\\u200B-\\u200D\\uFEFF]\/g, '')                         \/\/ zero-width\n      .replace(\/[\\u00A0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]\/g,' ') \/\/ NBSP e afins\n      .replace(\/\\s+\/g, ' ');                                         \/\/ colapsa m\u00faltiplos espa\u00e7os\n    if($normalize && $normalize.checked){ t = stripDiacritics(t); }\n    if($uppercase && $uppercase.checked){ t = t.toUpperCase(); }\n    return t;\n  }\n  function esc(s){ return String(s).replace(\/\"\/g,'\\\\\"'); }\n\n  function detectMode(){\n    const radios = document.querySelectorAll('input[name=\"arsnet-mode\"]');\n    for(const r of radios){ if(r.checked) return r.value; }\n    return 'unipartida';\n  }\n\n  \/**\n   * Parser com valida\u00e7\u00f5es:\n   * - ERRO se 0 TABs (falta TAB) ou >1 TABs.\n   * - ERRO de duplicata ID\u2013termo ENTRE LINHAS (sempre, para ambos os modos).\n   *\/\n  function parseTSV(raw){\n    const lines = (raw || '')\n      .replace(\/\\r\\n?\/g, '\\n')   \/\/ normaliza quebras\n      .split('\\n')\n      .map(l=>l.trim())\n      .filter(Boolean);\n\n    const rows = [];\n    const seenById = new Map(); \/\/ ID -> Set(termos) (para detectar duplicatas entre linhas)\n\n    for(let idx=0; idx<lines.length; idx++){\n      const lineNumber = idx + 1;\n      const line = lines[idx];\n\n      const tabCount = (line.match(\/\\t\/g) || []).length;\n      if (tabCount === 0) {\n        throw new Error(`Erro na linha ${lineNumber}: n\u00e3o h\u00e1 TAB. Cada linha deve conter exatamente um TAB separando ID e termos.`);\n      }\n      if (tabCount > 1) {\n        throw new Error(`Erro na linha ${lineNumber}: h\u00e1 ${tabCount} TABs. Use exatamente um TAB.`);\n      }\n\n      const tabIdx = line.indexOf('\\t');\n      const id = line.slice(0, tabIdx).trim();\n      const rhs = line.slice(tabIdx + 1).trim();\n      if(!id || !rhs) continue;\n\n      \/\/ termos separados por ponto e v\u00edrgula\n      const terms = rhs\n        .split(';')\n        .map(normalizeTerm)\n        .filter(Boolean);\n\n      if(terms.length === 0) continue;\n\n      const uniq = Array.from(new Set(terms));\n\n      \/\/ valida duplicatas ID\u2013termo ENTRE LINHAS (sempre)\n      if(!seenById.has(id)) seenById.set(id, new Set());\n      const bag = seenById.get(id);\n      for(const t of uniq){\n        if(bag.has(t)){\n          throw new Error(`Erro na linha ${lineNumber}: o termo \"${t}\" j\u00e1 apareceu antes para o mesmo ID \"${id}\". Remova a duplicidade (ID\u2013termo repetido em linhas diferentes).`);\n        }\n      }\n      for(const t of uniq) bag.add(t);\n\n      rows.push({ id, terms: uniq });\n    }\n    return rows;\n  }\n\n  \/\/ ===== UNIPARTIDA (coocorr\u00eancia de termos) \u2014 2 passadas para \u00edndice est\u00e1vel =====\n  function buildUnipartite(rows){\n    const termIndex = new Map();\n    const termsArr = [];\n    function idxForTerm(t){\n      if(!termIndex.has(t)){\n        termIndex.set(t, termsArr.length + 1);\n        termsArr.push(t);\n      }\n      return termIndex.get(t);\n    }\n\n    \/\/ 1) indexa TODOS os termos primeiro (\u00edndices est\u00e1veis; inclui n\u00f3s isolados)\n    for(const {terms} of rows){\n      for(const t of terms) idxForTerm(t);\n    }\n\n    \/\/ 2) gera coocorr\u00eancias (arestas) usando apenas \u00edndices j\u00e1 fixos\n    const edgeWeights = new Map();\n    for(const {terms} of rows){\n      for(let i=0;i<terms.length;i++){\n        for(let j=i+1;j<terms.length;j++){\n          const a = terms[i], b = terms[j];\n          const key = a < b ? a+'\\u0000'+b : b+'\\u0000'+a;\n          edgeWeights.set(key, (edgeWeights.get(key)||0) + 1);\n        }\n      }\n    }\n\n    \/\/ 3) .net\n    let out = '*Vertices ' + termsArr.length + '\\n';\n    for(let i=0;i<termsArr.length;i++){\n      const id = i + 1;\n      const label = esc(termsArr[i]);\n      out += `${id} \"${label}\"\\n`;\n    }\n    out += '*Edges\\n';\n    for(const [key, w] of edgeWeights){\n      const [a,b] = key.split('\\u0000');\n      out += `${termIndex.get(a)} ${termIndex.get(b)} ${w}\\n`;\n    }\n    return out;\n  }\n\n  \/\/ ===== BIPARTIDA (IDs \u00d7 termos) \u2014 2 passadas para \u00edndices est\u00e1veis =====\n  function buildBipartite(rows){\n    const idIndex = new Map();\n    const termIndex = new Map();\n    const idsArr = [];\n    const termsArr = [];\n\n    function idxForId(x){\n      if(!idIndex.has(x)){\n        idIndex.set(x, idsArr.length + 1);\n        idsArr.push(x);\n      }\n      return idIndex.get(x);\n    }\n    function idxForTerm(t){\n      if(!termIndex.has(t)){\n        termIndex.set(t, termsArr.length + 1);\n        termsArr.push(t);\n      }\n      return termIndex.get(t);\n    }\n\n    \/\/ 1) indexa TUDO primeiro\n    for(const {id, terms} of rows){\n      idxForId(id);\n      for(const t of terms) idxForTerm(t);\n    }\n    const idsCount = idsArr.length;\n    const totalVertices = idsCount + termsArr.length;\n\n    \/\/ 2) cria arestas com offset FIXO\n    const edgeWeights = new Map();\n    for(const {id, terms} of rows){\n      const idIdx = idIndex.get(id);\n      for(const t of terms){\n        const termIdx = termIndex.get(t);\n        const globalIdxA = idIdx;                 \/\/ IDs primeiro\n        const globalIdxB = idsCount + termIdx;    \/\/ termos depois (offset fixo)\n        const key = `${globalIdxA} ${globalIdxB}`;\n        edgeWeights.set(key, (edgeWeights.get(key)||0) + 1);\n      }\n    }\n\n    \/\/ 3) .net\n    let out = '*Vertices ' + totalVertices + '\\n';\n    for(let i=0;i<idsArr.length;i++){\n      const label = esc(idsArr[i]);\n      out += `${i+1} \"${label}\"\\n`;\n    }\n    for(let i=0;i<termsArr.length;i++){\n      const globalIdx = idsCount + i + 1;\n      const label = esc(termsArr[i]);\n      out += `${globalIdx} \"${label}\"\\n`;\n    }\n\n    out += '*Partition\\n';\n    for(let i=0;i<idsArr.length;i++){ out += '1\\n'; } \/\/ grupo 1: IDs\n    for(let i=0;i<termsArr.length;i++){ out += '2\\n'; } \/\/ grupo 2: termos\n\n    out += '*Edges\\n';\n    for(const [key, w] of edgeWeights){\n      out += `${key} ${w}\\n`;\n    }\n    return out;\n  }\n\n  function download(text, filename){\n    const normalized = String(text).replace(\/\\r\\n\/g, '\\n').replace(\/\\r\/g, '\\n');\n    const blob = new Blob([normalized], {type:'text\/plain;charset=utf-8'});\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url; a.download = filename; document.body.appendChild(a); a.click(); a.remove();\n    setTimeout(()=>URL.revokeObjectURL(url), 1500);\n  }\n\n  $btn.addEventListener('click', function(){\n    try{\n      const mode = detectMode();\n      const raw = $input.value || '';\n\n      \/\/ Agora SEMPRE validamos duplicatas ID\u2013termo entre linhas\n      const rows = parseTSV(raw);\n\n      if(rows.length === 0){\n        alert('Nada para converter. Use linhas no formato: ID\\\\ttermo1; termo2; termo3');\n        return;\n      }\n\n      if(mode === 'unipartida'){\n        const net = buildUnipartite(rows);\n        download(net, 'rede-unipartida.net');\n      } else {\n        const net = buildBipartite(rows);\n        download(net, 'rede-bipartida.net');\n      }\n    }catch(err){\n      alert(err && err.message ? err.message : 'Erro inesperado ao processar os dados.');\n      console.error(err);\n    }\n  });\n})();\n<\/script>\n    \n\n\n\n<p>&#8211;<\/p>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\" id=\"visualizador\"><strong>Visualizador de arquivo *.Net<\/strong><\/h1>\n\n\n\n<p><strong><em>Instru\u00e7\u00f5es:<\/em><\/strong><br>Utilize arquivos *.net de at\u00e9 15 KB para a visualiza\u00e7\u00e3o das redes sem muita demora no processamento.<br>Clique em &#8220;Pausar f\u00edsica&#8221; se quiser parar o processamento da rede.<br>Essa visualiza\u00e7\u00e3o n\u00e3o substitui o uso do <a href=\"http:\/\/mrvar.fdv.uni-lj.si\/pajek\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pajek<\/a>, <a href=\"https:\/\/gephi.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gephi<\/a>, <a href=\"https:\/\/www.vosviewer.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">VOSViews<\/a>, <a href=\"https:\/\/smartdata.las.ac.cn\/citeinsight\/login\/en\">CiteInsight<\/a> e outros softwares.<br>Para visualizar redes maiores, online, <a href=\"#conversor\" data-type=\"internal\" data-id=\"#conversor\">converta o arquivo .net em .gexf<\/a> e processe a rede no <a href=\"https:\/\/gephi.org\/gephi-lite\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gephi Lite<\/a>, <a href=\"https:\/\/medialab.github.io\/nansi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Nansi<\/a>.<\/p>\n\n\n    <div id=\"vpajek_6xx8FO\" class=\"vpajek-root\" data-autoboot=\"1\" data-height=\"560\" data-max-bytes=\"1048576\">\n      <div class=\"vpajek-controls\">\n        <label class=\"vpajek-label\">Carregar arquivo <code>.net<\/code> (\u2264 1 MB \u2013 n\u00e3o ser\u00e1 armazenado)<\/label>\n        <div class=\"vpajek-file-row\">\n          <input type=\"file\" class=\"vpajek-file\" accept=\".net,.txt\" \/>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-clear-file\">Limpar<\/button>\n          <span class=\"vpajek-file-status\" aria-live=\"polite\"><\/span>\n        <\/div>\n      <\/div>\n      <div class=\"vpajek-paste\">\n        <label class=\"vpajek-label\" for=\"vpajek_6xx8FO_txt\">Ou cole o conte\u00fado do arquivo <code>.net<\/code>:<\/label>\n        <textarea id=\"vpajek_6xx8FO_txt\" class=\"vpajek-textarea\" placeholder=\"Cole aqui o conte\u00fado completo do arquivo .net (*Vertices, *Edges\/*Arcs)\"><\/textarea>\n      <\/div>\n      <div class=\"vpajek-options\">\n        <div class=\"vpajek-option\">\n          <label class=\"vpajek-label\" for=\"vpajek_6xx8FO_layout\">Layout<\/label>\n          <select id=\"vpajek_6xx8FO_layout\" class=\"vpajek-select\">\n            <option value=\"dinamico\" selected>Din\u00e2mico (padr\u00e3o)<\/option>\n            <option value=\"acoplamento\">Acoplamento bibliogr\u00e1fico<\/option>\n            <option value=\"custom\">Layout personalizado<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"vpajek-option vpajek-searchbox\">\n          <input type=\"text\" class=\"vpajek-input-search\" placeholder=\"Buscar r\u00f3tulo\u2026\" \/>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-search\">Buscar<\/button>\n        <\/div>\n        <div class=\"vpajek-option\">\n          <label class=\"vpajek-checkbox\"><input type=\"checkbox\" class=\"vpajek-chk-weights\" \/> Mostrar pesos das arestas<\/label>\n        <\/div>\n        <div class=\"vpajek-option\">\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-physics\">Pausar f\u00edsica<\/button>\n        <\/div>\n        <div class=\"vpajek-option\">\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-primary vpajek-btn-render\">Visualizar\/Atualizar<\/button>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-reset\">Resetar<\/button>\n        <\/div>\n        <div class=\"vpajek-option\">\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-save-png\">Salvar PNG<\/button>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-save-jpg\">Salvar JPG<\/button>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-save-png-hd\">PNG (grande)<\/button>\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-save-jpg-hd\">JPG (grande)<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"vpajek-custom-panel\" hidden>\n        <div class=\"vpajek-row\">\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Ego (ID ou r\u00f3tulo)<\/label>\n            <input type=\"text\" class=\"vpajek-input-ego\" placeholder=\"ex.: 12 ou 'Maria'\" list=\"vpajek_6xx8FO_ego_datalist\" \/>\n            <datalist id=\"vpajek_6xx8FO_ego_datalist\"><\/datalist>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Lista alfab\u00e9tica<\/label>\n            <select class=\"vpajek-select vpajek-select-ego\"><\/select>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Raio (saltos) <small class=\"vpajek-hint vpajek-hint-raio\"><\/small><\/label>\n            <select class=\"vpajek-select vpajek-select-raio\"><\/select>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Grau \u2265 <small class=\"vpajek-hint vpajek-hint-grau\"><\/small><\/label>\n            <select class=\"vpajek-select vpajek-select-kmin\"><\/select>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Peso m\u00ednimo da aresta <small class=\"vpajek-hint vpajek-hint-peso\"><\/small><\/label>\n            <select class=\"vpajek-select vpajek-select-wmin\"><\/select>\n          <\/div>\n        <\/div>\n        <div class=\"vpajek-row\">\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Cor dos n\u00f3s por<\/label>\n            <select class=\"vpajek-select vpajek-select-colorby\">\n              <option value=\"none\">Nenhum<\/option>\n              <option value=\"degree\">Grau<\/option>\n              <option value=\"strength\">For\u00e7a (soma de pesos)<\/option>\n              <option value=\"group\">group (atributo)<\/option>\n              <option value=\"color\">color (atributo)<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Tamanho dos n\u00f3s por<\/label>\n            <select class=\"vpajek-select vpajek-select-sizeby\">\n              <option value=\"fixed\">Fixo<\/option>\n              <option value=\"degree\">Grau<\/option>\n              <option value=\"strength\">For\u00e7a<\/option>\n              <option value=\"size\">size (atributo)<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"vpajek-col\">\n            <label class=\"vpajek-label\">Tamanho base<\/label>\n            <input type=\"number\" class=\"vpajek-input-basesize\" value=\"8\" min=\"2\" max=\"50\" \/>\n          <\/div>\n        <\/div>\n        <div class=\"vpajek-row\">\n          <button type=\"button\" class=\"vpajek-btn vpajek-btn-secondary vpajek-btn-apply-custom\">Aplicar filtros & estilo<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"vpajek-legend\">\n        <small>Leitura 100% local. Em todos os layouts: r\u00f3tulos vis\u00edveis, arestas suaves, pan\/zoom\/drag.<\/small>\n      <\/div>\n      <div class=\"vpajek-canvas\" style=\"height: 560px\" role=\"application\" aria-label=\"Visualiza\u00e7\u00e3o da rede\"><\/div>\n      <div class=\"vpajek-color-legend\" hidden><\/div>\n      <div class=\"vpajek-tip\">\n        <small>Clique em um n\u00f3 para <strong>delimitar vizinhan\u00e7a<\/strong>. Arraste n\u00f3s; arraste fundo para pan; use a roda do mouse para zoom.<\/small>\n      <\/div>\n    <\/div>\n    \n\n\n\n<p>.<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<p class=\"has-large-font-size\" id=\"indicadores\"><strong>Relat\u00f3rios de m\u00e9tricas de an\u00e1lise de redes sociais *.Net<\/strong><\/p>\n\n\n\n<p>Sobre os relat\u00f3rios:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Centralidade de Grau<\/strong>: mede o n\u00famero de conex\u00f5es diretas que um n\u00f3 tem, indicando sua influ\u00eancia imediata na rede.<\/li>\n\n\n\n<li><strong>Centralidade de Intermedia\u00e7\u00e3o (Betweenness)<\/strong>: avalia a import\u00e2ncia de um n\u00f3 como intermedi\u00e1rio nas conex\u00f5es entre outros n\u00f3s, indicando seu papel de &#8220;ponte&#8221; na rede.<\/li>\n\n\n\n<li><strong>Centralidade de Proximidade<\/strong>: mede qu\u00e3o pr\u00f3ximo um n\u00f3 est\u00e1 de todos os outros na rede, indicando a rapidez com que uma informa\u00e7\u00e3o pode se espalhar a partir dele.<\/li>\n\n\n\n<li><strong>Eigenvector de Centralidade<\/strong>: avalia a influ\u00eancia de um n\u00f3 considerando a import\u00e2ncia dos seus vizinhos, ou seja, n\u00e3o apenas a quantidade, mas a qualidade das conex\u00f5es.<\/li>\n\n\n\n<li><strong>Coeficiente de Agrupamento (Clustering coefficient)<\/strong>: indica a tend\u00eancia de forma\u00e7\u00e3o de grupos ou clusters dentro da rede.<\/li>\n\n\n\n<li><strong>Densidade da Rede<\/strong>: a raz\u00e3o entre o n\u00famero de conex\u00f5es existentes na rede e o n\u00famero m\u00e1ximo poss\u00edvel de conex\u00f5es, mostrando qu\u00e3o conectada a rede est\u00e1.<\/li>\n\n\n\n<li><strong>Caminho M\u00ednimo M\u00e9dio<\/strong>: mede o comprimento m\u00e9dio dos menores caminhos entre todos os pares de n\u00f3s, relacionado \u00e0 efici\u00eancia da rede.<\/li>\n\n\n\n<li><strong>Di\u00e2metro da Rede<\/strong>: a maior dist\u00e2ncia m\u00ednima entre dois n\u00f3s na rede, que indica o tamanho m\u00e1ximo de um caminho na rede.<\/li>\n<\/ol>\n\n\n        <div class=\"pajek-metrics\">\n            <h3>Exportador de M\u00e9tricas de Rede (Pajek .net)<\/h3>\n            <p class=\"muted\">Envie um arquivo <strong>.net<\/strong> (at\u00e9 1 MB) <em>ou<\/em> cole o conte\u00fado do arquivo. Nada ser\u00e1 salvo no servidor.<\/p>\n            <form id=\"pajek-metrics-form\" method=\"post\" action=\"https:\/\/www.pedroandretta.info\/index\/wp-admin\/admin-post.php\" enctype=\"multipart\/form-data\">\n                <input type=\"hidden\" name=\"action\" value=\"pajek_metrics_export\" \/>\n                <input type=\"hidden\" id=\"pajek_metrics_nonce\" name=\"pajek_metrics_nonce\" value=\"07d3afa8ef\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index\/wp-json\/wp\/v2\/pages\/33248\" \/>                <div class=\"row\">\n                    <div class=\"card\">\n                        <label for=\"net_file\">Arquivo .net (m\u00e1x. 1MB)<\/label>\n                        <input type=\"file\" id=\"net_file\" name=\"net_file\" accept=\".net\" \/>\n                        <p class=\"muted\">O arquivo ser\u00e1 lido apenas em mem\u00f3ria e descartado ap\u00f3s o processamento.<\/p>\n                    <\/div>\n                    <div class=\"card\">\n                        <label for=\"net_text\">Ou cole o conte\u00fado do arquivo .net<\/label>\n                        <textarea id=\"net_text\" name=\"net_text\" placeholder=\"Ex.:\\n*Vertices 3\\n1 \\\"A\\\"\\n2 \\\"B\\\"\\n3 \\\"C\\\"\\n*Edges\\n1 2\\n2 3\"><\/textarea>\n                        <p class=\"muted\">Se voc\u00ea usar o campo de texto, n\u00e3o \u00e9 necess\u00e1rio enviar arquivo.<\/p>\n                    <\/div>\n                <\/div>\n                <div class=\"row\">\n                    <div class=\"card\">\n                        <label>Escolha o relat\u00f3rio<\/label>\n                        <div class=\"optlist\">\n                            <label><input type=\"radio\" name=\"report\" value=\"degree\"> Centralidade de Grau<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"betweenness\"> Centralidade de Intermedia\u00e7\u00e3o (Betweenness)<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"closeness\"> Centralidade de Proximidade<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"hcloseness\"> Centralidade de Proximidade (Harm\u00f4nica)<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"eigenvector\"> Eigenvector de Centralidade<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"clustering\"> Coeficiente de Agrupamento (Clustering)<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"density\"> Densidade da Rede<\/label>\n                            <label><input type=\"radio\" name=\"report\" value=\"avgpath\"> Caminho M\u00ednimo M\u00e9dio<\/label>\n                        <\/div>\n                    <\/div>\n                    <div class=\"card\">\n                        <label>Formato de download<\/label>\n                        <label><input type=\"radio\" name=\"format\" value=\"csv\"> CSV<\/label>\n                        <label><input type=\"radio\" name=\"format\" value=\"xls\"> XLS (compat\u00edvel)<\/label>\n                        <p class=\"muted\">O arquivo \u00e9 gerado em mem\u00f3ria e baixado diretamente pelo navegador.<\/p>\n                    <\/div>\n                <\/div>\n                <div class=\"actions\">\n                    <button class=\"btn\" type=\"submit\" disabled>Gerar relat\u00f3rio<\/button>\n                    <span class=\"muted\">Tempo de execu\u00e7\u00e3o depende do tamanho da rede.<\/span>\n                <\/div>\n            <\/form>\n        <\/div>\n        \n\n\n\n<p>Observa\u00e7\u00f5es<br>&#8211; Pesos nas arestas ignorados (m\u00e9tricas n\u00e3o ponderadas).<br>&#8211; Grafos projetados como n\u00e3o direcionados para as m\u00e9tricas globais cl\u00e1ssicas.<br>&#8211; Essas m\u00e9trica n\u00e3o substituem o uso do <a href=\"http:\/\/mrvar.fdv.uni-lj.si\/pajek\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pajek<\/a>, <a href=\"https:\/\/gephi.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gephi<\/a>, <a href=\"https:\/\/www.vosviewer.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">VOSViews<\/a>, <a href=\"https:\/\/smartdata.las.ac.cn\/citeinsight\/login\/en\">CiteInsight<\/a> e outros softwares. Conv\u00e9m conferir para contraprova.<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<p class=\"has-large-font-size\" id=\"conversor\"><strong>Conversor de arquivo *.Net em *.Gexf<\/strong><\/p>\n\n\n\n<p>Converta o arquivo para trabalhar no <a href=\"https:\/\/gephi.org\/gephi-lite\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gephi Lite<\/a>, <a href=\"https:\/\/medialab.github.io\/nansi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Nansi<\/a> e outros sistemas.<\/p>\n\n\n<div class=\"ntgxc-wrap\">\n  <h3>Converter .NET (Pajek) \u2192 .GEXF (Gephi)<\/h3>\n  <p>Defina os <strong>nomes<\/strong> das colunas para evitar colis\u00f5es (padr\u00e3o <code>calc_degree<\/code>, <code>calc_strength<\/code>). Nada \u00e9 salvo no servidor.<\/p>\n  <form method=\"post\" enctype=\"multipart\/form-data\" action=\"https:\/\/www.pedroandretta.info\/index\/wp-admin\/admin-post.php\">\n    <input type=\"hidden\" id=\"ntgxc_nonce\" name=\"ntgxc_nonce\" value=\"22af817c27\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index\/wp-json\/wp\/v2\/pages\/33248\" \/>    <input type=\"hidden\" name=\"action\" value=\"ntgxc_download\" \/>\n    <div class=\"ntgxc-field\"><label for=\"ntgxc_file\">Arquivo .net (m\u00e1x 1&nbsp;MB)<\/label><input type=\"file\" id=\"ntgxc_file\" name=\"ntgxc_file\" accept=\".net\"\/><\/div>\n    <div class=\"ntgxc-sep\">ou<\/div>\n    <div class=\"ntgxc-field\"><label for=\"ntgxc_text\">Conte\u00fado .net<\/label><textarea id=\"ntgxc_text\" name=\"ntgxc_text\" rows=\"10\" placeholder=\"*Vertices 3&#10;1 &quot;A&quot;&#10;2 &quot;B&quot;&#10;3 &quot;C&quot;&#10;*Edges&#10;1 2&#10;2 3\"><\/textarea><\/div>\n    <div class=\"ntgxc-field\"><label>Enriquecimento<\/label><div class=\"ntgxc-grid\">\n      <label class=\"ntgxc-check\"><input type=\"checkbox\" name=\"enrich_degree\"\/> Calcular grau<\/label>\n      <label class=\"ntgxc-check\"><input type=\"checkbox\" name=\"enrich_strength\"\/> Calcular for\u00e7a<\/label>\n      <label class=\"ntgxc-check\"><input type=\"checkbox\" name=\"enrich_size\"\/> Tamanho do n\u00f3 proporcional ao grau<\/label>\n      <label class=\"ntgxc-check\"><input type=\"checkbox\" name=\"enrich_color\"\/> Colorir n\u00f3s (paleta determin\u00edstica)<\/label>\n      <label class=\"ntgxc-check\"><input type=\"checkbox\" name=\"enrich_auto_weight\"\/> Peso 1 quando ausente<\/label>\n    <\/div><\/div>\n    <div class=\"ntgxc-field\"><label for=\"attr_degree_name\">Nome da coluna do grau<\/label><input type=\"text\" id=\"attr_degree_name\" name=\"attr_degree_name\" placeholder=\"calc_degree\"\/><\/div>\n    <div class=\"ntgxc-field\"><label for=\"attr_strength_name\">Nome da coluna da for\u00e7a<\/label><input type=\"text\" id=\"attr_strength_name\" name=\"attr_strength_name\" placeholder=\"calc_strength\"\/><\/div>\n    <div class=\"ntgxc-field\"><label for=\"enrich_position\">Posi\u00e7\u00f5es<\/label><select id=\"enrich_position\" name=\"enrich_position\"><option value=\"none\">Sem posi\u00e7\u00f5es<\/option><option value=\"circle\">C\u00edrculo<\/option><option value=\"grid\">Grade<\/option><\/select><\/div>\n    <div class=\"ntgxc-field\"><label for=\"override_directed\">Tipo de aresta<\/label><select id=\"override_directed\" name=\"override_directed\"><option value=\"\">Detectar do arquivo<\/option><option value=\"undirected\">For\u00e7ar n\u00e3o-dirigido<\/option><option value=\"directed\">For\u00e7ar dirigido<\/option><\/select><\/div>\n    <button class=\"ntgxc-btn\" type=\"submit\">Converter e Baixar<\/button>\n  <\/form>\n<\/div>\n\n\n\n\n<p>.<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<p class=\"has-large-font-size\" id=\"leitura\"><strong>Indica\u00e7\u00e3o de leitura sobre an\u00e1lise de redes sociais<\/strong><\/p>\n\n\n\n<p><strong>Bibliografia b\u00e1sica<\/strong><\/p>\n\n\n\n<p>COSTA, L. et al. (coord.). <strong>Redes<\/strong>: uma introdu\u00e7\u00e3o \u00e0s din\u00e2micas da conectividade e da auto- organiza\u00e7\u00e3o. Bras\u00edlia: WWF, 2003. Dispon\u00edvel em: <a href=\"https:\/\/www.wwf.org.br\/?3960\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.wwf.org.br\/?3960<\/a> . Acesso em: 29 set. 2025.<\/p>\n\n\n\n<p>MATHEUS, R. F.; SILVA, A. B. O. An\u00e1lise de redes sociais como m\u00e9todo para a ci\u00eancia da informa\u00e7\u00e3o. <strong>DataGramaZero<\/strong>, Rio de Janeiro v. 7, n. 2, abr. 2006. Dispon\u00edvel em: &lt; <a href=\"https:\/\/brapci.inf.br\/v\/5910\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/brapci.inf.br\/v\/5910<\/a> &gt;. Acesso em: 29 set. 2025.<\/p>\n\n\n\n<p>MELLO, M. A. R. et al. <strong>Guia para an\u00e1lise de redes ecol\u00f3gicas<\/strong>. Belo Horizonte: [s.n.], 2016. Dispon\u00edvel em: <a href=\"https:\/\/marcomellolab.wordpress.com\/wp-content\/uploads\/2020\/09\/mello-et-al-2016-guia-para-analise-de-redes-ecologicas-2016.09.06.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/marcomellolab.wordpress.com\/wp-content\/uploads\/2020\/09\/mello-et-al-2016-guia-para-analise-de-redes-ecologicas-2016.09.06.pdf<\/a> . Acesso em: 29 set. 2025.<\/p>\n\n\n\n<p>PAULO, A. F. Potencialidades investigativas utilizando an\u00e1lise de redes sociais. In: SHINTAKU, M.; MAC\u00caDO, D. J.; MARIN, L. H. G. (Editores). <strong>Tecnologias utilizadas em pesquisas acad\u00eamicas em Ci\u00eancias Sociais Aplicadas<\/strong>. Bras\u00edlia: IBICT, 2023. p. 139-208. Dispon\u00edvel em: <a href=\"https:\/\/labcotec.ibict.br\/omp\/index.php\/edibict\/catalog\/view\/312\/347\/2003\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/labcotec.ibict.br\/omp\/index.php\/edibict\/catalog\/view\/312\/347\/2003<\/a>. Acesso em: 29 set. 2025.<\/p>\n\n\n\n<p><strong>Conte\u00fados selecionados &#8211; Curadoria Informe-CI<\/strong><\/p>\n\n\n\n<p>An\u00e1lise de Redes Sociais: <a href=\"https:\/\/www.pedroandretta.info\/index\/tag\/analisederedessociais\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.pedroandretta.info\/index\/tag\/analisederedessociais\/<\/a><\/p>\n\n\n\n<p>An\u00e1lise de Cita\u00e7\u00e3o: <a href=\"https:\/\/www.pedroandretta.info\/index\/tag\/analisedecitacao\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.pedroandretta.info\/index\/tag\/analisedecitacao\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gerador e visualizador de arquivos de redes sociais *.Net Os sistemas a seguir t\u00eam car\u00e1ter pedag\u00f3gico\/demonstrativo e n\u00e3o substituem o uso do Pajek, Gephi, VOSViews, CiteInsight ou outros softwares. Os inputs e outputs dos sistemas n\u00e3o ficam armazenados nos servidores. A velocidade de processamento pode variar em fun\u00e7\u00e3o da carga de dados e do funcionamento<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/www.pedroandretta.info\/index\/arquivos-net\/\" class=\"home-blog-btn\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/pagebuilder.php","meta":{"footnotes":""},"class_list":["post-33248","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/pages\/33248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/comments?post=33248"}],"version-history":[{"count":1,"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/pages\/33248\/revisions"}],"predecessor-version":[{"id":36085,"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/pages\/33248\/revisions\/36085"}],"wp:attachment":[{"href":"https:\/\/www.pedroandretta.info\/index\/wp-json\/wp\/v2\/media?parent=33248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}