BME logo

Adatelemzési Folyamat

Részletes dokumentáció arról, hogyan dolgozzák fel, szűrik és összesítik a publikációkat statisztikák és vizualizációk generálásához.

Elemzési Folyamat Áttekintése

Az elemzési folyamat több lépésen keresztül alakítja át a nyers publikációs adatokat átfogó statisztikákká.

Feldolgozási Lépések

  1. Adatbetöltés: A nyers publikációk az MTMT API-ból töltődnek be
  2. Publikáció Példányosítás: Minden publikációt Publication osztálypéldánnyá csomagolnak
  3. Tudományos Szűrő: Csak azok a publikációk kerülnek feldolgozásra, ahol category.mtid === 1
  4. Szerzőség Szűrő: Csak azok a publikációk kerülnek bele, ahol a szerző típusos szerző (nem csak közreműködő)
  5. Adatbővítés:
    • Norvég szint minősítések betöltése
    • Impakt Faktor keresése az IF listából
    • Szerző részesedés számítása
  6. Metrika Számítás:
    • Q Pontszám számítás
    • I Pontszám számítás
    • Impakt Faktor hozzárendelés
    • Publikáció minősítés kinyerése
  7. Összesítés: A statisztikák összesítése az összes publikációra
  8. Éves Csoportosítás: Az adatok publikációs év szerint csoportosítva trendelemzéshez
  9. Számított Metrikák: H-Index és teljes Q Pontszám számítása
  10. Diagram Adatok Előkészítése: Az adatok vizualizációhoz formázva

// Main analysis function flow
export const analyze = async (
  author: { mtid: string; name: string; degrees: string[] },
  rawPublications: Publication[],
  translations?: Record<string, string>
): Promise<ProcessedPublicationData> => {
  // 1. Filter scientific publications
  const publications = rawPublications
    .map((data) => new Publication(data))
    .filter((pub) => pub.isScientific());
  
  // 2. Filter by authorship
  for (const pub of publications) {
    if (!pub.authorships?.some(
      (a) => a.author?.mtid === Number(author.mtid) && 
             a.authorTyped === true
    )) {
      pub.contributorOnly = true;
      continue; // Skip contributor-only publications
    }
    
    // 3. Load additional data
    loadNorwayLevel(pub);
    const impactFactor = await getImpactFactor(pub);
    const authorShare = pub.getAuthorShare(author.mtid);
    
    // 4. Calculate metrics
    const qScore = await pub.getQScore(authorShare, impactFactor);
    const iScoreData = pub.getIScore();
    
    // 5. Aggregate statistics
    stats.totalScientificPublications++;
    stats.qScore.fromArticles += qScore.qscore;
    // ... more aggregations
  }
  
  // 6. Calculate derived metrics
  stats.hIndex = calculateHIndex(citations);
  stats.qScore.total = stats.qScore.fromArticles + stats.qScore.fromBooks;
  
  return { statistics, chartData, authors, types, journals, publications, meta };
};

Publikáció Szűrése

A publikációknak több szűrőn is át kell menniük, hogy a statisztikákba bekerüljenek.

Tudományos Publikáció Szűrő

Csak a tudományosnak jelölt publikációk kerülnek feldolgozásra. Egy publikáció akkor tekinthető tudományosnak, ha:

pub.category?.mtid === 1

Szerzőség Szűrő

A szerzőnek típusos szerzőnek kell lennie (authorTyped === true), nem csak közreműködőnek. Azok a publikációk, ahol a szerző csak közreműködő, contributorOnly = true jelölést kapnak és kizárásra kerülnek a statisztikákból.

Megjegyzés: A csak közreműködő publikációk továbbra is szerepelnek a publikációs listában referenciaként, de nem járulnak hozzá semmilyen metrikához vagy statisztikához.


// Publication filtering logic
for (const pub of publications) {
  // Step 1: Must be scientific
  if (!pub.isScientific()) continue;
  
  // Step 2: Author must be typed author (not just contributor)
  if (!pub.authorships?.some(
    (a) => a.author?.mtid === Number(author.mtid) && 
           a.authorTyped === true
  )) {
    pub.contributorOnly = true;
    continue; // Exclude from statistics
  }
  
  // Publication passes all filters, process it
  stats.totalScientificPublications++;
}

Publikáció Típus Kategorizálás

A publikációk típus és nyelv/kiadás szerint is kategorizálva vannak részletes statisztikák biztosításához.

Publikáció Típusok

  • scientificArticle: Folyóiratcikkek (journalarticle)
  • conferenceArticle: Konferenciaközlemények könyvfejezetekben
  • bookChapter: Könyvfejezetek (nem konferencia)
  • book: Teljes könyvek
  • patent: Szabadalmak
  • thesis: Értekezések/disszertációk
  • other: Egyéb publikáció típusok

Nyelv/Kiadás Kategóriák

Minden publikáció típus tovább kategorizálva van nyelv és kiadás szerint:

  • foreign: Idegen kiadású publikációk
  • hungarianForeign: Magyar publikációk idegen nyelven
  • hungarianNative: Magyar publikációk magyar nyelven

Kategória Meghatározási Logika:

  1. Ha foreignEdition === true → foreign
  2. Különben ha foreignLanguage === true → hungarianForeign
  3. Különben → hungarianNative

// Publication type categorization
const update_PublicationsByType_Stats = (
  pub: Publication,
  stats: Statistics
) => {
  const type = pub.type?.otypeName?.toLowerCase() || "";
  
  // Determine category (foreign, hungarianForeign, hungarianNative)
  const category = pub.foreignEdition
    ? "foreign"
    : pub.foreignLanguage
    ? "hungarianForeign"
    : "hungarianNative";
  
  // Map publication types
  const typeMap: Record<string, keyof Statistics["publicationsByType"]> = {
    journalarticle: "scientificArticle",
    bookchapter: pub.subType?.name?.toLowerCase().includes("konferencia")
      ? "conferenceArticle"
      : "bookChapter",
    book: "book",
    patent: "patent",
    thesis: "thesis",
  };
  
  const publicationType = typeMap[type] || "other";
  stats.publicationsByType[publicationType][category]++;
};

Diagram Adatok Előkészítése

Az éves összesített adatok diagramra kész formátumokká alakítva vizualizációhoz.

Diagram Adatstruktúra

A rendszer több diagram adathalmazt generál:

  • publicationsWithRankings: Éves számok minősítési kategóriánként
  • cumulativePublications: Kumulatív számok minősítési kategóriánként
  • iScore: Éves I Pontszám értékek
  • cumulativeIScore: Kumulatív I Pontszám értékek
  • qScore: Éves Q Pontszám értékek
  • cumulativeQScore: Kumulatív Q Pontszám értékek
  • impactFactor: Impakt Faktorral rendelkező publikációk éves száma
  • cumulativeImpactFactor: Impakt Faktorral rendelkező publikációk kumulatív száma

Év Rendezés

Az évek növekvő sorrendben vannak rendezve a kronológiai vizualizáció biztosításához. Az "Ismeretlen" év, ha jelen van, általában a végére kerül.


// Chart data preparation from yearly data
const prepareChartDataFromYearlyData = (yearlyData) => {
  const years = Object.keys(yearlyData).sort();
  const cumulative = {
    D1: 0, Q1: 0, Q2: 0, Q3: 0, Q4: 0, NA: 0,
    iScore: 0, qScore: 0, publicationsWithIF: 0,
  };
  
  return {
    // Yearly rankings
    publicationsWithRankings: {
      years,
      rankings: {
        D1: years.map((year) => yearlyData[year].rankings.D1),
        Q1: years.map((year) => yearlyData[year].rankings.Q1),
        // ... Q2, Q3, Q4, N/A
      },
    },
    
    // Cumulative rankings
    cumulativePublications: {
      years,
      rankings: {
        D1: years.map((year) => (cumulative.D1 += yearlyData[year].rankings.D1)),
        // ... similar for other rankings
      },
    },
    
    // I Score and Q Score (yearly and cumulative)
    iScore: {
      label: "Éves független hivatkozások",
      years,
      data: years.map((year) => yearlyData[year].iscore),
    },
    cumulativeIScore: {
      label: "Kumulatív független hivatkozások",
      years,
      data: years.map((year) => (cumulative.iScore += yearlyData[year].iscore)),
    },
    // ... similar for Q Score and Impact Factor
  };
};

Elemzés Metaadatok

Minden elemzés tartalmaz metaadatokat az adatforrásokról és a feldolgozási időről.

Metaadat Mezők

  • lastUpdated: Az elemzés végrehajtásának időbélyege
  • ifListVersionYear: A használt Impakt Faktor lista éve
  • norwayListVersionYear: A használt Norvég lista éve

Megjegyzés: Az IF lista és Norvég lista verzió évek jelzik, hogy melyik verzióját használták a külső adatforrásoknak az elemzéshez. Ez fontos a reprodukálhatósághoz.

A Norvég lista minőségi értékelésekkel rendelkező folyóiratokat tartalmaz (0-2 skála). Alapértelmezés szerint a Szint 0 minősítéssel rendelkező folyóiratokból származó publikációk minden számításban szerepelnek. A statisztikák oldalon található kapcsolóval engedélyezhető a kizárás. Ha a kizárás engedélyezve van, a Szint 0 publikációk nem járulnak hozzá a Q-pontszám és az I-pontszám és az Impakt Faktor számításához.

További Adatgyűjtemények

A statisztikákon túl az elemzés további információkat gyűjt megjelenítéshez és szűréshez.

Gyűjtött Halmazok

  • authors: Az összes társszerző halmaza az összes publikációból (abc sorrendben)
  • types: Az összes talált publikáció típus halmaza
  • journals: Az összes folyóiratnév halmaza (abc sorrendben)
  • publications: Az összes feldolgozott Publication példány tömbje

Ezek a gyűjtemények lehetővé teszik a szűrést, keresést és a szerző publikációs történetének részletes feltárását.