Skip to main content

The dataset files

The dataset page offers the data as an Excel workbook and as a CSV table. Both contain the same table, built for analysis: one row per electrospinning run, one column per value, every number in a fixed unit.

What's in the Excel workbook​

SheetContents
READMEVersion, date, number of runs and publications, license, how to cite, and how to read the data.
RunsThe data. The header row and record_id stay in view while you scroll, and every column has a filter. Hover over a column header to see its description and unit.
PublicationsOne row per publication: DOI, link, title, abstract, device and number of runs.
DictionaryEvery column of Runs: group, unit, type and description, and the bulk-upload column it corresponds to.

The CSV is the Runs sheet. It is UTF-8 encoded with a byte-order mark, so Excel shows µ, ° and accents correctly, and it is comma separated.

How to read the data​

  • Units are in the column names. voltage_kV is always in kV, flow_rate_mL_h in mL/h, fiber_diameter_nm in nm. Values entered in another unit (V, µL/min, µm, mm, K, GPa, …) were converted.
  • A run without a recorded unit is in the contribution form's default unit, which is the one in the column name.
  • Empty means "not reported". There are no placeholders such as - or 0.
  • Several values in one cell (morphology, instabilities) are separated by ; .
  • Polymers, solvents and additives are listed together (polymers: PCL + GELATIN) and one per numbered column:
    • polymer_1, polymer_1_mw_kDa, polymer_1_share_wt_pct, …
    • solvent_1, solvent_1_share_vv_pct, …
    • additive_1, additive_1_amount, additive_1_amount_unit (wt% or mg/mL), additive_1_amount_basis (what the amount is relative to: polymer, solution or solvent), …
  • Copolymers have polymer_N_monomers and polymer_N_composition, e.g. LA:GA and 75:25, in polymer_N_composition_unit. polymer_type is homopolymer, copolymer, blend or core/shell.
  • Mixed and core/shell solutions (see Solution preparation):
    • solution_preparation says which (single, mixed, core/shell), and solution_description summarises the solutions.
    • The full structure is in the JSON download and the API.
    • Coaxial runs have flow_rate_core_mL_h and flow_rate_shell_mL_h, and flow_rate_mL_h is their total.
  • Fiber diameter: fiber_diameter_qualifier is exact, approximate or range. For a range, fiber_diameter_nm is the midpoint and fiber_diameter_min_nm / fiber_diameter_max_nm are the bounds.
  • Concentration keeps its unit (concentration, concentration_unit, mostly wt%). wt% and mg/mL cannot be converted into each other without the solution's density.
  • unit_notes lists any value whose unit could not be converted; such values are left empty instead of being guessed.
  • completeness_score (0–100) shows how much of the important information a run has.
  • record_id identifies a run and stays the same across dataset versions.

Column groups​

GroupColumns
Runrecord_id, completeness_score
Publicationdoi, publication_url, publication_title, data_origin, extraction_method, source_location
Polymers / Additives / Solventspolymer_type, polymers, polymer_N_…, additives, additive_N_…, solvents, solvent_N_…
Solutionsolution_preparation, solution_description, concentration, concentration_unit, viscosity_cP, surface_tension_mN_m, conductivity_mS_cm, evaporation_rate_mg_cm2_h, ph
Needleneedle_type, needle_gauge_G, needle_diameter_mm, needle_inner_gauge_G, needle_inner_diameter_mm, needle_middle_gauge_G, needle_middle_diameter_mm, needle_outer_gauge_G, needle_outer_diameter_mm, needle_material. A needle size is either a gauge or an inner diameter in mm, as reported; gauges are not converted to mm.
Collector & devicecollector_type, collector_material, collector_…_cm / _rpm / _mm, device_manufacturer, device_model, custom_device
Processvoltage_kV, flow_rate_mL_h (+ _core_ / _middle_ / _shell_), tip_collector_distance_cm, spinning_duration_min, temperature_C, relative_humidity_pct, formation_stable, instabilities
Fibersfiber_diameter_nm, fiber_diameter_sd_nm, fiber_diameter_qualifier, fiber_diameter_min_nm, fiber_diameter_max_nm, diameter_method, diameter_n, morphology, product_weight_mg
Propertiestensile_strength_MPa, youngs_modulus_MPa, elongation_at_break_pct, fracture_behaviour, specific_surface_area_m2_g, porosity_pct, permeability_nm2, water_contact_angle_deg, electrical_conductivity_S_m, thermal_conductivity_W_mK, application fields
Qualityunit_notes

The Dictionary sheet is the complete, authoritative list. The numbered columns start at three per component and grow if a run has more.

Loading the data​

import pandas as pd

runs = pd.read_csv("electrospinning_dataset.csv")
# or: pd.read_excel("electrospinning_dataset.xlsx", sheet_name="Runs")
pan = runs[runs["polymers"] == "PAN"]
pan.plot.scatter(x="voltage_kV", y="fiber_diameter_nm")
runs <- read.csv("electrospinning_dataset.csv", fileEncoding = "UTF-8-BOM")
summary(runs$fiber_diameter_nm)

Correcting or extending the data​

The downloaded file (Excel or CSV) can be uploaded on the bulk upload page, and the web form's Import from Excel reads it too.

  • New runs: the rows are uploaded as new runs. Use this to add your own runs in the same layout.
  • Corrections: to correct a run that is already published, edit it in My Submissions or contact us.
  • Mixed and core/shell runs are re-uploaded as one solution; describe them on the Solutions sheet to keep their structure.

The image dataset​

The Image dataset (.zip) download (and format=zip on the export endpoints) holds the fiber images of the runs, with their metadata:

README.md version, license, citation, counts, how to load it
images.csv one row per image
runs.csv the runs that have images, in the same columns as the main dataset
images/{record_id}/{image_id}_{type}.{ext}
  • Files: images are grouped by run. The extension is the file's real format (png, jpg, tif, ...), detected from the file itself.
  • images.csv: image_id, file (path in the archive), record_id, image_type (SEM, FESEM, Cross-sectional SEM, Microscopy, Simple Image), file_format, width_px, height_px, file_size_bytes, sha256, scale_bar_nm, magnification_x, staining, description, other_metadata, followed by key values of the run (doi, polymers, solvents, concentration, voltage_kV, flow_rate_mL_h, tip_collector_distance_cm, fiber_diameter_nm, morphology, ...). For everything else, join with runs.csv on record_id.
  • A version's zip is made from the same runs as its tables, so its values match the Excel and CSV of that version.
import pandas as pd
from PIL import Image

images = pd.read_csv("images.csv")
sem = images[images.image_type == "SEM"].dropna(subset=["fiber_diameter_nm"])
for row in sem.itertuples():
img = Image.open(row.file)
target = row.fiber_diameter_nm

Dataset versions published before October 2026 keep the layout they were released with.