    

 ## On this page

  

 

 # Data and Filters 

 Last update: 16.07.2025 

Deactivate designs, remove individual data objects from analysis and data object filters.

-- load example data:

sdbfile = sos.currentScriptPath() .. "/../lsdyna/metal_forming__eroded_elements/sos_demo.sdb"

local settings = sos.LoadDataBaseSettings(sdbfile);

sos.loadDataBase(sos.database(), settings);





-- "deactivate" an individual field object sample :

-- The object is still in the database, but is excluded from future statistical analysis.

key = sos.DataObjectKey("8", "pstrain");

object = sos.database():data():find(key);

if (object:isValid()) then

 object:setInactive();

end



-- remove an individual field object sample from database

key = sos.DataObjectKey("2", "thickness");

if (sos.database():data():exists(key)) then

 sos.database():data():erase(key);

end



-- when changing any data we often are interested to deactivate all incomplete designs to get a consistent database

sos.database():deactivateIncompleteDesigns();





-- How to use filters ???

-- #######################



print("\nData contained in database:")

print(sos.database():data())

local all_element_objects = sos.database():data():filterType(sos.ELEMENT_DATA) -- all data of type ELEMENT



pstrain_filter = all_element_objects:filterQuantity("pstrain") -- all element data with quantity ident "pstrain"

print("Active pstrain objects:");

print(pstrain_filter:samples():active())

print("Inactive pstrain objects:");

print(pstrain_filter:samples():inactive())

print("Pstrain results:");

print(pstrain_filter:nonSamples())

-- There exist multiple filters, like: nonSamples, samples, active, inactive, inputs, responses, fromFile, notFromFile, filterDesign etc.

-- You ca combine filters using operators + (union), * (intersection), / (difference)



pstrain_similar_filter = all_element_objects:filterQuantity(".*(pstrain).*", true) -- use a regular expression

-- print the quantity names (pstrain and random[pstrain])

quantities = pstrain_similar_filter:quantities()

print("Quantities in regex filter: ", quantities:size())

for i=0,quantities:size()-1 do

 print("\t#"..i, quantities[i]);

end

-- get all samples of quantity random[pstrain] using filter operations:

rand_samples_filter = (pstrain_similar_filter / pstrain_filter) : samples();

print("Samples of random[pstrain]");

print(rand_samples_filter)



-- now deactivate ALL designs in that filter:

id_q = rand_samples_filter:quantityIdents()

id_d = rand_samples_filter:designIdents()

for i=0,id_q:size()-1 do

 sos.database():data():find( sos.DataObjectKey(id_d[i], id_q[i]) ):setInactive(sos.database())

end



print("Samples of random[pstrain] after deactivation:");

print(rand_samples_filter)