1
0
forked from SPC/spc-site
This commit is contained in:
Alexander Nozik 2022-04-30 10:55:37 +03:00
parent b90ec0fef8
commit a334f91ea7
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
2 changed files with 23 additions and 16 deletions

View File

@ -20,6 +20,7 @@ import space.kscience.dataforge.meta.toMeta
import space.kscience.dataforge.misc.DFInternal import space.kscience.dataforge.misc.DFInternal
import space.kscience.dataforge.names.Name import space.kscience.dataforge.names.Name
import kotlin.reflect.KType import kotlin.reflect.KType
import kotlin.reflect.full.isSubtypeOf
import kotlin.reflect.typeOf import kotlin.reflect.typeOf
class DataSetSiteContext( class DataSetSiteContext(
@ -64,10 +65,10 @@ class DataSetSiteContext(
private val Data<*>.published: Boolean get() = meta["published"].string != "false" private val Data<*>.published: Boolean get() = meta["published"].string != "false"
@DFInternal @DFInternal
override fun <T : Any> resolve(type: KType, name: Name): Data<T>? = when (type) { override fun <T : Any> resolve(type: KType, name: Name): Data<T>? {
typeOf<Meta>() -> { val data: Data<Any> = dataSet.get(name) ?: return null
val data = dataSet.selectOne<ByteArray>(name) return if (type == typeOf<Meta>() && data.type == typeOf<ByteArray>()) {
if( data == null) null else { data as Data<ByteArray>
when (data.meta[META_FILE_EXTENSION_KEY].string) { when (data.meta[META_FILE_EXTENSION_KEY].string) {
"json" -> data.map { "json" -> data.map {
Json.parseToJsonElement(it.decodeToString()).toMeta() Json.parseToJsonElement(it.decodeToString()).toMeta()
@ -77,9 +78,15 @@ class DataSetSiteContext(
} }
else -> error("File with extension ${data.meta[META_FILE_EXTENSION_KEY]} could not be parsed as Meta") else -> error("File with extension ${data.meta[META_FILE_EXTENSION_KEY]} could not be parsed as Meta")
} as Data<T>? } as Data<T>?
}else {
if (!data.type.isSubtypeOf(type)) {
null
} else {
object : Data<T> by (data as Data<T>) {
override val type: KType = type
}
} }
} }
else -> dataSet.selectOne(type, name)
} }
@DFInternal @DFInternal

View File

@ -10,10 +10,10 @@ language: ru
Цель создания программы &mdash; объединение усилий ученых и программистов для разработки лучших компьютерных решений и применения этих решений в области фундаментальной и прикладной науки и инженерии. Цель создания программы &mdash; объединение усилий ученых и программистов для разработки лучших компьютерных решений и применения этих решений в области фундаментальной и прикладной науки и инженерии.
Студенты магистерской программы в рамках научной работы и выполнения проектов работают над актуальными задачами: Студенты магистерской программы в рамках научной работы и выполнения проектов работают над актуальными задачами:
* обработка и анализ данных физических и биологических экспериментов; * обработка и анализ данных физических и биологических экспериментов;
* нахождение оптимальной траектории для задач в георазведке; * нахождение оптимальной траектории для задач в георазведке;
* разработка инструментов анализа данных для нефтяных компаний * разработка инструментов анализа данных для нефтяных компаний и количество прикладных учебных задач от реальных заказчиков постоянно растет.
и количество прикладных учебных задач от реальных заказчиков постоянно растет.
**Почему же** это направление так актуально? **Почему же** это направление так актуально?