Sunday, 17 May 2026

Part 2: Building a Python Model for Cotton Yarn Quality Optimisation Using SVR, Genetic Algorithm and Desirability Function



Part 2: Building a Python Model for Cotton Yarn Quality Optimisation Using SVR, Genetic Algorithm and Desirability Function

In the previous article, we discussed how cotton yarn quality can be optimised through the careful selection of raw material parameters. The main idea was simple but powerful: yarn quality does not depend on one fibre property alone. It depends on a combination of fibre strength, elongation, length, uniformity, fineness and short fibre content.

In this second part, we will convert that idea into a simple Python demonstration. The purpose is not to reproduce the exact experimental model of the research paper, but to understand how such a model can be built. We will assume suitable spinning data, train a prediction model, and then use an optimisation algorithm to search for the best cotton fibre profile.

\[ \text{Cotton Fibre Parameters} \rightarrow \text{SVR Prediction Model} \rightarrow \text{Genetic Algorithm Search} \rightarrow \text{Optimum Yarn Quality} \]

This kind of approach is useful because textile mills often face a practical question: “Given several cotton lots, which combination of fibre properties will give the best yarn quality?” Traditionally, this decision depends on experience, HVI values, past spinning behaviour and the spinner’s judgement. A model-based approach does not replace experience, but it can support that experience with data.

What We Are Trying to Model

In this demonstration, we take six cotton fibre properties as input variables. These variables represent the raw material side of the spinning problem and are commonly used to judge whether a cotton lot is suitable for a particular yarn requirement.

Fibre Parameter Meaning
FS Fibre strength
FE Fibre elongation
UHML Upper half mean length
UI Uniformity index
FF Fibre fineness
SFC Short fibre content

These fibre properties are then used to predict four yarn quality parameters. The important point is that these yarn properties do not all move in the same direction. For yarn strength and elongation, higher values are preferred. For unevenness and hairiness, lower values are preferred.

Yarn Quality Parameter Desired Direction
Yarn strength Higher is better
Yarn elongation Higher is better
Unevenness U% Lower is better
Hairiness index Lower is better

This is important because yarn quality is not a single number. A yarn with high strength but high hairiness may not be acceptable. Similarly, a yarn with good elongation but poor evenness may create fabric defects. Therefore, the model must balance several responses together.

\[ \text{Good Yarn Quality} = \text{High Strength} + \text{High Elongation} + \text{Low Unevenness} + \text{Low Hairiness} \]

Why We Are Using Assumed Data

For this blog, we assume suitable data because actual spinning mill data may not be available to every reader. The assumed data follows textile logic. For example, higher fibre strength should generally improve yarn strength. Higher short fibre content should generally increase unevenness and hairiness. Better uniformity should generally improve yarn regularity.

However, it is important to remember that this is only a learning model. A real mill should train the model using its own data. Cotton variety, bale mixing, machine condition, humidity, carding efficiency, drafting settings and twist level can all influence the final yarn result.

Important positioning: This is an educational Python demonstration inspired by spinning optimisation logic. It should not be treated as a universal formula for cotton yarn prediction.

Step 1: Importing the Required Libraries

We first import the Python libraries needed for the model. We use numpy and pandas for data handling, scikit-learn for Support Vector Regression, and scipy for optimisation.

import numpy as np
import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.svm import SVR
from sklearn.multioutput import MultiOutputRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_absolute_percentage_error

from scipy.optimize import differential_evolution

Here, SVR is the prediction model. Since we want to predict more than one yarn property, we use MultiOutputRegressor. This allows the SVR model to predict yarn strength, elongation, unevenness and hairiness together.

Step 2: Creating Assumed Cotton Fibre Data

Now we create a synthetic dataset. Each row represents one cotton fibre sample or cotton lot. The values are generated within reasonable practical ranges, so that the demonstration remains close to spinning logic.

np.random.seed(42)

n_samples = 80

data = pd.DataFrame({
    "FS": np.random.uniform(25, 36, n_samples),       # Fibre strength, cN/tex
    "FE": np.random.uniform(5.0, 8.5, n_samples),     # Fibre elongation, %
    "UHML": np.random.uniform(0.85, 1.25, n_samples), # Upper half mean length, inch
    "UI": np.random.uniform(76, 88, n_samples),       # Uniformity index
    "FF": np.random.uniform(3.2, 5.2, n_samples),     # Fibre fineness, µg/in
    "SFC": np.random.uniform(4, 15, n_samples)        # Short fibre content, %
})

The six variables are:

\[ FS,\ FE,\ UHML,\ UI,\ FF,\ SFC \]

These represent the raw material side of the problem. In real mill practice, such values may come from HVI testing or other fibre testing systems.

Step 3: Creating Assumed Yarn Quality Relationships

Next, we create synthetic yarn quality values. These are not random numbers alone. They are based on textile logic. For example, yarn strength is assumed to improve with fibre strength, fibre length and uniformity, but reduce with short fibre content.

Similarly, unevenness and hairiness are assumed to increase when short fibre content is high. In actual mill data, these relationships may be more complex, but this simplified structure is useful for understanding the modelling workflow.

noise = np.random.normal(0, 0.3, n_samples)

data["Yarn_Strength"] = (
    0.35 * data["FS"]
    + 2.2 * data["UHML"]
    + 0.06 * data["UI"]
    - 0.18 * data["SFC"]
    + noise
)

data["Yarn_Elongation"] = (
    0.45 * data["FE"]
    + 0.03 * data["UI"]
    - 0.04 * data["SFC"]
    + np.random.normal(0, 0.15, n_samples)
)

data["Unevenness_U"] = (
    18
    - 0.08 * data["UI"]
    + 0.28 * data["SFC"]
    + 0.35 * data["FF"]
    - 0.9 * data["UHML"]
    + np.random.normal(0, 0.25, n_samples)
)

data["Hairiness"] = (
    3.5
    + 0.18 * data["SFC"]
    + 0.35 * data["FF"]
    - 0.7 * data["UHML"]
    + np.random.normal(0, 0.15, n_samples)
)

This step is important because a machine learning model needs input-output examples. In a real mill, these output values would come from yarn testing instruments, such as strength testers, evenness testers and hairiness measuring systems.

\[ \text{Fibre Properties} \rightarrow \text{Yarn Properties} \]

Step 4: Defining Inputs and Outputs

Now we separate the input variables and output variables. The variable X contains cotton fibre properties, while the variable y contains yarn quality properties.

X = data[["FS", "FE", "UHML", "UI", "FF", "SFC"]]

y = data[[
    "Yarn_Strength",
    "Yarn_Elongation",
    "Unevenness_U",
    "Hairiness"
]]

This is the basic supervised learning structure. In textile language, we are asking the model to learn how cotton fibre data is connected with yarn quality.

\[ X \rightarrow y \]
\[ \text{Cotton Fibre Data} \rightarrow \text{Yarn Quality} \]

Step 5: Splitting the Data

The data is divided into training and testing sets. The model learns from the training data and is evaluated on the testing data. This helps us understand whether the model can make reasonable predictions on new data.

X_train, X_test, y_train, y_test = train_test_split(
    X, y,
    test_size=0.2,
    random_state=42
)

We use 80% of the data for training and 20% for testing. This is a common approach in machine learning. The purpose of testing is to check whether the model can make reasonable predictions on data it has not seen during training.

Step 6: Training the SVR Model

Support Vector Regression is used as the prediction engine. Since fibre-to-yarn relationships may be non-linear, we use an RBF kernel. The model is placed inside a pipeline along with a scaler.

svr_model = Pipeline([
    ("scaler", StandardScaler()),
    ("svr", MultiOutputRegressor(
        SVR(kernel="rbf", C=100, gamma="scale", epsilon=0.1)
    ))
])

svr_model.fit(X_train, y_train)

The StandardScaler is used because SVR is sensitive to scale. Fibre strength, fibre elongation, UHML, uniformity index and short fibre content are measured on different scales. Scaling helps the model treat the variables more fairly.

\[ FS, FE, UHML, UI, FF, SFC \rightarrow \text{Strength, Elongation, Unevenness, Hairiness} \]

In practical words, once the model is trained, we can give it a new cotton fibre profile and ask: what yarn quality is likely to result from this cotton?

Step 7: Checking Prediction Error

After training the model, we evaluate its prediction error on test data. This step is important because optimisation is only useful when the prediction model itself is reasonably reliable.

y_pred = svr_model.predict(X_test)

mape = mean_absolute_percentage_error(
    y_test,
    y_pred,
    multioutput="raw_values"
)

performance = pd.DataFrame({
    "Yarn Property": y.columns,
    "MAPE": mape
})

print(performance)

MAPE means Mean Absolute Percentage Error. Lower MAPE indicates better prediction accuracy. The exact values will change because the data is synthetic, but the purpose here is to show how prediction performance can be evaluated.

Yarn Property Expected Interpretation
Yarn strength Lower error means the model is predicting strength more reliably.
Yarn elongation Lower error means the model is capturing stretch behaviour better.
Unevenness U% Moderate error may occur because unevenness depends on many process factors.
Hairiness Error depends on how well fibre fineness, length and short fibre content explain hairiness.

Step 8: Creating Desirability Functions

Prediction alone is not enough. We also need to decide what is desirable. For yarn strength and elongation, higher values are better. For unevenness and hairiness, lower values are better. So we create two types of desirability functions.

def desirability_higher(value, low, high):
    """
    Higher value is better.
    Returns desirability between 0 and 1.
    """
    if value <= low:
        return 0
    elif value >= high:
        return 1
    else:
        return (value - low) / (high - low)


def desirability_lower(value, low, high):
    """
    Lower value is better.
    Returns desirability between 0 and 1.
    """
    if value <= low:
        return 1
    elif value >= high:
        return 0
    else:
        return (high - value) / (high - low)

The meaning is simple. A desirability value of 0 means undesirable, while a desirability value of 1 means ideal. For example, if yarn strength is too low, its desirability becomes 0. If it reaches the desired upper level, its desirability becomes 1.

\[ 0 = \text{Undesirable}, \qquad 1 = \text{Ideal} \]

For unevenness and hairiness, the logic is reversed. Lower values are better, so the desirability is highest when these values are low.

Step 9: Combining Multiple Desirability Scores

Now we combine the four yarn quality scores into one overall desirability value. This allows us to judge yarn quality as a balanced combination of several responses, rather than as one isolated property.

def overall_desirability(predicted_values):
    """
    predicted_values order:
    [Yarn_Strength, Yarn_Elongation, Unevenness_U, Hairiness]
    """

    strength, elongation, unevenness, hairiness = predicted_values

    d_strength = desirability_higher(
        strength,
        low=14.0,
        high=17.0
    )

    d_elongation = desirability_higher(
        elongation,
        low=4.5,
        high=6.5
    )

    d_unevenness = desirability_lower(
        unevenness,
        low=10.5,
        high=13.5
    )

    d_hairiness = desirability_lower(
        hairiness,
        low=4.0,
        high=6.5
    )

    desirabilities = np.array([
        d_strength,
        d_elongation,
        d_unevenness,
        d_hairiness
    ])

    if np.any(desirabilities == 0):
        return 0

    return np.prod(desirabilities) ** (1 / len(desirabilities))

The model uses the geometric mean of the individual desirability values. This is useful because it prevents one very good property from hiding a very poor property. If any one desirability becomes zero, the overall desirability becomes zero.

\[ D = (d_1 \times d_2 \times d_3 \times d_4)^{1/4} \]

This reflects real spinning logic. A yarn cannot be considered excellent if it has very good strength but extremely poor evenness or hairiness.

Step 10: Defining the Optimisation Objective

The Genetic Algorithm needs an objective function. Since the algorithm used here minimises the objective, we return negative desirability. Minimising negative desirability is the same as maximising desirability.

def objective_function(fibre_params):
    """
    GA minimizes the objective.
    Since we want maximum desirability,
    we minimize negative desirability.
    """

    fibre_params = np.array(fibre_params).reshape(1, -1)

    predicted_yarn_quality = svr_model.predict(fibre_params)[0]

    desirability_score = overall_desirability(predicted_yarn_quality)

    return -desirability_score

The objective function follows a simple logic. First, it receives a possible set of cotton fibre parameters. Then it predicts yarn quality using the SVR model. Finally, it converts that predicted yarn quality into a desirability score.

\[ \text{Fibre Parameters} \rightarrow \text{Predicted Yarn Quality} \rightarrow \text{Desirability Score} \]

Step 11: Setting Practical Bounds

The optimisation must stay within practical cotton fibre limits. We define lower and upper bounds for each fibre property. This prevents the algorithm from suggesting unrealistic values.

bounds = [
    (25, 36),      # FS: Fibre strength
    (5.0, 8.5),   # FE: Fibre elongation
    (0.85, 1.25), # UHML
    (76, 88),     # UI
    (3.2, 5.2),   # FF
    (4, 15)       # SFC
]

For example, the algorithm should not suggest an impossible fibre strength or an impractical short fibre content. In mill practice, these bounds should be based on actual cotton availability and the type of yarn being produced.

Step 12: Running the Genetic Algorithm

Now we run the optimisation. Here, differential_evolution works like a Genetic Algorithm. It starts with several possible fibre combinations, evaluates them, keeps better solutions, modifies them and continues searching.

result = differential_evolution(
    objective_function,
    bounds=bounds,
    strategy="best1bin",
    maxiter=100,
    popsize=20,
    mutation=(0.5, 1),
    recombination=0.7,
    seed=42
)

The idea is to try a fibre combination, predict the yarn quality, score the desirability, and then improve the combination. After several generations, the algorithm finds a fibre-property combination that gives high overall desirability.

\[ \text{Try Fibre Combination} \rightarrow \text{Predict Yarn Quality} \rightarrow \text{Score Desirability} \rightarrow \text{Improve Combination} \]

Step 13: Getting the Best Fibre Parameters

Once the optimisation is complete, we extract the best fibre values and the predicted yarn quality. These values represent the best fibre-property combination found within the defined practical limits.

best_fibre_params = result.x
best_desirability = -result.fun

best_prediction = svr_model.predict(
    np.array(best_fibre_params).reshape(1, -1)
)[0]

We can then display the optimum fibre parameters in a simple table. In actual mill application, this table can help compare available cotton lots with the fibre profile suggested by the model.

optimum_fibre = pd.DataFrame({
    "Fibre Parameter": ["FS", "FE", "UHML", "UI", "FF", "SFC"],
    "Optimised Value": best_fibre_params
})

print(optimum_fibre)
Fibre Parameter Model Meaning
FS Optimum fibre strength suggested by the model.
FE Optimum fibre elongation suggested by the model.
UHML Optimum upper half mean length suggested by the model.
UI Optimum uniformity index suggested by the model.
FF Optimum fibre fineness suggested by the model.
SFC Optimum short fibre content suggested by the model.

Step 14: Predicting Yarn Quality at the Optimum Point

Finally, we display the yarn quality predicted for the optimum fibre profile. This is the most practically useful output because it shows the expected yarn result.

optimum_yarn = pd.DataFrame({
    "Yarn Property": [
        "Yarn Strength",
        "Yarn Elongation",
        "Unevenness U%",
        "Hairiness Index"
    ],
    "Predicted Value": best_prediction
})

print(optimum_yarn)

print(f"Overall desirability score: {best_desirability:.4f}")

The output tells us what yarn quality the model expects from the optimum cotton fibre profile. This is the real value of the model. It does not only say that a cotton is good. It says that a particular cotton fibre profile is expected to give a certain level of yarn strength, elongation, unevenness and hairiness.

Complete Python Code

The complete code is given below. It can be copied into Jupyter Notebook, Google Colab, or any Python environment where the required libraries are installed.

# ------------------------------------------------------------
# Cotton Yarn Quality Optimisation Model
# SVR + Genetic Algorithm + Desirability Function
# ------------------------------------------------------------

import numpy as np
import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.svm import SVR
from sklearn.multioutput import MultiOutputRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_absolute_percentage_error

from scipy.optimize import differential_evolution


# ------------------------------------------------------------
# 1. Assume suitable spinning data
# ------------------------------------------------------------

np.random.seed(42)

n_samples = 80

data = pd.DataFrame({
    "FS": np.random.uniform(25, 36, n_samples),       # Fibre strength, cN/tex
    "FE": np.random.uniform(5.0, 8.5, n_samples),     # Fibre elongation, %
    "UHML": np.random.uniform(0.85, 1.25, n_samples), # Upper half mean length, inch
    "UI": np.random.uniform(76, 88, n_samples),       # Uniformity index
    "FF": np.random.uniform(3.2, 5.2, n_samples),     # Fibre fineness, µg/in
    "SFC": np.random.uniform(4, 15, n_samples)        # Short fibre content, %
})

# ------------------------------------------------------------
# 2. Create assumed yarn-quality relationships
# ------------------------------------------------------------

noise = np.random.normal(0, 0.3, n_samples)

data["Yarn_Strength"] = (
    0.35 * data["FS"]
    + 2.2 * data["UHML"]
    + 0.06 * data["UI"]
    - 0.18 * data["SFC"]
    + noise
)

data["Yarn_Elongation"] = (
    0.45 * data["FE"]
    + 0.03 * data["UI"]
    - 0.04 * data["SFC"]
    + np.random.normal(0, 0.15, n_samples)
)

data["Unevenness_U"] = (
    18
    - 0.08 * data["UI"]
    + 0.28 * data["SFC"]
    + 0.35 * data["FF"]
    - 0.9 * data["UHML"]
    + np.random.normal(0, 0.25, n_samples)
)

data["Hairiness"] = (
    3.5
    + 0.18 * data["SFC"]
    + 0.35 * data["FF"]
    - 0.7 * data["UHML"]
    + np.random.normal(0, 0.15, n_samples)
)

# ------------------------------------------------------------
# 3. Define input and output variables
# ------------------------------------------------------------

X = data[["FS", "FE", "UHML", "UI", "FF", "SFC"]]

y = data[[
    "Yarn_Strength",
    "Yarn_Elongation",
    "Unevenness_U",
    "Hairiness"
]]

# ------------------------------------------------------------
# 4. Train-test split
# ------------------------------------------------------------

X_train, X_test, y_train, y_test = train_test_split(
    X, y,
    test_size=0.2,
    random_state=42
)

# ------------------------------------------------------------
# 5. Build SVR model
# ------------------------------------------------------------

svr_model = Pipeline([
    ("scaler", StandardScaler()),
    ("svr", MultiOutputRegressor(
        SVR(kernel="rbf", C=100, gamma="scale", epsilon=0.1)
    ))
])

svr_model.fit(X_train, y_train)

# ------------------------------------------------------------
# 6. Evaluate prediction performance
# ------------------------------------------------------------

y_pred = svr_model.predict(X_test)

mape = mean_absolute_percentage_error(
    y_test,
    y_pred,
    multioutput="raw_values"
)

performance = pd.DataFrame({
    "Yarn Property": y.columns,
    "MAPE": mape
})

print("\nPrediction error:")
print(performance)

# ------------------------------------------------------------
# 7. Desirability functions
# ------------------------------------------------------------

def desirability_higher(value, low, high):
    """
    Higher value is better.
    Returns desirability between 0 and 1.
    """
    if value <= low:
        return 0
    elif value >= high:
        return 1
    else:
        return (value - low) / (high - low)


def desirability_lower(value, low, high):
    """
    Lower value is better.
    Returns desirability between 0 and 1.
    """
    if value <= low:
        return 1
    elif value >= high:
        return 0
    else:
        return (high - value) / (high - low)


def overall_desirability(predicted_values):
    """
    predicted_values order:
    [Yarn_Strength, Yarn_Elongation, Unevenness_U, Hairiness]
    """

    strength, elongation, unevenness, hairiness = predicted_values

    d_strength = desirability_higher(
        strength,
        low=14.0,
        high=17.0
    )

    d_elongation = desirability_higher(
        elongation,
        low=4.5,
        high=6.5
    )

    d_unevenness = desirability_lower(
        unevenness,
        low=10.5,
        high=13.5
    )

    d_hairiness = desirability_lower(
        hairiness,
        low=4.0,
        high=6.5
    )

    desirabilities = np.array([
        d_strength,
        d_elongation,
        d_unevenness,
        d_hairiness
    ])

    if np.any(desirabilities == 0):
        return 0

    return np.prod(desirabilities) ** (1 / len(desirabilities))

# ------------------------------------------------------------
# 8. Objective function for optimisation
# ------------------------------------------------------------

def objective_function(fibre_params):
    """
    Optimiser minimizes the objective.
    Since we want maximum desirability,
    we minimize negative desirability.
    """

    fibre_params = np.array(fibre_params).reshape(1, -1)

    predicted_yarn_quality = svr_model.predict(fibre_params)[0]

    desirability_score = overall_desirability(predicted_yarn_quality)

    return -desirability_score

# ------------------------------------------------------------
# 9. Define practical bounds for cotton fibre properties
# ------------------------------------------------------------

bounds = [
    (25, 36),      # FS: Fibre strength
    (5.0, 8.5),   # FE: Fibre elongation
    (0.85, 1.25), # UHML
    (76, 88),     # UI
    (3.2, 5.2),   # FF
    (4, 15)       # SFC
]

# ------------------------------------------------------------
# 10. Run Genetic Algorithm style optimisation
# ------------------------------------------------------------

result = differential_evolution(
    objective_function,
    bounds=bounds,
    strategy="best1bin",
    maxiter=100,
    popsize=20,
    mutation=(0.5, 1),
    recombination=0.7,
    seed=42
)

best_fibre_params = result.x
best_desirability = -result.fun

best_prediction = svr_model.predict(
    np.array(best_fibre_params).reshape(1, -1)
)[0]

# ------------------------------------------------------------
# 11. Display optimum fibre parameters
# ------------------------------------------------------------

optimum_fibre = pd.DataFrame({
    "Fibre Parameter": ["FS", "FE", "UHML", "UI", "FF", "SFC"],
    "Optimised Value": best_fibre_params
})

print("\nOptimised cotton fibre parameters:")
print(optimum_fibre)

# ------------------------------------------------------------
# 12. Display predicted yarn quality at optimum fibre values
# ------------------------------------------------------------

optimum_yarn = pd.DataFrame({
    "Yarn Property": [
        "Yarn Strength",
        "Yarn Elongation",
        "Unevenness U%",
        "Hairiness Index"
    ],
    "Predicted Value": best_prediction
})

print("\nPredicted yarn quality at optimum fibre parameters:")
print(optimum_yarn)

print(f"\nOverall desirability score: {best_desirability:.4f}")

How to Interpret the Model Output

The first output is the prediction error. This tells us how well the SVR model predicts yarn properties from fibre properties. In a real project, this step is extremely important because a poor prediction model will lead to poor optimisation.

The second output is the optimum fibre parameter table. This tells us what fibre profile the algorithm selected as the best combination within the given limits. The third output is the predicted yarn quality at that optimum fibre profile, which is the most practically useful output.

Finally, the desirability score tells us how close the solution is to the ideal balanced yarn quality. A score close to 1 means the solution is highly desirable. A score close to 0 means the solution is poor.

Why This Model Is Useful for Textile Mills

This type of model can support raw material decisions in spinning mills. A mill may have several cotton lots available, each with different fibre properties. Instead of relying only on experience, the mill can use data to estimate the likely yarn quality from different fibre profiles.

The model can help answer practical questions. Which cotton fibre profile gives better yarn strength without increasing hairiness? How much short fibre content can be tolerated for a target yarn quality? What balance of fibre strength, length and uniformity gives the best overall yarn performance? Which raw material parameters should be prioritised for a particular yarn count?

This is useful because the cost of raw material is one of the most important cost components in spinning. If a mill can select cotton more scientifically, it can improve quality, reduce trial-and-error and possibly avoid overpaying for fibre properties that are not essential for a particular yarn.

Important Limitations

This model uses assumed data. Therefore, the numerical results should not be used directly for production decisions. The relationships created in the code are textile-logical, but they are not based on actual mill trials.

In a real spinning mill, the model should be trained using actual fibre and yarn test data. The data should include cotton fibre properties, yarn count, spinning system, machine settings, humidity conditions and final yarn test results.

The model shown here is also specific to the selected variables. In actual production, other factors such as trash content, micronaire, maturity, neps, carding quality, draft settings, spindle speed and twist multiplier may also influence yarn quality.

Therefore, this model should be treated as a framework, not as a finished industrial solution.

Final Conclusion

This Python demonstration shows how raw material selection in spinning can be converted into a data-driven optimisation problem. The SVR model predicts yarn quality from cotton fibre properties. The Genetic Algorithm searches for the best fibre-property combination. The desirability function balances several yarn quality requirements into one score.

The most important idea is that yarn quality should not be optimised through one parameter alone. A good yarn must be strong, extensible, even and less hairy. Therefore, the best cotton is not always the strongest or longest cotton. It is the cotton with the right balance of properties for the required yarn.

In that sense, this model gives a practical bridge between textile science and data science:

\[ \text{Spinning Knowledge} + \text{Machine Learning} + \text{Optimisation} = \text{Better Raw Material Decisions} \]

For students, this model is a good way to understand how artificial intelligence can be applied in spinning. For mills, the same logic can become a decision-support tool when trained with real production data.

General Disclaimer

This article is for educational and general textile knowledge purposes only. The Python model uses assumed data and simplified textile relationships for demonstration. Actual yarn quality depends on cotton variety, bale mixing, fibre testing accuracy, blow room settings, carding efficiency, draw frame performance, roving quality, ring frame settings, twist, humidity, machine condition and testing methods. Mills should use their own validated production data before applying such models for commercial raw material selection.

Buy my books at Amazon.com

Optimising Cotton Yarn Quality Through Raw Material Parameters



Optimising Cotton Yarn Quality Through Raw Material Parameters

In spinning, yarn quality begins much before the fibre reaches the ring frame. It begins with the choice of cotton itself. A spinner may control machine settings, humidity, drafting, twist, and winding conditions, but if the raw material is unsuitable, the final yarn quality will always remain limited.

The paper titled “Selection of raw material parameters for multi-response optimization of cotton yarn qualities” by Subhasis Das and Anindya Ghosh deals with this very practical spinning problem. Instead of asking only how a given cotton will perform, the paper asks a more useful industrial question: if a mill wants a certain yarn quality, what should be the ideal combination of cotton fibre properties?

Cotton Fibre Properties to Yarn Quality Prediction Model

Cotton fibre parameters influence yarn strength, elongation, unevenness and hairiness.

The Practical Problem

Cotton is a natural fibre, and its properties vary from lot to lot. Fibre strength, fibre length, short fibre content, fineness, elongation, and length uniformity all influence yarn behaviour. A cotton lot may have good strength but high short fibre content. Another may have better uniformity but lower elongation. Therefore, raw material selection is not a simple matter of choosing the “best” cotton in one parameter.

The real spinning challenge is to choose a balanced fibre profile that gives good yarn strength, acceptable elongation, lower unevenness, and lower hairiness. This is why the paper treats yarn quality as a multi-response optimisation problem rather than a single-property prediction problem.

Practical point: The best cotton for spinning is not necessarily the cotton with the highest strength or longest fibre. It is the cotton with the best combination of fibre properties for the required yarn quality.

Which Fibre Properties Were Considered?

The study used six cotton fibre parameters as input variables. These parameters are commonly important in spinning because they directly influence yarn strength, regularity, elongation, and surface appearance.

Fibre Parameter Meaning in Spinning
Fibre strength, FS Indicates how strong individual fibres are before breaking.
Fibre elongation, FE Shows how much the fibre can stretch before rupture.
Upper half mean length, UHML Represents the average length of the longer half of the fibres.
Uniformity index, UI Shows how uniform the fibre length distribution is.
Fibre fineness, FF Indicates fibre fineness, measured in micrograms per inch.
Short fibre content, SFC Represents the percentage of short fibres in the cotton lot.

Which Yarn Properties Were Optimised?

The paper does not optimise only yarn strength. This is important because a yarn can be strong but still poor in appearance or processing performance if it is uneven or hairy. The authors therefore considered four yarn quality responses together.

Yarn Property Desired Direction Why It Matters
Yarn strength Higher is better Improves performance during weaving, knitting, and end use.
Yarn elongation Higher is better Helps the yarn withstand tension and strain before breaking.
Yarn unevenness, U% Lower is better Improves fabric appearance and reduces thick-thin variation.
Hairiness index Lower is better Improves yarn surface quality and reduces pilling or processing issues.
\[ \text{Good Yarn Quality} = \text{High Strength} + \text{High Elongation} + \text{Low Unevenness} + \text{Low Hairiness} \]

Balanced Yarn Quality Optimisation for Strength Elongation Unevenness and Hairiness
Yarn optimisation is a balance between strength, elongation, evenness and low hairiness.

Why Raw Material Optimisation Is Difficult

In textile spinning, one fibre property may improve one yarn parameter but not another. For example, stronger fibres usually help yarn strength, but yarn unevenness and hairiness also depend on fibre length distribution, short fibre content, fibre fineness, and processing behaviour. A spinner therefore cannot optimise yarn quality by looking at one fibre property in isolation.

The practical task is not simply:

\[ \text{Choose the strongest cotton} \]

The real task is:

\[ \text{Choose the best combination of cotton fibre properties for balanced yarn quality} \]

The Three Methods Used in the Paper

The paper uses three methods, each serving a different purpose. One method predicts yarn quality, another searches for the best fibre combination, and the third converts multiple yarn quality targets into one combined score.

Method Role in the Study Simple Interpretation
Support Vector Regression, SVR Prediction engine Predicts yarn quality from cotton fibre properties.
Genetic Algorithm, GA Search engine Searches for the best combination of raw material parameters.
Desirability Function Scoring system Combines several yarn quality targets into one overall desirability score.


SVR Genetic Algorithm and Desirability Function Workflow for Yarn Optimisation
The model uses SVR for prediction, GA for searching, and desirability function for balancing multiple yarn targets.

Support Vector Regression: The Prediction Engine

Support Vector Regression, or SVR, is used to learn the relationship between cotton fibre properties and yarn properties. This relationship is not always linear. A small change in short fibre content or uniformity may influence yarn unevenness differently depending on the other fibre properties present in the mix.

\[ \text{Fibre Properties} \rightarrow \text{SVR Model} \rightarrow \text{Predicted Yarn Quality} \]

Genetic Algorithm: The Search Engine

The Genetic Algorithm, or GA, searches through many possible combinations of cotton fibre properties. It is inspired by the idea of natural selection. Better combinations are retained, modified, and recombined until the search moves towards an optimum solution.

For a spinning mill, this can be understood in a simple way. The algorithm tries many cotton combinations, predicts the yarn quality for each combination, keeps the better ones, modifies them, and gradually approaches a more desirable raw material profile.

Desirability Function: The Balancing System

A desirability function converts each yarn quality parameter into a score between 0 and 1. A score of 0 means completely undesirable, while a score of 1 means ideal. For yarn strength and elongation, higher values are more desirable. For unevenness and hairiness, lower values are more desirable.

\[ 0 = \text{Undesirable}, \qquad 1 = \text{Ideal} \]

Data Used in the Study

The study used data from 40 cotton fibre types and their corresponding 20s Ne carded cotton yarns produced by ring spinning. Out of these, 32 datasets were used for training the SVR model, and 8 datasets were used for testing the model.

This detail is important because the findings should be understood in the context of 20s Ne carded cotton yarn. The same model should not be blindly applied to combed yarn, compact yarn, rotor yarn, finer counts, coarser counts, or different spinning conditions without recalibration.

How Accurate Was the Prediction?

The SVR model showed reasonably good prediction accuracy. The reported testing error values were low enough to suggest that the model can be useful for industrial decision-making.

Yarn Property Testing Mean Error
Strength 3.15%
Elongation 4.37%
Unevenness 6.37%
Hairiness 4.33%

Optimum Cotton Fibre Properties Suggested by the Model

The model suggested an optimum fibre property combination for achieving the desired yarn quality. These values represent the cotton fibre profile that the model found most suitable within the dataset and target conditions of the study.

Fibre Property Optimised Value
Fibre strength, FS 31.51 cN/tex
Fibre elongation, FE 6.83%
Upper half mean length, UHML 1.00 inch
Uniformity index, UI 82.84
Fibre fineness, FF 4.02 µg/in
Short fibre content, SFC 5.63%

Target Yarn Quality and Model-Obtained Quality

The model attempted to reach target values for strength, elongation, unevenness, and hairiness. The obtained values were close to the targets, showing that the optimisation approach was effective.

Yarn Property Target Value Model-Obtained Value
Strength 16.50 cN/tex 16.17 cN/tex
Elongation 6.00% 5.90%
Unevenness, U% 11.00 11.51
Hairiness index 4.80 4.83
\[ \text{Overall Desirability} = 0.9291 \]

Practical Interpretation for Spinning Mills

This paper is essentially about scientific raw material selection. In many mills, cotton selection depends on a mixture of test results, experience, availability, price, and the spinner’s judgement. That experience is valuable, but it can be strengthened by predictive modelling.

\[ \text{Cotton Fibre Data} \rightarrow \text{Predicted Yarn Quality} \rightarrow \text{Better Raw Material Selection} \]

The real value is that the model does not chase one yarn property alone. It balances multiple yarn requirements together. This is closer to actual spinning practice, where the yarn must not only be strong, but also reasonably even, less hairy, and sufficiently extensible.

Why This Matters

For a spinning mill, this type of model can help in selecting cotton lots before mixing, deciding which fibre parameters matter most for a target yarn count, reducing trial-and-error in bale selection, improving consistency in yarn quality, and linking raw material purchase decisions with final yarn performance.

It also supports a more data-driven approach to spinning. Instead of treating raw material purchase and yarn quality control as separate activities, the model connects them. This is important because yarn quality problems often begin at the raw material stage, even though they may become visible only later during spinning, weaving, knitting, or fabric inspection.

Important Limitation

The model was developed for 20s Ne carded cotton yarn produced through ring spinning, using a dataset of 40 fibre types. Therefore, it should not be treated as a universal formula for all yarns. For combed yarn, compact yarn, rotor yarn, finer counts, coarser counts, different machines, or different process settings, the model would need fresh data and recalibration.

Simple Conclusion

The paper shows that good yarn quality begins with the right fibre-property combination. The strongest cotton or the longest cotton may not always produce the most balanced yarn. What matters is the combined effect of fibre strength, elongation, length, uniformity, fineness, and short fibre content.

The main contribution of the paper is a hybrid optimisation model that combines SVR for prediction, GA for searching the best fibre combination, and desirability function for balancing multiple yarn quality targets. This makes raw material selection more scientific, measurable, and useful for modern spinning mills.

General Disclaimer

This article is for educational and general textile knowledge purposes only. The actual yarn quality obtained in a spinning mill depends on cotton variety, bale management, mixing strategy, blow room settings, carding efficiency, draw frame performance, roving quality, ring frame conditions, twist level, humidity, machine maintenance, and testing methods. Mills should conduct their own trials and data validation before applying any predictive model to commercial production.

Direct Dyeing vs Reactive Dyeing: A Technical, Economic and Ecological Comparison



Direct Dyeing vs Reactive Dyeing: A Technical, Economic and Ecological Comparison

In cotton dyeing, reactive dyes have almost become the default choice, especially when good wash fastness and bright shades are required. However, a recent paper in the Indian Journal of Fibre & Textile Research "Comparison of direct and reactive dyeing in terms of technical, economic and ecological perspectives” by Riza Atav, F. Nilay Kuğu, Dilşad Kara, and İlkay Gökçe,raises a very practical question: for light and medium cotton shades, do we always need reactive dyes, or can direct dyes sometimes give acceptable performance with lower cost and lower environmental impact?

This question is important because dyeing is not only a colouration process. It is also a cost centre, a water-consuming process, and a source of chemical load in textile effluent. A dyeing method should therefore be judged not only by shade and fastness, but also by its consumption of salt, alkali, water, energy, auxiliaries, and wastewater treatment capacity.

The Core Difference Between Direct and Reactive Dyes

Reactive dyes are generally preferred for cotton because they form stronger chemical bonds with cellulose. This gives them better wet fastness, especially in darker shades and products that undergo frequent washing. However, reactive dyeing usually requires salt, alkali, soaping, neutralisation, and repeated rinsing. The paper notes that reactive dyeing commonly requires high salt levels, around \(50 - 100 \, \text{g/L}\), because reactive dyes have relatively low affinity for cotton before fixation.

Direct dyes behave differently. They do not form covalent bonds with cotton. Instead, they attach mainly through secondary forces and hydrogen bonding. Because of this, their wet fastness is usually weaker than reactive dyes, particularly in dark shades. But direct dyes may need less salt, little or no alkali, and fewer washing-off steps. This makes them interesting for light and medium shades where extreme wet fastness may not be necessary.

Practical point: The question is not whether direct dyes are universally better than reactive dyes. The real question is whether reactive dyes are always necessary, especially for light cotton shades where direct dyes may perform adequately.

What the Study Tested

The study dyed 100% cotton single jersey fabric with yellow, red, and blue direct dyes at four different depths:

\[ 0.5\%, \quad 1\%, \quad 2\%, \quad 3\% \]

The researchers then evaluated colour yield and fastness. In the next stage, they selected the fabric dyed with 1% direct dye as the reference shade and tried to match the same colour using reactive dyes. This allowed them to compare both dye classes under similar shade conditions.

The comparison was made from three perspectives: technical, economic, and ecological. This makes the study especially useful for industry because a dyeing decision in a mill is rarely based on colour alone. It must also consider cost, time, effluent, and product requirement.

1. Technical Comparison: Shade and Fastness

The study found that colours obtained with direct and reactive dyes were visually quite similar. The authors clarify that the aim was not to produce an exact laboratory shade match, but to compare technically comparable colours obtained by both dye classes.

For 1% light shades, direct-dyed samples performed well. The paper indicates that for such light colours, direct dyes can be used without creating major fastness problems. In some cases, perspiration fastness may even be better with direct dyes.

However, the conclusion is cautious. Direct dyes cannot universally replace reactive dyes. For dark shades, strict fastness requirements, repeated laundering, or very vivid shades, reactive dyes remain the safer and more reliable option.

Shade or Requirement More Suitable Dyeing Choice
Light cotton shades Direct dyes may be suitable
Medium cotton shades Direct dyes may be considered after testing
Dark shades Reactive dyes are safer
High wet-fastness requirement Reactive dyes are safer
Very bright or vivid colours Reactive dyes may be better

2. Economic Comparison: Direct Dyeing Was Cheaper

One of the strongest findings of the paper is the cost difference. For similar colours, direct dyeing had a much lower total cost per kilogram of fabric compared with reactive dyeing.

Colour Direct Dyeing Cost Reactive Dyeing Cost
Yellow $1.8 per kg fabric $3.2 per kg fabric
Red $1.8 per kg fabric $3.1 per kg fabric
Blue $1.8 per kg fabric $6.2 per kg fabric

Reactive dyeing was more expensive because it required larger quantities of auxiliaries such as salt, soda ash, washing agent, and acetic acid. It also required more rinsing steps. According to the paper, direct dyeing needed only 2 rinsing steps, while reactive dyeing required at least 5 rinsing steps.

This means that the savings are not limited to dye and chemical cost. Direct dyeing can also reduce water consumption, electricity consumption, steam usage, machine occupancy time, and effluent treatment load. The paper reports that total dyeing costs were approximately 40–70% lower for direct dyeing compared with reactive dyeing.

The cost comparison can be understood in a simple way:

\[ \text{Dyeing Cost} = \text{Dye Cost} + \text{Auxiliary Cost} + \text{Water} + \text{Energy} + \text{Processing Time} \]

When reactive dyeing requires more salt, alkali, washing, neutralisation, and rinsing, all these components increase. Therefore, even if the dye price itself is not the only issue, the total process cost becomes higher.

3. Ecological Comparison: Lower Wastewater Load in Direct Dyeing

The ecological comparison is equally important. For red dyeing wastewater, the study reported much higher COD and BOD values for reactive dyeing than for direct dyeing.

Wastewater Parameter Direct Dyeing Reactive Dyeing
COD 481 mg O2/L 1469 mg O2/L
BOD 175 mg/L 530 mg/L
pH 8.91 10.46

COD, or Chemical Oxygen Demand, indicates the amount of oxygen required to chemically oxidise organic matter in wastewater. BOD, or Biological Oxygen Demand, indicates the oxygen required by microorganisms to biologically degrade organic matter. Higher COD and BOD values generally mean a higher pollution load and a greater burden on effluent treatment systems.

Reactive dyeing produced higher COD and BOD because the same colour required a higher percentage of reactive dye, around 2–2.5%, while only 1% direct dye was needed for the reference shade. In addition, reactive dyeing also involved more chemicals and auxiliaries, contributing to greater wastewater load.

The pH difference is also significant. Reactive dyeing wastewater was more alkaline because reactive dyeing requires alkali for fixation. A pH value above about 9.5 can be unsuitable for many aquatic organisms and usually requires neutralisation before discharge or biological treatment.

Ecological message: A dyeing process with fewer chemicals, fewer rinses, lower COD, lower BOD, and lower alkalinity is easier to manage from an effluent treatment point of view.

The Main Conclusion of the Paper

The main conclusion is balanced and practical. The paper does not claim that direct dyes are better than reactive dyes in all situations. Instead, it suggests that direct dyes can be a technically acceptable, cheaper, and more ecological alternative for light cotton shades.

For darker shades, high fastness requirements, and brilliant colours, reactive dyes are still more suitable. But for light shades where the required performance level can be achieved with direct dyes, it may not be necessary to use a more chemical-intensive reactive dyeing route.

The decision can be expressed as:

\[ \text{Best Dyeing Choice} = \text{Required Performance} + \text{Minimum Environmental and Economic Burden} \]

This is a very important sustainability principle. The most sustainable process is not always the most technologically powerful process. It is the process that delivers the required performance with the least unnecessary consumption of resources.

Why This Matters for Textile Mills

In many mills, reactive dyeing is used almost automatically for cotton. This paper encourages mills to think shade-wise and requirement-wise. Instead of assuming that every cotton shade needs reactive dyeing, the mill can ask whether direct dyeing will meet the actual product requirement.

For example, a pale yellow, light red, or soft blue cotton knit may not need the same dyeing route as a dark navy, black, maroon, or high-fastness export shade. If direct dyeing gives acceptable fastness for the intended use, it can reduce cost and environmental burden.

This approach is especially useful for product categories where shades are light, wash requirements are moderate, and cost sensitivity is high. It can also help mills reduce salt load, alkali usage, water consumption, and effluent treatment pressure.

Practical Takeaway

The paper gives a simple but powerful message: do not choose the strongest dyeing system by default. Choose the dyeing system that is sufficient for the product requirement. Reactive dyes should be used where their superior bonding and fastness are necessary. Direct dyes should be considered where they can meet the performance requirement with lower cost and lower ecological load.

In other words:

\[ \text{Use reactive dyes where performance demands it. Use direct dyes where performance allows it.} \]

This is not a compromise in quality. It is intelligent process selection. For sustainable textile processing, the future may not lie only in new chemicals and new machines, but also in smarter decisions about when to use existing technologies.

General Disclaimer

This article is for educational and general textile knowledge purposes only. Dyeing performance depends on fibre quality, fabric construction, dye class, dye brand, shade depth, recipe, machine type, water quality, after-treatment, testing method, and end-use requirements. Mills should conduct their own laboratory and bulk trials before replacing one dyeing method with another in commercial production.

Buy my books at Amazon.com

Can Perfume Damage Silk Sarees?



Can Perfume Damage Silk Fabric? A Study on Mechanical and Colour Properties of Silk

Silk is one of the most luxurious textile fibres. It is used in sarees, dresses, scarves, blouses and occasion-wear garments where appearance, lustre and colour are extremely important. At the same time, silk is also delicate. It needs careful handling during washing, dry cleaning, pressing, storage and wearing.

One common care instruction given for silk garments is: do not spray perfume or deodorant directly on silk fabric. Many consumers hear this advice, but the reason is not always clear. Does perfume weaken silk? Does it stain the fabric? Does it change the colour? Does it affect only light shades or also dark shades?

A research article titled “Study on the Effects of Perfume on the Mechanical and Colour Properties of Silk Fabrics” by Kavitha Krishnamoorthi and Srinivasan Jagannathan tried to answer this question scientifically. The study examined what happens when perfume is sprayed directly on dyed silk fabrics.

Why This Question Matters

Perfume is normally meant to be applied to the skin. However, many people spray perfume on clothes, either because they want the fragrance to last longer or because they feel perfume may irritate the skin. This practice is especially common during weddings, parties, festivals and formal occasions, where silk garments are also frequently worn.

This creates a practical problem. Silk garments are expensive, and even a small stain, shade change or colour bleeding mark can spoil the appearance of the fabric. Therefore, understanding the interaction between perfume and silk is important not only for textile researchers but also for consumers, retailers, merchandisers, dry cleaners and care-label writers.

What Was Tested in the Study?

The researchers used 100% mulberry silk plain-weave fabrics. The fabrics were dyed with acid dyes in three shade depths:

Shade Category Colour Used Importance
Dark shade Red Useful for studying high dye concentration and possible staining
Medium shade Pink Useful for studying moderate colour change
Light shade Sandal Useful for studying yellowing and visible shade shift

The perfume selected was an eau de parfum, which generally contains a higher concentration of aromatic compounds than lighter fragrance products such as eau de cologne or body splash. The perfume contained alcohol and several fragrance-related ingredients such as benzyl salicylate, citronellol, eugenol, linalool, benzyl alcohol, benzyl benzoate and others.

The perfume was sprayed on the silk fabric in a controlled manner. A fixed quantity of perfume was applied, and the spray distance was maintained at approximately 15 cm. This was done to simulate a practical consumer-use condition while keeping the laboratory method consistent.

Perfume spraying directly on silk fabric from a fixed distance

Visual 1: Perfume spray application on silk fabric from a fixed distance.

The Main Tests Conducted

The study examined two broad types of properties: mechanical properties and colour properties. Mechanical properties tell us whether the fabric becomes physically weaker or more prone to wear. Colour properties tell us whether the shade changes, bleeds, stains adjacent fabric or transfers during rubbing.

Property Group Tests Conducted Purpose
Mechanical properties Tensile strength, elongation, abrasion resistance, pilling resistance To check whether perfume weakens or damages the physical structure of silk
Colour properties Washing fastness, dry-cleaning fastness, perspiration fastness, rubbing fastness To check whether perfume causes shade change, staining or colour transfer
Chemical structure FTIR spectroscopy To check whether perfume changes the chemical structure of silk fibroin

Understanding Colour Difference: What is \( \Delta E \)?

The study measured colour change using a spectrophotometer. The colour difference was expressed as \( \Delta E \). In simple terms, \( \Delta E \) tells us how different the tested fabric looks compared to the original fabric.

\[ \Delta E = \sqrt{(\Delta L)^2 + (\Delta a)^2 + (\Delta b)^2} \]

Here, \( L \) represents lightness, \( a \) represents the red-green direction, and \( b \) represents the yellow-blue direction. A higher \( \Delta E \) value means greater colour difference. When \( \Delta E \) is low, the colour difference may not be easily visible. When it is high, the change becomes noticeable or even unacceptable.

Effect on Tensile Strength

The tensile strength of silk fabric showed only a slight reduction after perfume application. This was observed in both warp and weft directions. However, the researchers concluded that this reduction was not statistically significant.

This means that perfume did not seriously weaken the silk fabric in terms of breaking strength. The core fibre structure of silk remained largely intact. Therefore, the main problem with perfume is not that it immediately makes silk tear or break.

Practical meaning: Spraying perfume on silk may not immediately reduce the fabric’s strength in a major way, but that does not mean it is safe. The bigger risk lies in surface damage, abrasion and colour change.

Effect on Elongation

Elongation refers to how much a fabric can stretch before it breaks. The study found a slight reduction in elongation after perfume application. This indicates a small loss in flexibility or extension behaviour, but the effect was not the most serious result of the study.

In practical garment use, this slight change may not be immediately visible to the wearer. However, when combined with repeated wear, perspiration, rubbing and cleaning, even small changes may contribute to long-term deterioration of delicate silk garments.

Effect on Abrasion Resistance

Abrasion resistance was one of the more important findings. Silk naturally has only fair abrasion resistance. In the study, perfume-treated silk samples showed higher weight loss after abrasion cycles compared to untreated samples.

This suggests that perfume affected the surface behaviour of silk. The alcohol and other perfume constituents may have changed the surface energy or surface condition of the fibre. As a result, the fabric became more vulnerable to rubbing wear.

Comparison of untreated silk and perfume-treated silk showing abrasion damage

Visual 2: Comparison of untreated and perfume-treated silk after abrasion.
Practical meaning: Perfume may make the surface of silk more prone to wear, especially in areas exposed to rubbing such as blouse underarms, shoulder areas, pleats, folds and pallu edges.

Effect on Pilling

The study found that perfume did not have a significant influence on pilling. This is understandable because silk is a filament fibre and generally pills less than many staple-fibre fabrics. The pilling grade remained almost the same for fabrics with and without perfume.

Therefore, pilling is not the main concern when perfume is sprayed on silk. The more serious concerns are abrasion, colour change, staining and rubbing transfer.

Effect on Washing Fastness

The washing fastness results are highly important. After washing, perfume-treated silk samples showed increased colour difference. This means that perfume made the colour more unstable during washing.

The red and pink shades showed higher colour change. The sandal shade also showed colour shift, although its visual behaviour was different because lighter shades can show yellowing or dullness more easily.

In the washing test, adjacent multifibre fabrics were also used. This helps to observe whether colour from the silk transfers to other fibres. The red shade showed more staining, especially on fibres such as wool, nylon and cotton. This is important because wool and nylon have affinity for acid dyes, while cotton may show uneven staining.

Practical meaning: Dark acid-dyed silk sprayed with perfume may show greater colour bleeding or staining during washing. This is especially risky for contrast borders, linings, embroidered areas or garments worn with other light-coloured fabrics.

Effect on Dry-Cleaning Fastness

The dry-cleaning results were better than the washing results. The colour difference values after dry cleaning were generally low or moderate. However, perfume still caused a slight increase in colour change.

This supports the common recommendation that silk should preferably be dry cleaned or very carefully hand washed, depending on the fabric, dye, construction and care label. Water washing creates a greater risk of colour disturbance, especially when perfume and perspiration are already present on the fabric.

Effect on Perspiration Fastness

The study also tested colour fastness to acidic and alkaline perspiration. This is very relevant because silk garments are often worn close to the body, and perfume usually comes into contact with sweat during actual wear.

The results showed that perfume-treated samples had slightly higher colour change in perspiration conditions. The red shade showed the most serious staining behaviour, while pink and sandal showed comparatively lower staining. The sandal shade showed yellowing, which may be linked to alcohol and perfume ingredients.

The effect was especially important under alkaline perspiration conditions. The authors suggested that acid dyes may be affected under alkaline conditions, and ethanol present in perfume may contribute to weakening the dye-fibre fastness.

Perfume and perspiration interaction causing colour change on dyed silk

Visual 3: Interaction of perfume, perspiration and acid dye on silk fabric.
Practical meaning: Perfume plus perspiration is a risky combination for dyed silk. Areas near the neck, underarm, blouse contact points and pallu areas may be more vulnerable to colour change and staining.

Effect on Rubbing Fastness

In rubbing or crocking tests, the red shade transferred colour to the rubbing cloth in both dry and wet conditions. Pink fabric treated with perfume showed slightly increased colour transfer. Sandal fabric did not show much colour transfer, but it appeared yellowish due to perfume staining.

This shows that dark shades are more vulnerable to visible colour transfer, while light shades may be more vulnerable to yellowing or local staining.

Did Perfume Chemically Damage Silk?

FTIR spectroscopy was used to check whether perfume changed the chemical structure of silk fibroin. The FTIR spectra of silk fabrics with and without perfume were found to be broadly similar. Some peaks shifted slightly, but these changes remained within the same functional-group range.

This means that the small quantity of perfume used in the study did not create major chemical structural damage to silk fibroin. The volatile nature of perfume may also have limited deeper chemical alteration.

Important conclusion: Perfume does not appear to seriously change the chemical structure of silk, but it can still affect colour fastness, staining behaviour and abrasion resistance.

What the Study Finally Concludes

The study concludes that perfume has limited effect on the core mechanical strength and chemical structure of silk. However, it has a clearer negative effect on colour-related properties and abrasion behaviour.

Property Effect of Perfume Severity
Tensile strength Slight reduction, not statistically significant Low
Elongation Slight reduction Low to moderate
Abrasion resistance Higher weight loss after abrasion Moderate to high
Pilling No major effect Low
Washing fastness Increased colour change and staining High
Dry-cleaning fastness Slight increase in colour change Low to moderate
Perspiration fastness Colour change and staining, especially in red shade Moderate to high
Rubbing fastness Colour transfer in dark shades; yellowing in light shade Moderate
Chemical structure No major structural change observed by FTIR Low

What This Means for Silk Sarees

For silk sarees, this study gives scientific support to a very practical care instruction: avoid spraying perfume directly on silk. The risk is not merely a visible wet patch. The perfume may disturb the dye, increase colour change during cleaning, worsen staining in perspiration conditions and make the fabric surface more vulnerable to abrasion.

This is especially important for dark-coloured silk sarees, acid-dyed silk fabrics, contrast borders, designer blouses, embroidered silk garments and party-wear silk outfits. Red and other deep shades may show more staining, while light shades may show yellowing or dull patches.

Practical Care Advice for Consumers

The safest method is to apply perfume on the body before wearing the silk garment and allow it to dry completely. Perfume should not be sprayed directly on silk sarees, silk blouses, silk scarves or silk dresses. If fragrance is necessary, it should be applied to areas where it will not directly touch the fabric.

If perfume accidentally falls on silk, the fabric should not be rubbed aggressively. Rubbing may worsen staining or abrasion. It is better to blot gently with a clean absorbent cloth and then consult a professional dry cleaner, especially for expensive or dark-coloured silk garments.

Simple rule: Perfume belongs on the body, not on silk. Let the perfume dry before wearing the garment.

Final Takeaway

The study shows that perfume does not drastically destroy silk fibre strength, but it can damage the appearance of dyed silk. In luxury textiles, appearance is everything. A silk saree may remain physically strong, yet still become unacceptable if the shade changes, stains appear, or colour transfers during washing and perspiration.

Therefore, the traditional advice is correct: do not spray perfume directly on silk fabric. It is a small precaution that can protect the beauty, colour and surface quality of silk garments for a much longer time.

General Disclaimer

This article is written for general textile education and consumer awareness. Actual performance of silk fabric may vary depending on fibre quality, dye class, shade depth, finishing treatment, perfume composition, quantity sprayed, perspiration condition, washing method and dry-cleaning process. For expensive silk garments, always follow the care label and consult a qualified textile testing laboratory or professional dry cleaner before attempting any treatment.

Buy my books at Amazon.com

Total Pageviews