TRACED: Trend-adaptive classification with ellipsoidal disambiguation for resolving exterior and coincident regions in data streamsWongsriphisant, P., Plaimas, K., & Lursinsap, C.Information Sciences, 123338 · 2026Q1
Markov-based continuous learning with diversion of data distribution direction for streaming data in limited memoryWongsriphisant, P., Plaimas, K., & Lursinsap, C.Expert Systems with Applications, 129818 · 2025Q1
Target identification using Homopharma and network-based methods for predicting compounds against dengue virus-infected cellsHengphasatporn, K., Plaimas, K., Suratanee, A., Wongsriphisant, P., Yang, J.-M., Shigeta, Y., Chavasiri, W., Boonyasuppayakorn, S., & Rungrotmongkol, T.Molecules, 25(8), 1883 · 2020
A classification of biochemical compounds based on their primitive structures and graph kernelsWongsriphisant, P., Lursinsap, C., Suratanee, A., & Plaimas, K.Proc. 17th International Joint Conference on Computer Science and Software Engineering (JCSSE), pp. 104–109 · 2020
Prediction improvement in versatile hyper-ellipsoidal learning by trend-adaptive prediction and diversion of data distribution directionPh.D. dissertationChulalongkorn University · 2026
Applying support vector machine with connectivity of primitive biochemical compound structure to identify target characteristics of moleculesM.S. thesisChulalongkorn University · 2020
Co-authorship network
Each node is an author, sized by how many of these papers they appear on. Edge thickness counts joint papers. The graph is built from publications.bib every time the site is rendered, so it stays in sync with the list above. Drag the nodes to rearrange it.
{const width =680, height =470, pad =40;const nodes = coauthors.nodes.map(d => ({...d}));const links = coauthors.links.map(d => ({...d}));const r = d =>7+5* d.papers;const sim = d3.forceSimulation(nodes).force("link", d3.forceLink(links).id(d => d.id).distance(150)).force("charge", d3.forceManyBody().strength(-1100)).force("center", d3.forceCenter(width /2, height /2)).force("collide", d3.forceCollide(d =>r(d) +40));const svg = d3.create("svg").attr("viewBox", [0,0, width, height]).attr("class","net").attr("role","img").attr("aria-label","Co-authorship network");const link = svg.append("g").selectAll("line").data(links).join("line").attr("class","net-link").attr("stroke-width", d =>1.2* d.weight);const node = svg.append("g").selectAll("g").data(nodes).join("g").attr("class", d => d.self?"net-node self":"net-node").call(d3.drag().on("start", (e, d) => { if (!e.active) sim.alphaTarget(0.3).restart(); d.fx= d.x; d.fy= d.y; }).on("drag", (e, d) => { d.fx= e.x; d.fy= e.y; }).on("end", (e, d) => { if (!e.active) sim.alphaTarget(0); d.fx=null; d.fy=null; })); node.append("circle").attr("r", r); node.append("text").attr("class","net-label").attr("text-anchor","middle").attr("dy", d =>-r(d) -7).text(d => d.label); node.append("title").text(d =>`${d.label}: ${d.papers} paper${d.papers>1?"s":""}`); sim.on("tick", () => {for (const d of nodes) { d.x=Math.max(pad,Math.min(width - pad, d.x)); d.y=Math.max(pad,Math.min(height - pad /2, d.y)); } link.attr("x1", d => d.source.x).attr("y1", d => d.source.y).attr("x2", d => d.target.x).attr("y2", d => d.target.y); node.attr("transform", d =>`translate(${d.x},${d.y})`); }); invalidation.then(() => sim.stop());return svg.node();}