<commit_before># coding=utf-8

# ==============================================================================

"""
DESCRIPCION:
    Dada una carpeta con imagenes, divide la carpeta en 2 carpetas con imagenes, una para validation y otra para train.

ENTRADA:
    La carpata debe tener la siguiente estructura:

          data_dir/label_0/image0.jpeg
          data_dir/label_0/image1.jpg
          ...
          data_dir/label_1/image0.jpeg
          data_dir/label_1/image1.jpeg

SALIDA:
    Al finalizar el proceso quedan las imagenes ordenadas de la siguiente manera:

          data_dir/train/label_0/image0.jpeg
          data_dir/train/label_0/image3.jpg
          ...
          data_dir/train/label_1/image1jpeg
          data_dir/train/label_1/image2.jpeg

          ...

          data_dir/validation/label_0/image1.jpeg
          data_dir/validation/label_0/image2.jpg
          ...
          data_dir/validation/label_1/image0.jpeg
          data_dir/validation/label_1/image3.jpg

    Ademas genera el archivo con los label en:

          data_dir/labels.txt

"""

# ==============================================================================

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import tensorflow as tf
import os
import os.path
import glob
import shutil
from random import shuffle

# ==============================================================================

tf.app.flags.DEFINE_string('porcentaje_img_validation', 40, 'Porcentaje de imagenes que van al set de validation')
tf.app.flags.DEFINE_string('data_dir', '../imagenes_jpg/', 'Directorio con las imagenes')
tf.app.flags.DEFINE_string('train_folder', 'train', 'Directorio con las imagenes de entrenamiento')
tf.app.flags.DEFINE_string('validation_folder', 'validation', 'Directorio con las imagenes de validation')
tf.app.flags.DEFINE_string('test_folder', 'test', 'Directorio con las imagenes de test')
tf.app.flags.DEFINE_string('labels_file_name', 'labels.txt', 'Labels file')
tf.app.flags.DEFINE_string('data_split_dir', '../split_jpg/', 'Directorio donde estan las imagenes divididas a utilizar')

capturasEntrenamiento = ["A", "B"]
capturasTest = ["C"]

FLAGS = tf.app.flags.FLAGS

# ==============================================================================


def dividir_set(carpeta_raiz, subcarpeta, carpeta_train, carpata_validation, carpeta_test, porcentaje_img_validation):

    for captura in capturasEntrenamiento:
        # Listamos las imagenes
        imagenes = glob.glob(carpeta_raiz + subcarpeta + "/" + subcarpeta + captura + '*.jpg')

        # Mesclamos aleatoriamente las imagenes
        shuffle(imagenes)

        # Calculamos la cantidad de imagenes de cada set
        cantidadTotalImagenes = len(imagenes)
        cantidadImagenesValidation = int(cantidadTotalImagenes * porcentaje_img_validation / 100)
        cantidadImagenesTrain = cantidadTotalImagenes - cantidadImagenesValidation

        imagenesTrain = imagenes[0:cantidadImagenesTrain]
        imagenesValidation = imagenes[cantidadImagenesTrain:cantidadTotalImagenes]

        for imagen in imagenesTrain:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name, FLAGS.data_split_dir + carpeta_train + "/" + subcarpeta + "/" + name)

        for imagen in imagenesValidation:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name, FLAGS.data_split_dir + carpata_validation + "/" + subcarpeta + "/" + name)

    for captura in capturasTest:
        # Listamos las imagenes
        imagenes = glob.glob(carpeta_raiz + subcarpeta + "/" + subcarpeta + captura + '*.jpg')
        for imagen in imagenes:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name,
                        FLAGS.data_split_dir + carpeta_test + "/" + subcarpeta + "/" + name)

def obtenerSubCarpetas(carpeta):
    subcarpetas = [d for d in os.listdir(carpeta) if os.path.isdir(os.path.join(carpeta, d))]
    return subcarpetas


def main(unused_argv):
    print('Dividiendo set de imagenes de: %s' % FLAGS.data_dir)

    shutil.rmtree(FLAGS.data_split_dir)
    # creamos el directorio de split si no existe
    if not os.path.exists(FLAGS.data_split_dir):<commit_msg>agrego division de set de test<commit_after># coding=utf-8

# ==============================================================================

"""
DESCRIPCION:
    Dada una carpeta con imagenes, divide la carpeta en 2 carpetas con imagenes, una para validation y otra para train.

ENTRADA:
    La carpata debe tener la siguiente estructura:

          data_dir/label_0/image0.jpeg
          data_dir/label_0/image1.jpg
          ...
          data_dir/label_1/image0.jpeg
          data_dir/label_1/image1.jpeg

SALIDA:
    Al finalizar el proceso quedan las imagenes ordenadas de la siguiente manera:

          data_dir/train/label_0/image0.jpeg
          data_dir/train/label_0/image3.jpg
          ...
          data_dir/train/label_1/image1jpeg
          data_dir/train/label_1/image2.jpeg

          ...

          data_dir/validation/label_0/image1.jpeg
          data_dir/validation/label_0/image2.jpg
          ...
          data_dir/validation/label_1/image0.jpeg
          data_dir/validation/label_1/image3.jpg

    Ademas genera el archivo con los label en:

          data_dir/labels.txt

"""

# ==============================================================================

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import tensorflow as tf
import os
import os.path
import glob
import shutil
from random import shuffle

# ==============================================================================

tf.app.flags.DEFINE_string('porcentaje_img_validation', 40, 'Porcentaje de imagenes que van al set de validation')
tf.app.flags.DEFINE_string('data_dir', '../imagenes_jpg/', 'Directorio con las imagenes')
tf.app.flags.DEFINE_string('train_folder', 'train', 'Directorio con las imagenes de entrenamiento')
tf.app.flags.DEFINE_string('validation_folder', 'validation', 'Directorio con las imagenes de validation')
tf.app.flags.DEFINE_string('test_folder', 'test', 'Directorio con las imagenes de test')
tf.app.flags.DEFINE_string('labels_file_name', 'labels.txt', 'Labels file')
tf.app.flags.DEFINE_string('data_split_dir', '../split_jpg/', 'Directorio donde estan las imagenes divididas a utilizar')

capturasEntrenamiento = ["A", "B"]
capturasTest = ["C"]

FLAGS = tf.app.flags.FLAGS

# ==============================================================================


def dividir_set(carpeta_raiz, subcarpeta, carpeta_train, carpata_validation, carpeta_test, porcentaje_img_validation):

    for captura in capturasEntrenamiento:
        # Listamos las imagenes
        imagenes = glob.glob(carpeta_raiz + subcarpeta + "/" + subcarpeta + captura + '*.jpg')

        # Mesclamos aleatoriamente las imagenes
        shuffle(imagenes)

        # Calculamos la cantidad de imagenes de cada set
        cantidadTotalImagenes = len(imagenes)
        cantidadImagenesValidation = int(cantidadTotalImagenes * porcentaje_img_validation / 100)
        cantidadImagenesTrain = cantidadTotalImagenes - cantidadImagenesValidation

        imagenesTrain = imagenes[0:cantidadImagenesTrain]
        imagenesValidation = imagenes[cantidadImagenesTrain:cantidadTotalImagenes]

        for imagen in imagenesTrain:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name, FLAGS.data_split_dir + carpeta_train + "/" + subcarpeta + "/" + name)

        for imagen in imagenesValidation:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name, FLAGS.data_split_dir + carpata_validation + "/" + subcarpeta + "/" + name)

    for captura in capturasTest:
        # Listamos las imagenes
        imagenes = glob.glob(carpeta_raiz + subcarpeta + "/" + subcarpeta + captura + '*.jpg')
        for imagen in imagenes:
            name = os.path.basename(imagen)
            shutil.copy(carpeta_raiz + subcarpeta + "/" + name,
                        FLAGS.data_split_dir + carpeta_test + "/" + subcarpeta + "/" + name)

def obtenerSubCarpetas(carpeta):
    subcarpetas = [d for d in os.listdir(carpeta) if os.path.isdir(os.path.join(carpeta, d))]
    return subcarpetas


def main(unused_argv):
    print('Dividiendo set de imagenes de: %s' % FLAGS.data_dir)

    if os.path.exists(FLAGS.data_split_dir):
        shutil.rmtree(FLAGS.data_split_dir)
    if not os.path.exists(FLAGS.data_split_dir):
{'fraction_non_alphanumeric': 0.1615313865256381, 'fraction_numerical': 0.0073580133363991725, 'mean_word_length': 3.484020618556701, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1057075', 'n_tokens_mistral': 2812, 'n_tokens_neox': 2665, 'n_words': 572}