/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); Europa y EEUU lanzan una colosal carrera para apoderarse de los secretos del cerebroSesiónDeControl.com
Arrow

Quieren conocer tu cerebro


0
Materia

Este artículo ha sido escrito en Materia, web de noticias de ciencia, tecnología, salud y medio ambiente, que comparte su contenido para ser republicado.


Escrito el 12 de marzo de 2013 a las 9:46 | Clasificado en Ciencia

Dos proyectos en competición se gastarán más de 3.000 millones de euros en la próxima década para entender, controlar y reproducir los mecanismos del cerebro humano. Ambas iniciativas están dirigidas por neurocientíficos españoles

Recreación de un entramado neuronal. (Wellcome Images)
Recreación de un entramado neuronal. (Wellcome Images)

Esta es la década de la neurociencia, ya no cabe ninguna duda. Hasta hace unos meses se podía suponer, porque el conocimiento del cerebro se ha convertido en esa “última frontera” de la que se suele hablar a menudo en las noticias científicas. Pero de pronto, la materia gris se ha colocado a comienzos de 2013 en el eje principal de la política científica mundial. EEUU y la Unión Europea quieren poner su bandera en el primer mapa del cerebro, ser los primeros en desentrañar sus secretos, ganar el dinero y el prestigio de los grandes descubrimientos. La carrera está lanzada, durará más de una década y los dos competidores cuentan con carísimos bólidos: 2.300 millones de euros invertirá Washington y más de 1.000 se pondrán en Bruselas.

“Ahora es el momento de alcanzar un nivel de investigación y desarrollo sin precedentes desde la carrera espacial”, dijo el presidente de EEUU, Barack Obama, el pasado 12 de febrero, nada menos que en su Discurso del Estado de la Unión. Se refería a realizar una inversión descomunal para descifrar las claves del cerebro que ayude a poner coto a enfermedades mentales. Inmediatamente después, Rafael Yuste, tuiteaba: “Obama menciona la necesidad de hacer un mapa del cerebro en su discurso!!”. Solo recibió ocho retuits, pero su trascendencia es fundamental. Yuste, neurocientífico madrileño, lidera este proyecto, denominado The Brain Activity Map (BAM), y que hoy describe junto a sus colegas en un artículo de la revista Science.

“Es imparable”, asegura Yuste a Materia, “pero el tamaño del proyecto y su organización no está decidido todavía. Ya no depende de nosotros. El grupo de científicos que lo propusimos hemos pasado el testigo a la administración pública de la ciencia y a las fundaciones privadas para que lo dirijan”. Este neurocientífico, que lleva 16 años en la universidad neoyorquina de Columbia, cuenta que llevan algo más de un año lidiando con la Casa Blanca para que amparen el proyecto. Una especie de artículo fundacional en la revista Neuron dio el pistoletazo de salida a su proyecto, que se ha marcado metas de 15 años pero “durará más seguro”, augura Yuste, considerado uno de los cinco científicos a seguir en 2013 por Nature.

El equipo europeo lleva más de un año de ventaja al estadounidense en los preparativos. Pero, casualmente, ha recibido el cheque a la vez. El 21 de enero,Materia adelantaba que la Comisión Europea decidía respaldar el Human Brain Project (HBP), una iniciativa muy similar a la de Yuste: poner la viga maestra para alzar el edificio de la neurociencia del futuro. Al frente del proyecto está el controvertido Henry Markram, que ya lo intentó con el Blue Brain Project. Y el responsable de una de sus patas principales, la de la neurociencia molecular y celular, es el español Javier De Felipe, del Instituto Cajal (CSIC).

“La ventaja de este tipo de apuesta es que es de largo recorrido, eso asegura la consecución de éxitos”, asegura De Felipe al recordar que cuentan con 100 millones anuales durante una década. Tanto a un lado como al otro del Atlánticohan surgido críticas por la financiación de plataformas tan colosales con cifras de inversión astronómicas. El neurobiólogo del Instituto Cajal las despacha asegurando que “vienen de quienes no están” y pone el acento en la importancia de que se haga “ciencia a lo grande” para avanzar en este campo. “Conocer el cerebro es esencial para la humanidad. Es el único órgano que desconocemos casi por completo y eso que es el que nos da nuestra esencia. Sin embargo, ¿dónde estamos después de décadas de investigación y miles de científicos? Hemos avanzado muy poco, sabemos poquísimo”, lamenta De Felipe.

Roma frente a la guerra de guerrillas

Entonces recurre a la metáfora bélica: “La guerra de guerrillas no funciona. Es mejor organizar un ejército sólido, legiones como las de Roma, para empezar a conquistar nuevos territorios”. Según explica, la importancia de esta iniciativa es la de hacer de catalizador de la investigación de cientos de científicos en toda Europa, y otros de fuera que se suman al HBP, incluso desde EEUU y Japón. “Somos miles estudiando el cerebro, hay que poner orden, crean estándares, compartir hallazgos, provocar sinergias. Solo por el trabajo que llevo compartiendo con mis colegas en el diseño de nuestra división habría merecido la pena”, explica.

Los ejércitos que se enfrentarán en esta batalla para mapear, reproducir y controlar el cerebro contarán con legiones de científicos punteros de todas las áreas: matemáticos que sepan cómo expresar los descubrimientos, expertos en el análisis geométrico, estadísticos, genetistas, fisiólogos. Y los mejores ingenieros de computación: no es fácil abarcar las cantidades de información con las que trabajarán. El equipo americano mantuvo una reunión de trabajo con responsables de Google, Microsoft, DARPA, Amazon, Caltech y otras instituciones punteras para preguntarles, sencillamente, si era posible procesar la ingente suma de información que requiere leer un cerebro. La primera estimación es de tres petabytes anuales (tres millones de gigas), bastante menos que el LHC. Pero la necesidad de procesar información puede crecer exponencialmente.

Como explica Yuste, tendrán que usar máquinas que todavía no existen. Habrá que crear herramientas capaces de fotografiar simultáneamente la actividad de cada neurona, de la mayoría o incluso la totalidad de un cerebro. Será necesario diseñar mecanismos que permitan controlar la actividad de cada neurona, “porque examinar requiere intervenir”. Y, por último, se desarrollarán métodos para almacenar, administrar y compartir imágenes y datos fisiológicos a gran escala. Máquinas capaces de analizar todos esos datos y de recrear modelos de circuitos neuronales que les lleven a revelar, finalmente, los principios que rigen al cerebro.

De ratones y hombres… muertos

Una de las principales apuestas del grupo europeo es la de aprovechar el conocimiento del cerebro humano para proporcionar un salto espectacular en el desarrollo de la informática. “Si se pudiera entender cómo hace el cerebro para procesar tanta información en tanto tiempo con tan poco consumo de energía… Un humano tarda milisegundos en reconocer una cara y un ordenador no sabe cómo. Si revelamos el mecanismo, se podría conseguir que una máquina reconociera a toda la gente de un aeropuerto en un segundo”, aventura De Felipe.

El grupo de Yuste anuncia que empezarán por estudiar el cerebro de bichos, como moscas, gusanos y sanguijuelas; y de ahí pasarán a analizar ratas, ratones y pececillos. “En 15 años, seremos capaces de controlar un millón de neuronas, el equivalente al cerebro de un pez cebra”. ¿Y el cerebro humano? “En mucho más tiempo, pero en ese caso hay también cuestiones éticas que se tienen que dirimir antes”, justifica Yuste. Eso sí, en paralelo se harán modelos e investigaciones del cerebro humano, pero no se atacará la posibilidad de intervenir directamente. En Europa, solo se trabajará con ratones y hombres, señala De Felipe. “El cerebro de cada animal tiene características únicas y conviene centrarse: yo llevo mucho tiempo trabajando en cerebros post mórtem con buenísimos resultados”, asegura.

El objetivo más desinteresado de ambos proyectos, en el fondo, es el mismo: resolver los problemas mentales de las personas. Yuste asegura que es eso lo que motiva a la Casa Blanca: “Nuestro trabajo con ellos ha sido una experiencia increíble, completamente limpia y sin intereses ni agendas ocultas. Solo se pretende conseguir el progreso de la neurociencia para ayudar a la humanidad. Un ejemplo a seguir en todos los países”, recalca. Ambos neurocientíficos sueñan con los males que se podrían curar si se supiera qué falla en el cerebro de los enfermos de alzhéimer, esquizofrenia, autismo, depresión…

Pero también está el dinero. Todos ponen como ejemplo el retorno que generó la inversión del Proyecto Genoma Humano: se gastaron 3.000 millones de euros y según Yuste se han obtenido unos 800.000 millones de vuelta, entre patentes, curas, tecnologías, etc. Obama se limitó a decir que se recibieron 140 dólares por cada dólar invertido. Al margen de la exactitud del cálculo, lo cierto es que los recursos que proporcionarán estas dos plataformas se multiplicarán casi desde el primer día. Más aún si se logra curar las enfermedades mentales de los humanos.

“Precisamente ahora, en estos tiempos de austeridad, hace falta galvanizar al público sobre la importancia de la ciencia, y la neurociencia en concreto, para el futuro de la humanidad. Y la necesidad de apoyar proyectos que puedan suponer un cambio de rumbo con repercusiones económicas”, defiende Yuste, que niega que se trate de una carrera entre EEUU y Europa. ”Solo son proyectos independientes. Les deseo lo mejor a mis colegas del proyecto europeo… yo también soy europeo”, recuerda.

De Felipe, en cambio, habla espontáneamente de carrera, un concepto que le parece beneficioso para la consecución de los objetivos. “Es una carrera que ya está lanzada y eso es muy bueno, porque nos obligará a dar lo mejor. En menos de un año, estaremos sujetos a una crítica feroz, mirarán con lupa cada cosa que publiquemos para ver si estamos fallando”, aventura. Lo más peculiar es que De Felipe y Yuste llevan más de una docena de años trabajando juntos, cuando el de Columbia regresa a España cada verano: la competencia no será tan feroz como entre legiones romanas. Aunque a pesar de tratarse de la apuesta científica de la década, les surgen pequeños enemigos: “En medio de la cobertura de prensa del BAM, tenemos una fuga de agua en el techo del laboratorio, para devolvernos a la Tierra”, tuiteó Yuste esta mañana. Solo tiene 270 seguidores.

Fuente: Europa y EEUU lanzan una colosal carrera para apoderarse de los secretos del cerebro

Autor: Javier Salas

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>