Hola:
Con respecto a la clase.... es:
cientifico.className... no es necesario usar setAttribute cuando los atributos son normales...
Otra cosa que veo es que insertas el mismo objeto en dos momentos y con distinto método:
fi.appendChild(contenedor);
fi.insertBefore(contenedor,obj);
Hay ocasiones que se debe condicionar el uso de uno u otro método, pero nunca usar los 2 a la vez
Saludos